4.7. 実行フローを決定するためのインテグレーションデータの評価
フローでは、Conditional Flows ステップでインテグレーションデータが指定の条件に対して評価されます。指定した条件ごとに、コネクションおよびその他のステップをその条件に関連するフローに追加します。実行中、Conditional Flows ステップによって受信データが評価され、実行するフローが決定されます。
詳細は以下のセクションを参照してください。
4.7.1. Conditional Flows ステップの動作
統合開発中、Conditional Flows (条件付きフロー) ステップをフローに追加して 1 つ以上の条件を追加できます。条件ごとに、ステップをその条件のみに関連する条件付きフローに追加します。インテグレーションの実行中、前のインテグレーションステップによって Conditional Flows ステップに渡されるメッセージごとに、Conditional Flows ステップは条件を指定するために Fuse Online ページで定義する順序で、メッセージの内容を指定の条件に対して評価します。
Conditional Flows ステップでの動作は以下のいずれかになります。
- true に評価される最初の条件では、その条件に関連する条件付きフローがインテグレーションによって実行されます。
- 条件が true に評価されず、デフォルトの条件付きフローがある場合は、インテグレーションはそのフローを実行します。
- 条件が true に評価されず、デフォルトの条件付きフローがない場合、インテグレーションは条件付きフローを実行しません。
条件付きフローの実行後、または true に評価される条件とデフォルトの条件フローがない場合は、インテグレーションによってプライマリーフローの次のステップが実行されます。
4.7.2. Conditional Flows ステップの例
インテグレーションが SQL データベースに接続し、各社員の有給休暇 (PTO) に関する情報を取得するとします。返されたデータは以下を示します。
- 特定日までに PTO を消化しないと失効する可能性がある社員。
- 付与分を超える PTO を使用した社員。
- 時間の制限なく PTO を使える残りの社員。
このインテグレーションの例の場合、Conditional Flows ステップでは、2 つの条件、各条件の 1 つの実行フロー、およびデフォルトの実行フローを定義できます。
- PTO が特定の数を超えた場合、特定日までに消化しないと失効する可能性がある PTO があることを意味します。この条件が true である場合、インテグレーションは該当する社員にメールを送信するフローを実行します。メールには、消化する必要がある PTO の時間数または日数と、失効日が含まれます。
- PTO が負の値の場合、付与分を超える PTO が使用されたこと意味します。この条件が true である場合、インテグレーションは該当する社員にメールを送信するフローを実行します。メールには、社員が取得した過剰分の PTO が含まれ、PTO の付与が再開される日付が指定されます。
- 2 つの条件が両方とも true でない場合、インテグレーションはデフォルトのフローを実行します。このインテグレーションの例は、PTO が負の値ではなく、指定の数を超えない社員にデフォルトの条件付きフローを実行します。このフローは、社員が使用できる PTO の時間数または日数の明細をメールで該当する社員に送信します。
4.7.3. Conditional Flows ステップの一般的な設定手順
Conditional Flows ステップをフローに追加した後に行うステップ設定のワークフローは次のようになります。
ワークフローの詳細
- 基本の式ビルダーによって、評価する内容が含まれるプロパティーや、テストする条件および値が要求されます。基本の式ビルダーは、ほとんどの Conditional Flows ステップに適しています。
- 上級の式ビルダーを使用すると、Camel Simple 言語で条件式を指定できます。
- すべての条件で同じ式ビルダーを使用する必要があります。つまり、基本の式ビルダーまたは上級の式ビルダーを使用して Conditional Flows ステップを設定する必要があります。両方を使用することができません。
- 条件付きフローでは、Conditional Flows ステップを追加できません。
4.7.4. 基本の式ビルダーを使用した条件の指定
受信データを評価してインテグレーションの実行パスを決定する場合に、フローで Conditional Flows ステップを追加します。次の手順では、基本の式ビルダーを使用して条件を指定する方法を説明します。
前提条件
- プライマリーフローを作成または編集することになります。これがシンプルなインテグレーションである場合、最初と最後のコネクションが追加されている必要があります。
- Conditional Flows ステップへの入力は、個別のメッセージである必要があります。インテグレーションビジュアリゼーションで、前のステップの Data Type が (Collection) である場合、前のステップとこの Conditional Flows ステップの間に Split ステップを追加します。
- インテグレーションは、追加する Conditional Flows ステップにメッセージを渡します。このメッセージに含まれるフィールドを熟知している必要があります。
手順
- インテグレーションビジュアライゼーションの、Conditional Flows ステップを追加する場所で をクリックします。
- Conditional Flows をクリックします。
- Basic expression builder エントリーで Select をクリックします。
Configure Conditional Flows ページで、以下の条件を 1 つまたは複数定義します。
- 最初の When フィールドをクリックします。
- プロパティーのリストで、Conditional Flows ステップによって評価される内容が含まれるプロパティーをクリックします。
- 次のフィールドで、ステップがデータを評価する条件として Contains を指定するか、別の条件を選択します。このフィールドに選択する条件は、次のフィールドに入力する値に対して true である必要があります。
- 3 つ目のフィールドに、条件がテストする値を指定します。
- 任意設定:Add another condition をクリックして、別の条件を指定します。
- 定義する追加条件ごとに、この手順を繰り返します。
- 任意設定:条件の右にある上矢印または下矢印をクリックして、インテグレーションで定義された条件を評価する順番を変更します。
任意設定:デフォルトの条件付きフローにする場合は Execute default flow をクリックします。
実行中に Execute default flow を選択した場合、指定した条件に true となるものがなければ、インテグレーションはデフォルトの条件付きフローを実行します。実行中に Execute default flow を選択しなかった場合、指定した条件に true となるものがなければ、この Conditional Flows ステップに続くステップで、インテグレーションの実行が継続されます。
- Next をクリックします。
- 任意設定:Fuse Online で出力データタイプの指定を要求された場合は指定します。この Conditional Flows ステップの一部であるすべての条件付きフローは、同じ出力タイプである必要があります。
Next をクリックします。
Fuse Online にフロービジュアライゼーションが表示されます。追加する Conditional Flows ステップの下に、指定した各条件のエントリーがあります。Conditional Flows ステップにデフォルトフローがあることを示した場合は、Otherwise デフォルトフローのエントリーも表示されます。
次のステップ
条件ごとに、条件に関連するフローにステップを追加します。デフォルトフローがある場合は、そのフローにステップを追加します。
その他のリソース
- 各条件の中間フィールドに選択できる条件に関する詳細は Camel Simple Language Operator Support を参照してください。matches 条件は、Simple 言語の regex 演算子に対応することに注意してください。
- 基本の式ビルダーを使用して、必要な条件を定義できない場合は、上級の式ビルダーを使用した条件の指定 を参照してください。
4.7.5. 上級の式ビルダーを使用した条件の指定
受信データを評価してインテグレーションの実行パスを決定する場合に、フローで Conditional Flows ステップを追加します。次の手順では、上級の式ビルダーを使用して Camel Simple 言語で条件式を指定する方法を説明します。
前提条件
- プライマリーフローを作成または編集することになります。これがシンプルなインテグレーションである場合、最初と最後のコネクションが追加されている必要があります。
- Conditional Flows ステップへの入力は、個別のメッセージである必要があります。インテグレーションビジュアリゼーションで、前のステップの Data Type が (Collection) である場合、分割 ステップを追加します。
- インテグレーションは、追加する Conditional Flows ステップにメッセージを渡します。このメッセージに含まれるフィールドを熟知している必要があります。
- Camel Simple Expression 言語を熟知しているか、評価する条件の式がある必要があります。
手順
- インテグレーションビジュアライゼーションの、Conditional Flows ステップを追加する場所で をクリックします。
- Conditional Flows をクリックします。
- Advanced expression builder エントリーで Select をクリックします。
Configure Conditional Flows ページで、以下の条件を 1 つまたは複数定義します。
最初の When フィールドに Camel Simple 言語の条件式を入力します。式の左側は、${…} で囲まれた変数式でなければなりません。
有効な式の例を次に示します。
${header.type} == 'note'
${body.title} contains 'Important'
以下は、無効な式の例です。
'note' == ${header.type}
以下は、メッセージの本文に
160
より大きいpto
フィールドが含まれている場合に true と評価される式を記述する方法を示す例です。${body.pto} > 160
この式が true に評価されると、インテグレーションはこの条件で作成および関連付けする条件付きフローを実行します。
注記Conditional Flows ステップが以下のようなフローの 1 つにある場合は、式に追加のプロパティーを指定する必要があります。
- API プロバイダーインテグレーションのオペレーションフロー。
- Webhook コネクションで始まるシンプルなインテグレーション。
- カスタム REST API コネクションで始まるシンプルなインテグレーション。
これらのフローでは、Fuse Online は
body
プロパティー内で実際のメッセージコンテンツをラッピングします。これは、Conditional Flows ステップへの入力にbody
プロパティーが含まれ、このプロパティーに実際のメッセージコンテンツが含まれる別のbody
プロパティーが含まれることを意味します。そのため、このようなフローの 1 つにある Conditional Flows ステップの式に、body
のインスタンスを 2 つを指定する必要があります。たとえば、入力メッセージのpto
フィールドにあるコンテンツを評価するとします。この場合、以下のように式を指定します。${body.body.pto} > 160
- 任意設定:Add another condition をクリックし、前のステップを繰り返します。定義する追加条件ごとに、この作業を行います。
- 任意設定:条件付きフィールドの右にある上矢印または下矢印をクリックして、定義された条件が Conditional Flows ステップによって評価される順番を変更します。
任意設定:デフォルトの条件付きフローにする場合は Execute default flow をクリックします。
実行中に Execute default flow を選択した場合、指定した条件に true となるものがなければ、インテグレーションはデフォルトの条件付きフローを実行します。実行中に Execute default flow を選択しなかった場合、指定した条件に true となるものがなければ、この Conditional Flows ステップに続くステップで、インテグレーションの実行が継続されます。
- Next をクリックします。
- 任意設定:Fuse Online で出力データタイプの指定を要求された場合は指定します。この Conditional Flows ステップの一部であるすべての条件付きフローは、同じ出力タイプである必要があります。
Next をクリックします。
Fuse Online にフロービジュアライゼーションが表示されます。追加する Conditional Flows ステップの下に、指定した各条件のエントリーがあります。Conditional Flows ステップにデフォルトフローがあることを示した場合は、Otherwise デフォルトフローのエントリーも表示されます。
次のステップ
条件ごとに、条件に関連するフローにステップを追加します。デフォルトフローがある場合は、そのフローにステップを追加します。
4.7.6. 条件付きフローへのステップの追加
Conditional Flows ステップでは、条件を定義した後に、ステップを各条件に関連するフローに追加します。実行中、Conditional Flows ステップによって条件が true であると評価されると、その条件に関連するフローが実行されます。
前提条件
- この Conditional Flows ステップの条件が定義済みである必要があります。
- インテグレーションによってこの Conditional Flows ステップに渡されるメッセージに含まれるフィールドを熟知している必要があります。
- 条件付きフローに追加する各コネクションが作成されている必要があります。
手順
インテグレーションビジュアライゼーションで、フローを追加する条件に対して Open Flow をクリックします。
Fuse Online は、ページ上部付近にその条件を表示します。条件付きフロービジュアライゼーションは、すべての条件付きフローにある Flow Start ステップおよび Flow End ステップを表示します。
- フロービジュアライゼーションの、この条件付きフローにステップを追加する箇所で をクリックします。
追加するステップをクリックします。プライマリーフローに追加できるコネクションまたはステップを追加できます。
Flow Start ステップからの出力は、この Conditional Flows ステップの前にあるプライマリーフローステップからの出力と常に同じです。たとえば、フィルターステップまたはデータマッパーステップをこの条件付きフローに追加する場合、利用可能なフィールドはプライマリーフローで利用可能なフィールドと同じになります。
- 必要に応じて手順を設定します。
- この条件付きフローに追加するステップごとに、前述の 3 つの手順を繰り返します。
- ページ上部の Flow フィールドで、下矢印をクリックし、Back to primary flow をクリックします。これにより、条件付きフローが保存され、プライマリーフローが表示されます。
- 追加する条件付きフローごとに、この手順を繰り返し行います。
結果
プライマリーフローには、Conditional Flows ステップで定義した条件ごとに条件付きフローが存在します。Execute default flow オプションを選択した場合、プライマリーフローにはデフォルトの条件付きフローも存在します。
実行中、Conditional Flows ステップは true となる最初の条件に関連する条件付きフローを実行します。その後、インテグレーションによって Conditional Flows ステップに続くステップが実行されます。
true となる条件がない場合、Conditional Flows ステップはデフォルトの条件付きフローを実行します。その後、インテグレーションによって Conditional Flows ステップに続くステップが実行されます。
以下の条件を両方満たすとします。
- true となる条件がない
- デフォルトの条件付きフローがない
この場合、インテグレーションは Conditional Flows ステップに続くステップを実行します。