如何处理Salesfore和Database Component中的增量提取

时间:2017-12-24 09:44:31

标签: salesforce mule

我有一个salesforce查询,它返回联系信息。我需要将数据保存在2个表中。在第一个表中,我必须存储关于处于中间状态的联系人的一些元数据。然后,我从保存的元数据中获取自动生成的元数据表ID,并将其应用于每个联系人。然后,我必须将联系人数据保存到数据库表中,然后最终将联系人元数据更新到其最终状态。问题是存在大量数据,因此在执行此过程时我必须包含提取大小。我想要实现的应该是这样的,请注意这只是我想要实现的目标。我如何知道获取联系人是否完整,以便我可以保存最终状态?如何构建交易流程? 理想情况下,我想将ConsumerIterator传递给Java组件,我可以轻松地控制该过程。我可以将ConsumerIterator的引用传递给Java组件吗?如果我可以怎么办?

<sfdc:query fetchSize="100" config-ref="sfdc-connector" 

query="dsql:SELECT   Id, Account.Id,

  Account.Name, Account.PersonEmail, Account.LastName  From Contact" />

 dw:transform-message metadata:id="d1f6ab4f-4b40-4e30-ae" doc:name="trnsfm">

 <enricher target="variable:metaInfo"> 
   <flow-refname="getContactMetadata"/>
 </enricher> 

  <dw:set-payload><![CDATA[%dw 1.0

.//Rest of transformer

<db:insert config-ref="MySQL_Configuration" doc:name="Save Metatdata">
  ...

 </db:insert>

<db:insert config-ref="MySQL_Configuration" doc:name="Save contacts">
....
<db:insert>

 <db:insert config-ref="MySQL_Configuration" doc:name="Update Metadata   
      Final State">
 ....
 <db:insert>

</flow>

1 个答案:

答案 0 :(得分:0)

解决了问题。我编写了一个Java组件,实现了Callable并抓住了ConsumerIterator。然后我能够使用迭代器来获取fetchSize中的项目。然后我使用Spring Jdbc,因为数据模型很简单,可以事务性地保存数据