2016-04-19 12 views
2

この要件は、1つのドキュメントを取り込み、出力から1つ以上のドキュメントを作成する必要があることです。IBM Integration Bus、複数のサービスを呼び出すためのベストプラクティス

このため、作成シナリオと更新シナリオに適用する操作が異なるため、文書が既に存在するかどうかを判断する必要があります。

ストレートコードでは、これは実際に

InputData in = <something> 

if (getItemFromExternalSystem(in.key1) == null) { 
    createItemSpecificToKey1InExternalSystem(in.key1); 
} 
if (getItemFromExternalSystem(in.key2) == null) { 
    createItemSpecificToKey2InExternalSystem(in.key1, in.key2); 
} 
createItemFromInput(in.key1,in.key2, in.moreData); 

「このデータが存在していることを確認」の種類単純(概念的に)であろう。

しかし、IIBではどうすればこの問題を解決できますか? Get/Createサイクルでサブフローを使用した場合、サブフローの出力は、最後の操作の結果であり、サブフローからフローの新しい「メッセージ」として返されますが、実際はありません"データの存在を確認する"サブフローの値を注意してください。代わりに元のメッセージを処理する必要がありますが、最終的な "createItem"を実行する前に、さまざまなサブフローが終了するのを待ってください。

答えて

0

コレクタノードの使用を検討しましたか?あなたのレコードをN個のコレクションに集めて、そのコレクションを繰り返し処理し、コレクションごとに1つの文書を出力することができます。

4

あなたが集約ノードを使用することができる:

  1. 操作createItemSpecificToKey1InExternalSystemとcreateItemSpecificToKey2InExternalSystemを呼び出すであろう第
  2. 第二に、元のメッセージを伝播することになる第一
  3. 第三の集合体のようになります。例えば、3つのフローを使用firstとsecondの結果を取得し、createItemFromInputを呼び出します。
関連する問題