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 ステップをフローに追加した後に行うステップ設定のワークフローは次のようになります。

Workflow for configuring Conditional Flows step

ワークフローの詳細

  • 基本の式ビルダーによって、評価する内容が含まれるプロパティーや、テストする条件および値が要求されます。基本の式ビルダーは、ほとんどの Conditional Flows ステップに適しています。
  • 上級の式ビルダーを使用すると、Camel Simple 言語で条件式を指定できます。
  • すべての条件で同じ式ビルダーを使用する必要があります。つまり、基本の式ビルダーまたは上級の式ビルダーを使用して Conditional Flows ステップを設定する必要があります。両方を使用することができません。
  • 条件付きフローでは、Conditional Flows ステップを追加できません。

4.7.4. 基本の式ビルダーを使用した条件の指定

受信データを評価してインテグレーションの実行パスを決定する場合に、フローで Conditional Flows ステップを追加します。次の手順では、基本の式ビルダーを使用して条件を指定する方法を説明します。

前提条件

  • プライマリーフローを作成または編集することになります。これがシンプルなインテグレーションである場合、最初と最後のコネクションが追加されている必要があります。
  • Conditional Flows ステップへの入力は、個別のメッセージである必要があります。インテグレーションビジュアリゼーションで、前のステップの Data Type(Collection) である場合、前のステップとこの Conditional Flows ステップの間に Split ステップを追加します。
  • インテグレーションは、追加する Conditional Flows ステップにメッセージを渡します。このメッセージに含まれるフィールドを熟知している必要があります。

手順

  1. インテグレーションビジュアライゼーションの、Conditional Flows ステップを追加する場所で PlusSignToAddStepOrConnection をクリックします。
  2. Conditional Flows をクリックします。
  3. Basic expression builder エントリーで Select をクリックします。
  4. Configure Conditional Flows ページで、以下の条件を 1 つまたは複数定義します。

    1. 最初の When フィールドをクリックします。
    2. プロパティーのリストで、Conditional Flows ステップによって評価される内容が含まれるプロパティーをクリックします。
    3. 次のフィールドで、ステップがデータを評価する条件として Contains を指定するか、別の条件を選択します。このフィールドに選択する条件は、次のフィールドに入力する値に対して true である必要があります。
    4. 3 つ目のフィールドに、条件がテストする値を指定します。
    5. 任意設定:Add another condition をクリックして、別の条件を指定します。
    6. 定義する追加条件ごとに、この手順を繰り返します。
    7. 任意設定:条件の右にある上矢印または下矢印をクリックして、インテグレーションで定義された条件を評価する順番を変更します。
    8. 任意設定:デフォルトの条件付きフローにする場合は Execute default flow をクリックします。

      実行中に Execute default flow を選択した場合、指定した条件に true となるものがなければ、インテグレーションはデフォルトの条件付きフローを実行します。実行中に Execute default flow を選択しなかった場合、指定した条件に true となるものがなければ、この Conditional Flows ステップに続くステップで、インテグレーションの実行が継続されます。

  5. Next をクリックします。
  6. 任意設定:Fuse Online で出力データタイプの指定を要求された場合は指定します。この Conditional Flows ステップの一部であるすべての条件付きフローは、同じ出力タイプである必要があります。
  7. Next をクリックします。

    Fuse Online にフロービジュアライゼーションが表示されます。追加する Conditional Flows ステップの下に、指定した各条件のエントリーがあります。Conditional Flows ステップにデフォルトフローがあることを示した場合は、Otherwise デフォルトフローのエントリーも表示されます。

次のステップ

条件ごとに、条件に関連するフローにステップを追加します。デフォルトフローがある場合は、そのフローにステップを追加します。

その他のリソース

4.7.5. 上級の式ビルダーを使用した条件の指定

受信データを評価してインテグレーションの実行パスを決定する場合に、フローで Conditional Flows ステップを追加します。次の手順では、上級の式ビルダーを使用して Camel Simple 言語で条件式を指定する方法を説明します。

前提条件

  • プライマリーフローを作成または編集することになります。これがシンプルなインテグレーションである場合、最初と最後のコネクションが追加されている必要があります。
  • Conditional Flows ステップへの入力は、個別のメッセージである必要があります。インテグレーションビジュアリゼーションで、前のステップの Data Type(Collection) である場合、分割 ステップを追加します。
  • インテグレーションは、追加する Conditional Flows ステップにメッセージを渡します。このメッセージに含まれるフィールドを熟知している必要があります。
  • Camel Simple Expression 言語を熟知しているか、評価する条件の式がある必要があります。

