2017-06-07 6 views
0

複数の選択クエリを実行していて、それらを順番に実行したい。 この例では、口座番号を選択し、次のクエリでその番号を使用します。クエリが次々に連続して実行される、すなわち次のクエリは前のクエリが終了した後にのみ実行されるかどうか。コンポジットソースでそれらをラップし、トランザクションでラップする必要がありますか?どのように見えるだろうか?Muleデータベースコネクタ複数のクエリ

<flow name="PopulateAccount"> 
      <db:select config-ref="dsConfig" doc:name="Get Account ID"> 
      <db:paramterized-query><![CDATA[ 

       SELECT ACC_NUM.... 
      </db:select> 

      <custom-transformer class="com.vf.ListTransformer"> 

      <set-session-variable variableName="messageID" value="#[payload]" 
           doc:name="Set Account IDs"/> 


     <!-- The next query depends on the Account IDS from 
       previous results in the session variable --> 

     <db:select config-ref="dsConfig" doc:name="Get Account Detail"> 
      <db:paramterized-query><![CDATA[ 
       SELECT ACC_NAME,.... 
      </db:select> 
     <custom-transformer class="com.vf.AccountsTransformer"> 

      <!-- More database operations ---> 
    </flow> 

答えて

0

は、クエリは、限り、あなたは、たとえば、データベースコンポーネントを移動するように、それらを並行して実行するために、任意の措置を取らないように、連続して他の

はい次々動作しますそれを非同期的な方法で呼び出すことができます。

は、私はあなたが(あなたの例のように)2番目のクエリに最初のクエリの結果を使用し、特にない場合は、コンポジット・ソース

なしでそれらをラップする必要がありますか

としてください。

なぜですか?あなたの例では何も挿入/更新していません。

どのように表示されますか?

あなたの例と同じです。私が変える唯一のことは、最初のクエリの結果をどのように保存するかということです。 set-variableを使用しても何も問題はありませんが、ペイロードを変更して後で変数を設定するのではなく、コンポーネントの結果を変数に格納する方が豊かです。

<flow name="testFlow"> 
    <enricher target="#[flowVars.messageID]" doc:name="Message Enricher"> 
     <db:select config-ref="MySQL_Configuration" doc:name="select ACC_NUM"> 
      <db:parameterized-query><![CDATA[SELECT ACC_NUM ...]]></db:parameterized-query> 
     </db:select> 
    </enricher> 
</flow> 
+0

本当にありがとうございました。 – BreenDeen