2017-12-24 18 views
0

連絡先情報を返すsalesforceクエリがあります。私は2つのテーブルにデータを保存する必要があります。最初のテーブルでは、連絡先に関するいくつかのメタデータを中間の状態で保存する必要があります。私は保存されたメタデータから自動的に生成されたメタデータテーブルIDを取得し、すべての連絡先に適用します。連絡先データをデータベーステーブルに保存し、最後に連絡先のメタデータを最終状態に更新する必要があります。問題は、多くのデータがあるため、このプロセスを実行するときにフェッチサイズを含める必要があることです。私が達成したいことは、このようなものでなければなりません。これが私が達成しようとしていることだけです。最終的な状態を保存できるように、連絡先の取得が完了したことをどのように知ることができますか?トランザクションのフローをどのように構造化できますか? 理想的には、ConsumerIteratorをJavaコンポーネントに渡して、プロセスを簡単に制御できるようにしたいと考えています。 ConsumerIteratorのリファレンスをたとえばJavaコンポーネントに渡すことはできますか?どうすればいいの?Salesforeとデータベースコンポーネントからインクリメンタルフェッチを処理する方法

<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> 

答えて

0

問題は解決します。 Callableを実装し、ConsumerIteratorを取得したJavaコンポーネントを書きました。私はイテレータを使用してfetchSizeの項目を取得できました。データモデルはトランザクションでデータを保存するのに十分シンプルであるため、Spring Jdbcを使用しました

関連する問題