手順

  1. インテグレーションビジュアライゼーションの、Conditional Flows ステップを追加する場所で PlusSignToAddStepOrConnection をクリックします。
  2. Conditional Flows をクリックします。
  3. Advanced expression builder エントリーで Select をクリックします。
  4. Configure Conditional Flows ページで、以下の条件を 1 つまたは複数定義します。

    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
    2. 任意設定:Add another condition をクリックし、前のステップを繰り返します。定義する追加条件ごとに、この作業を行います。
    3. 任意設定:条件付きフィールドの右にある上矢印または下矢印をクリックして、定義された条件が Conditional Flows ステップによって評価される順番を変更します。
    4. 任意設定:デフォルトの条件付きフローにする場合は Execute default flow をクリックします。

      実行中に Execute default flow を選択した場合、指定した条件に true となるものがなければ、インテグレーションはデフォルトの条件付きフローを実行します。実行中に Execute default flow を選択しなかった場合、指定した条件に true となるものがなければ、この Conditional Flows ステップに続くステップで、インテグレーションの実行が継続されます。

  5. Next をクリックします。
  6. 任意設定:Fuse Online で出力データタイプの指定を要求された場合は指定します。この Conditional Flows ステップの一部であるすべての条件付きフローは、同じ出力タイプである必要があります。
  7. Next をクリックします。

    Fuse Online にフロービジュアライゼーションが表示されます。追加する Conditional Flows ステップの下に、指定した各条件のエントリーがあります。Conditional Flows ステップにデフォルトフローがあることを示した場合は、Otherwise デフォルトフローのエントリーも表示されます。

次のステップ

条件ごとに、条件に関連するフローにステップを追加します。デフォルトフローがある場合は、そのフローにステップを追加します。

その他のリソース

Camel Simple Language Operator Support

4.7.6. 条件付きフローへのステップの追加

Conditional Flows ステップでは、条件を定義した後に、ステップを各条件に関連するフローに追加します。実行中、Conditional Flows ステップによって条件が true であると評価されると、その条件に関連するフローが実行されます。

前提条件

  • この Conditional Flows ステップの条件が定義済みである必要があります。
  • インテグレーションによってこの Conditional Flows ステップに渡されるメッセージに含まれるフィールドを熟知している必要があります。
  • 条件付きフローに追加する各コネクションが作成されている必要があります。

手順

  1. インテグレーションビジュアライゼーションで、フローを追加する条件に対して Open Flow をクリックします。

    Fuse Online は、ページ上部付近にその条件を表示します。条件付きフロービジュアライゼーションは、すべての条件付きフローにある Flow Start ステップおよび Flow End ステップを表示します。

  2. フロービジュアライゼーションの、この条件付きフローにステップを追加する箇所で PlusSignToAddStepOrConnection をクリックします。
  3. 追加するステップをクリックします。プライマリーフローに追加できるコネクションまたはステップを追加できます。

    Flow Start ステップからの出力は、この Conditional Flows ステップの前にあるプライマリーフローステップからの出力と常に同じです。たとえば、フィルターステップまたはデータマッパーステップをこの条件付きフローに追加する場合、利用可能なフィールドはプライマリーフローで利用可能なフィールドと同じになります。

  4. 必要に応じて手順を設定します。
  5. この条件付きフローに追加するステップごとに、前述の 3 つの手順を繰り返します。
  6. ページ上部の Flow フィールドで、下矢印をクリックし、Back to primary flow をクリックします。これにより、条件付きフローが保存され、プライマリーフローが表示されます。
  7. 追加する条件付きフローごとに、この手順を繰り返し行います。

結果

プライマリーフローには、Conditional Flows ステップで定義した条件ごとに条件付きフローが存在します。Execute default flow オプションを選択した場合、プライマリーフローにはデフォルトの条件付きフローも存在します。

実行中、Conditional Flows ステップは true となる最初の条件に関連する条件付きフローを実行します。その後、インテグレーションによって Conditional Flows ステップに続くステップが実行されます。

true となる条件がない場合、Conditional Flows ステップはデフォルトの条件付きフローを実行します。その後、インテグレーションによって Conditional Flows ステップに続くステップが実行されます。

以下の条件を両方満たすとします。

  • true となる条件がない
  • デフォルトの条件付きフローがない

この場合、インテグレーションは Conditional Flows ステップに続くステップを実行します。