Menu Close

第5章 インテグレーションの作成

計画と準備が完了したら、インテグレーションを作成します。Fuse Online の Web インターフェースでは、Create Integrationをクリックすると、手順にしたがってインテグレーションを作成できます。

インテグレーションを作成するための情報および手順は以下を参照してください。

5.1. インテグレーション作成の準備

インテグレーション作成の準備を開始するには、「インテグレーションの計画に関する注意点」に記載されている質問への回答を参照します。インテグレーションを計画したら、インテグレーションの作成前に以下を行う必要があります。

  1. 接続するアプリケーションが OAuth プロトコルを使用するかどうかを判別します。OAuth を使用する各アプリケーションでは、Fuse Online をそのアプリケーションへのアクセスが許可されるクライアントとして登録します。OAuth プロトコルを使用するアプリケーションには以下が含まれます。

    • Dropbox
    • Google アプリケーション (Gmail、カレンダー、およびスプレッドシート)
    • Salesforce
    • SAP Concur
    • Twitter
  2. 接続するアプリケーションが HTTP Basic 認証を使用するかどうかを判別します。HTTP Basic 認証を使用する各アプリケーションにアクセスするためのユーザー名およびパスワードを特定します。コネクションを作成する際に、この情報を提供する必要があります。
  3. 統合するアプリケーションごとにコネクションを作成します。

5.2. インテグレーション実行トリガーの代替

インテグレーションの作成時、インテグレーションの実行をトリガーする方法はインテグレーションの最初のステップによって決定されます。インテグレーションの最初のステップは以下のいずれかになります。

  • アプリケーションまたはサービスへのコネクション。特定のアプリケーションやサービスのコネクションを設定します。以下に例を示します。

    • Twitter へのコネクションはツイートを監視でき、ツイートに指定のテキストが含まれている場合にシンプルなインテグレーションの実行をトリガーできます。
    • Salesforce へのコネクションは、新しいリードが作成されたときにシンプルなインテグレーションの実行をトリガーできます。
    • AWS S3 へのコネクションは、特定のバケットを定期的にポーリングでき、バケットにファイルが含まれる場合にシンプルなインテグレーションの実行をトリガーできます。
  • タイマー。Fuse Online は、シンプルなインテグレーションの実行を指定した間隔でトリガーします。これは、簡単なタイマーまたは cron ジョブになります。
  • Webhook。クライアントは、HTTP GET または POST リクエストを Fuse Online が公開する HTTP エンドポイントに送信できます。リクエストはシンプルなインテグレーションの実行をトリガーします。
  • API プロバイダー。API プロバイダーインテグレーションは、REST API サービスから開始します。この REST API サービスは、API プロバイダーインテグレーションの作成時に提供する OpenAPI 3 (または 2) ドキュメントによって定義されます。API プロバイダーインテグレーションをパブリッシュした後、Fuse Online は REST API サービスを OpenShift にデプロイします。インテグレーションエンドポイントにネットワークアクセスできるクライアントは、インテグレーションの実行をトリガーできます。

5.3. シンプルなインテグレーションを作成する一般的な手順

Fuse Online では手順にしたがってシンプルなインテグレーションを作成できます。最初のコネクション、最後のコネクション、途中のコネクション (任意)、およびその他のステップを選択するよう促されます。インテグレーションが完了したら、パブリッシュして稼働するか、保存して後でパブリッシュすることができます。

API プロバイダーインテグレーションを作成する手順の詳細は、「API プロバイダーインテグレーションの作成」 を参照してください。

前提条件

  • インテグレーションのステップが計画済みである必要があります。
  • このインテグレーションで接続する各アプリケーションまたはサービスへのコネクションが作成済みである必要があります。

手順

  1. Fuse Online の左パネルで Integrationsをクリックします。
  2. 右上の Create Integration をクリックします。
  3. 最初のコネクションを追加および設定します。

    1. Choose a connection ページで、インテグレーションを開始するために使用するコネクションをクリックします。このインテグレーションの稼働時に、Fuse Online はこのアプリケーションに接続し、インテグレーションが操作するデータを取得します。
    2. Choose an action ページで、このコネクションが実行するアクションを選択します。使用できるアクションはコネクションごとに異なります。
    3. アクションを設定するページで、フィールドに値を入力します。
    4. 任意で、コネクションにデータタイプの指定が必要な場合は、Next をクリックしてアクションの出入力タイプを指定するよう要求されます。
    5. Next をクリックして、最初のコネクションを追加します。

    アプリケーションに接続する代わりに、指定した間隔でインテグレーションの実行をトリガーするタイマーや、HTTP リクエストを許可する Webhook を最初のコネクションとすることが可能です。

    最初のコネクションの選択および設定後、Fuse Online は最後のコネクションを選択するよう要求します。

  4. 最後のコネクションを選択および設定します。

    1. Choose a connection ページで、インテグレーションを完了するために使用するコネクションをクリックします。このインテグレーションの稼働中に、Fuse Online はインテグレーションが操作するデータでこのアプリケーションに接続します。
    2. Choose an action ページで、このコネクションが実行するアクションを選択します。使用できるアクションはコネクションごとに異なります。
    3. アクションを設定するページで、フィールドに値を入力します。
    4. 任意で、コネクションにデータタイプの指定が必要な場合は、Next をクリックしてアクションの出入力タイプを指定するよう要求されます。
    5. Next をクリックして、最後のコネクションを追加します。

    アプリケーションに接続する代わりに、最後のコネクションはインテグレーションが処理したメッセージに関する情報をインテグレーションのログに送信できます。これには、Fuse Online が最後のコネクションの選択を要求したときに Log を選択します。

  5. 必要に応じて、最初のコネクションと最後のコネクションとの間に 1 つ以上のコネクションを追加します。コネクションごとにアクションを選択し、必要な設定詳細を入力します。
  6. 必要に応じて、コネクション間のインテグレーションデータで操作する 1 つ以上のステップを追加します。「コネクション間のステップの追加」を参照してください。
  7. インテグレーションビジュアライゼーションで、 Warning アイコンを見つけます。この警告は、このコネクションの前にデータマッパーステップが必要なことを示しています。必要なデータマッパーステップを追加します。
  8. インテグレーションに必要なステップがすべて含まれている場合は、インテグレーションの実行を開始するかどうかに応じて Save または Publish をクリックします。
  9. Name フィールドに、このインテグレーションを別のインテグレーションと区別する名前を入力します。
  10. 必要に応じて、: Description フィールドに説明を入力します。たとえば、このインテグレーションが実行することを説明できます。
  11. インテグレーションの実行を開始する準備ができたら、Save and publish をクリックします。

    Fuse Online にはインテグレーションの概要が表示されます。Fuse Online がパブリッシュの処理中であることが分かります。インテグレーションの状態が Runningになるまでに多少時間がかかる可能性があります。

    インテグレーションをパブリッシュしない場合は、Save クリックします。Fuse Online はインテグレーションを保存し、フロービジュアライゼーションを表示します。編集を続行できます。または、ページの上部のパンくずリストで Integrations をクリックし、インテグレーションの一覧を表示します。保存してもインテグレーションがパブリッシュされない場合は、Stopped がインテグレーションのエントリーに表示されます。

5.4. インテグレーションの実行をトリガーするためタイマーコネクションを追加

指定のスケジュールに応じてシンプルなインテグレーションの実行をトリガーするには、タイマーコネクションをシンプルなインテグレーションの最初のコネクションとして追加します。タイマーコネクションをフローの途中やフローの最後に追加することはできません。

手順

  1. Fuse Online で左側にある Integrations をクリックします。
  2. 右上の Create Integration をクリックします。
  3. Choose a connection ページで Timer をクリックします。

    Fuse Online は Timer コネクションを提供するため、タイマーコネクションを作成する必要はありません。

  4. Choose an action ページで Cron または Simple を選択します。

    • cron タイマーには、インテグレーションの実行をトリガーするスケジュールを指定する cron 式が必要です。
    • 期間とその時間単位の指定を要求されます (例:5 seconds1 hour)。使用可能な単位はミリ秒 (milliseconds)、秒 (seconds)、分 (minutes)、時間 (hours)、および日 (days) です。
  5. 追加するタイマーのタイプに応じて、cron 式または選択した時間単位の期間を入力します。
  6. Next をクリックして Timer コネクションをインテグレーションの最初のコネクションとして追加します。

5.5. データがコレクションにある場合のインテグレーションの動作

コネクションは、すべて同じタイプの複数の値が含まれるコレクションを返すことがあります。コネクションがコレクションを返すと、フローは以下を含む複数の方法でコレクションで操作できます。

  • 各ステップを 1 度、コレクションに実行します。
  • 各ステップを 1 度、コレクションの各要素に実行します。
  • 一部のステップを 1 度、コレクションに実行し、他のステップを 1 度、コレクションの各要素に実行します。

フローのコレクションでの操作方法を決定するには、フローが接続するアプリケーション、それらのアプリケーションがコレクションに対応できるかどうか、およびフローが達成することを知っている必要があります。その後、以下の情報を使用して、コレクションを処理するフローにステップを追加できます。

5.5.1. コレクションの処理

フローがコレクションを処理する最も簡単な方法は、データマッパーを使用してソースコレクションにあるフィールドをターゲットコレクションにあるフィールドにマップすることです。多くのフローでは、これだけが必要になります。たとえば、フローはデータベースから社員のレコードのコレクションを取得し、それらのレコードをスプレッドシートに挿入します。データマッパーステップは、データベースコネクションと Google スプレッドシートコネクションの間でデータベースフィールドを Google スプレッドシートフィールドにマップします。ソースとターゲットはコレクションであるため、Fuse Online がフローを実行すると、Google スプレッドシートコネクションを 1 度呼び出します。この呼び出しで、Fuse Online はレコードを繰り返し処理し、スプレッドシートが適切に入力されます。

フローによっては、コレクションを個別のオブジェクトに分割する必要がある場合があります。たとえば、データベースに接続し、特定の日付までに割り当てられた休暇を取らないと休暇が失効してしまう社員のコレクションを取得する場合など考えられます。その後、フローはこれらの各社員にメール通知を送信する必要があります。このフローでは、データベースコネクションの後に分割ステップ (split step) を追加します。その後、社員のレコードのソースフィールドを、メッセージを送信する Gmail コネクションのターゲットフィールドにマップする、データマッパーステップを追加します。Fuse Online がフローを実行すると、データマッパーステップと Gmail コネクションを社員ごとに 1 度実行します。

場合によっては、フローのコレクションを分割し、フローがコレクションの各要素に一部のステップを 1 度実行した後、フローをコレクションで再度操作したいことがあります。前述の例について考えてみましょう。Gmail コネクションでメッセージを各従業員に送信した後に、通知済みの従業員一覧をスプレッドシートに追加すると仮定します。このシナリオでは、Gmail コネクションの後に、集約の手順を追加して、従業員名のコレクションを作成します。次に、ソースコレクションのフィールドをターゲット Google スプレッドシートコネクションのフィールドにマップするデータマッパーステップを追加します。Fuse Online がフローを実行すると、新しいデータマッパーステップと Google スプレッドシートコネクションをコレクションに 1 度実行します。

これが、フローのコレクションを処理する最も一般的なシナリオになります。ただし、より複雑な処理も可能です。たとえば、コレクションの要素自体がコレクションである場合、分割および集約ステップを他の分割および集約ステップ内で入れ子にすることができます。

5.5.2. データマッパーを使用したコレクションの処理

フローでは、ステップがコレクションを出力し、フローの後続のコネクションはコレクションを入力として想定する場合、データマッパーを使用してフローがどのようにコレクションを処理するかを指定できます。

ステップがコレクションを出力すると、フロービジュアライゼーションはステップの詳細で Collection を表示します。以下に例を示します。

Data Type: SQL Result (Collection)

データマッパーステップを、コレクションを提供するステップの後およびマッピングを必要とするステップの前に追加します。フローでこのデータマッパーステップが必要な場所は、フローの他のステップによって異なります。以下のイメージは、ソースコレクションフィールドからターゲットコレクションフィールドへのマッピングを示しています。

mapping collection

ソースおよびターゲットパネルで、データマッパーは this icon を表示し、コレクションを示します。ソースコレクションまたはターゲットコレクションにプリミティブタイプのみが含まれる場合、データマッパーはコレクションフィールドを表示する必要がないため表示しません。コレクション自体をマップ元またはマップ先としてマップすることができます。

コレクションに複数のプリミティブタイプが含まれる場合や、複雑なタイプが 1 つ以上含まれている場合、データマッパーはコレクションの子フィールドを表示します。各フィールドをマップ元またはマップ先とすることができます。

ソースフィールドが複数のコレクションで入れ子になっている場合、以下の条件の 1 つを満たすターゲットフィールドにマップできます。

  • ターゲットフィールドは、ソースフィールドと同じ数のコレクションで入れ子になっています。たとえば、以下のマッピングが許可されます。

    • /A<>/B<>/C → /D<>/E<>/F
    • /A<>/B<>/C → /G<>/H/I<>/J
  • ターゲットフィールドは 1 つのコレクションでのみ入れ子になっています。たとえば、以下のマッピングが許可されます。

    /A<>/B<>/C → /K<>/L

    この場合、データマッパーで深さ優先アルゴリズムが使用され、ソースのすべての値が反復処理されます。データマッパーによって、ソース値は発生順に単一のターゲットコレクションに配置されます。

以下のマッピングは許可されません。

/A<>/B<>/C cannot-map-to /M<>/N/O<>/P<>/Q

Fuse Online でフローが実行されると、ソースコレクション要素が繰り返し処理され、ターゲットコレクション要素が入力されます。1 つ以上のソースコレクションフィールドをターゲットコレクションまたはターゲットコレクションフィールドにマップする場合、ターゲットコレクション要素にはマップされたフィールドのみの値が含まれます。

ソースコレクションまたはソースコレクションのフィールドをコレクションではないターゲットフィールドにマップする場合、Fuse Online がフローを実行するときにソースコレクションの最後の要素のみから値を割り当てます。コレクションの他の要素は、そのマッピングステップで無視されます。しかし、後続のマッピングステップはソースコレクションのすべての要素にアクセスできます。

コネクションが JSON または Java ドキュメントに定義されたコレクションを返すと、データマッパーは通常コレクションとしてソースドキュメントを処理できます。

5.5.3. 分割ステップの追加

フローの実行中に、コネクションがオブジェクトのコレクションを返すと、Fuse Online はコレクションに後続のステップを 1 度実行します。コレクションにある各オブジェクトに後続のステップを 1 度実行する場合は、分割ステップを追加します。たとえば、Google スプレッドシートコネクションは行オブジェクトのコレクションを返します。行ごとに後続のステップを 1 度実行するには、Google スプレッドシートコネクションの後に分割ステップを追加します。

分割ステップへの入力が常にコレクションであるようにしてください。分割ステップが、コレクションタイプではないソースドキュメントを取得する場合、ステップは空白文字で入力を分割します。たとえば、Fuse Online は「Hello world!」の入力を「Hello」と「world!」という 2 つの要素に分割し、これらの要素をフローの次のステップに渡します。特に XML データはコレクションタイプではありません。

前提条件

  • フローを作成または編集することになります。
  • フローに必要なコネクションがすべて存在する必要があります。
  • フロービジュアライゼーションでは、ソースデータを取得するコネクションはデータが (Collection) であると示します。

手順

  1. フロービジュアライゼーションの分割ステップを追加する場所で PlusSignToAddStepOrConnection をクリックします。
  2. Split をクリックします。このステップに設定は必要ありません。
  3. Next をクリックします。

関連情報

通常、データマッパーステップを追加する前に、分割ステップと集約ステップを追加します。これは、データがコレクションまたは個々のオブジェクトであるかがマッピングに影響するためです。データマッパーステップを追加して分割ステップを追加する場合、通常はマッピングをやり直す必要があります。同様に、分割または集約ステップを削除する場合もマッピングをやり直す必要があります。

5.5.4. 集約ステップの追加

フローに、Fuse Online が個別のオブジェクトからコレクションを作成する、集約ステップを追加します。実行中、Fuse Online は集約ステップの後に各オブジェクトに対して後続のステップを 1 度実行せずに、コレクションに対して後続のステップを 1 度実行します。

集約ステップをフローに追加するかどうかを決定する場合は、フローのコネクションを考慮してください。分割ステップの後、Fuse Online は後続の各コネクションに対して、フローのデータの各要素のために 1 度アプリケーションに接続します。コネクションによっては、複数回接続するよりも 1 度接続した方が望ましいことがあります。

前提条件

  • フローを作成または編集することになります。
  • フローに必要なコネクションがすべて存在する必要があります。
  • 前の手順でコレクションを個別のオブジェクトに分割している必要があります。

手順

  1. フロービジュアライゼーションの、集約ステップをフローに追加する場所で PlusSignToAddStepOrConnection をクリックします。
  2. Aggregate をクリックします。このステップに設定は必要ありません。
  3. Next をクリックします。

関連情報

通常、データマッパーステップを追加する前に、分割および集約ステップを追加します。これは、データがコレクションまたは個々のオブジェクトであるかがマッピングに影響するためです。データマッパーステップを追加して集約ステップを追加する場合、通常はマッピングをやり直す必要があります。同様に、集約ステップを削除する場合もマッピングをやり直す必要があります。

5.5.5. フローでコレクションを処理する例

このシンプルなインテグレーションは、Fuse Online によって提供されるサンプルデータベースからタスクのコレクションを取得します。フローはコレクションを個別のタスクオブジェクトに分割し、これらのオブジェクトをフィルターして実行されたタスクを見つけます。その後、フローは完了したタスクをコレクションで集約し、そのコレクションのフィールドをスプレッドシートのフィールドにマップします。完了したタスクのリストをスプレッドシートに追加して終了します。

以下の手順は、このシンプルなインテグレーションを作成する方法を説明します。

前提条件

  • Google スプレッドシートコネクションが作成済みである必要があります。
  • Google スプレッドシートコネクションがアクセスするアカウントに、データベースレコードを受信するスプレッドシートがある必要があります。

手順

  1. Create Integration をクリックします。
  2. 最初のコネクションを追加します。

    1. Choose a connection ページで PostgresDB をクリックします。
    2. Choose an action ページで Periodic SQL Invocation を選択します。
    3. SQL Statement フィールドに select * from todo を入力し、Next をクリックします。

    このコネクションは、タスクオブジェクトのコレクションを返します。

  3. 最後のコネクションを追加します。

    1. Choose a connection ページで、Google スプレッドシートコネクションをクリックします。
    2. Choose an action ページで Append values to a sheet を選択します。
    3. SpreadsheetId フィールドにスプレッドシートの ID を入力し、タスクの一覧を追加します。
    4. Range フィールドに A:B を値を追加するターゲット列として入力します。最初のコラムである A はタスク ID のコラムです。次のコラムである B は、タスク名のコラムです。
    5. Major DimensionValue Input Option のデフォルト値を受け入れ、Next をクリックします。

    Google スプレッドシートコネクションは、コレクションの各要素をスプレッドシートに追加してフローを終了します。

  4. フローに分割ステップを追加します。

    1. フロービジュアライゼーションで、プラス記号をクリックします。
    2. Split をクリックします。

    フローが分割ステップを実行した後、結果は個別のタスクオブジェクトのセットになります。Fuse Online は、各タスクオブジェクトに対してフローの後続ステップを 1 度実行します。

  5. フィルターステップをフローに追加します。

    1. フロービジュアライゼーションにて、分割ステップの後でプラスマークをクリックします。
    2. Basic Filter をクリックし、以下のようにフィルターを設定します。

      1. 最初のフィールドをクリックし、評価するデータが含まれるフィールドの名前である completed を選択します。
      2. 2 つ目のフィールドに、completed フィールドの値が満たさなければならない条件として equals を選択します。
      3. 3 番目のフィールドに、completed フィールドになければならない値として 1 を指定します。1 は、タスクが完了したことを示します。
    3. Next をクリックします。

    実行中、フローは各タスクオブジェクトに対してフィルターステップを 1 度実行します。結果は、個別の完了したタスクオブジェクトのセットになります。

  6. 集約ステップをフローに追加します。

    1. フロービジュアライゼーションにて、フィルターステップの後でプラス記号をクリックします。
    2. Aggregate をクリックします。

    結果セットには、完了したタスクごとに要素が含まれるコレクションが含まれるようになりました。

  7. データマッパーステップをフローに追加します。

    1. フロービジュアライゼーションにて、集約ステップの後でプラスマークをクリックします。
    2. Data Mapper をクリックし、以下のフィールドを SQL 結果ソースのコレクションから Google スプレッドシートのターゲットコレクションにマップします。

      • id から A
      • task から B
    3. Done をクリックします。
  8. Publish をクリックします。

結果

インテグレーションの実行時に、毎分サンプルデータベースからタスクを取得し、完了したタスクをスプレッドシートの最初のシートに追加します。インテグレーションは、タスク ID を最初の列である A にマップし、タスク名を 2 番目の列である B にマップします。

5.6. コネクション間のステップの追加

必須ではありませんが、必要なコネクションをすべてプライマリーフローに追加してから、フローが実行するプロセスにしたがって、コネクションの間に追加ステップを追加することが推奨されます。フローでは、各ステップは以前のコネクションおよび以前のステップから取得したデータで操作します。結果となるデータは、フローの次のステップで利用できます。

多くの場合、コネクションから受け取ったデータフィールドを、フローの次のコネクションが操作できるデータフィールドにマップする必要があります。すべてのコネクションをフローに追加したら、フロービジュアライゼーションを確認します。入力データで操作する前にデータマッピングを必要とする各コネクションに対し、Fuse Online は DataTypeMismatchWarning を表示します。このアイコンをクリックして、Data Type Mismatch: Add a data mapper step before this connection to resolve the difference. を表示します。

メッセージのリンクをクリックして、データマッパーステップを追加および指定する Configure Mapper ページを表示します。しかし、必要な他のステップを追加してから、データマッパーステップを最後に追加することが推奨されます。

5.7. 実行フローを決定するためのインテグレーションデータの評価

フローでは、Conditional Flows ステップでインテグレーションデータが指定の条件に対して評価されます。指定した条件ごとに、コネクションおよびその他のステップをその条件に関連するフローに追加します。実行中、Conditional Flows ステップによって受信データが評価され、実行するフローが決定されます。

詳細は以下のトピックを参照してください。

5.7.1. Conditional Flows ステップの動作

統合開発中、Conditional Flows (条件付きフロー) ステップをフローに追加して 1 つ以上の条件を追加できます。条件ごとに、ステップをその条件のみに関連する条件付きフローに追加します。インテグレーションの実行中、前のインテグレーションステップによって Conditional Flows ステップに渡されるメッセージごとに、Conditional Flows ステップは条件を指定するために Fuse Online ページで定義する順序で、メッセージの内容を指定の条件に対して評価します。

Conditional Flows ステップでの動作は以下のいずれかになります。

  • true に評価される最初の条件では、その条件に関連する条件付きフローがインテグレーションによって実行されます。
  • 条件が true に評価されず、デフォルトの条件付きフローがある場合は、インテグレーションはそのフローを実行します。
  • 条件が true に評価されず、デフォルトの条件付きフローがない場合、インテグレーションは条件付きフローを実行しません。

条件付きフローの実行後、または true に評価される条件とデフォルトの条件フローがない場合は、インテグレーションによってプライマリーフローの次のステップが実行されます。

5.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 の時間数または日数の明細をメールで該当する社員に送信します。

5.7.3. Conditional Flows ステップの一般的な設定手順

Conditional Flows ステップをフローに追加した後に行うステップ設定のワークフローは次のようになります。

Workflow for configuring Conditional Flows step

ワークフローの詳細

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

5.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 デフォルトフローのエントリーも表示されます。

次のステップ

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

その他のリソース

5.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 言語の条件式を入力します。たとえば以下の式は、メッセージの本文に 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

5.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 ステップに続くステップを実行します。

5.8. データマッパーステップの追加

ほぼすべてのインテグレーションにはデータマッピングが必要になります。データマッパーステップは、前のコネクションおよびその他のステップのデータフィールドからフローの次のコネクションが操作できるデータフィールドにマップします。たとえば、インテグレーションデータに Name フィールドが含まれ、フローの次のコネクションに CustomerName フィールドがある場合、ソースの Name フィールドをターゲットの CustomerName フィールドにマップする必要があります。

重要

データマッパーでは、以前のインテグレーションステップで提供できるソースフィールドの最大セットが表示されます。ただし、すべてのコネクションによって、表示された各ソースフィールドにデータが提供されるわけではありません。たとえば、サードパーティーアプリケーションへの変更によって、特定のフィールドにデータが提供されなくなる可能性があります。インテグレーションの作成時に、データマッピングが想定どおりに機能していないことが判明した場合は、マップするソースフィールドに予想されるデータが含まれていることを確認してください。

前提条件

フローを作成または編集することになります。

手順

  1. フロービジュアライゼーションの、データマッパーステップを追加する箇所で PlusSignToAddStepOrConnection をクリックします。
  2. Data Mapper をクリックして、データマッパーキャンバスにソースおよびターゲットフィールドを表示します。

5.9. 基本のフィルターステップの追加

ステップのフローを追加して、フローが操作するデータをフィルターできます。フィルターステップでは、Fuse Online はデータを検査し、コンテンツが定義した基準を満たしている場合にのみ継続されます。たとえば、Twitter からデータを取得するフローでは、「Red Hat」が含まれるツイートのみ操作して、実行の継続を指定できます。

前提条件

  • フローには必要なコネクションがすべて含まれている必要があります。
  • フローを作成または編集することになります。

手順

  1. フロービジュアライゼーションの、フィルターステップを追加する箇所で PlusSignToAddStepOrConnection をクリックします。
  2. Basic Filter をクリックします。
  3. Configure Basic Filter Step ページの Continue only if incoming data match フィールドで以下を行います。

    • 定義されたすべてのルールを満たす必要があるデフォルトを使用します。
    • あるいは、ANY of the following を選択して、1 つのルールのみを満たす必要があることを示します。
  4. フィルタールールを定義します。

    1. Property Name フィールドで、フィルターによって評価される内容が含まれるフィールドの名前を入力または選択します。たとえば、ステップに送信されるデータがご自分の Twitter ハンドルをメンションするツイートで構成されるとします。また、ツイートに特定の内容が含まれる場合のみ実行を継続するとします。ツイートは text という名前のフィールドにあるため、text を Property Name フィールドの値として入力または選択します。

      プロパティー名は以下の方法で定義できます。

      • 入力を開始します。フィールドには、ポップアップボックスに補完の候補が表示される自動補完機能があります。ボックスから適切な候補を選択します。
      • フィールドをクリックします。ドロップダウンボックスが表示され、利用可能なプロパティーのリストが表示されます。リストから対象のプロパティーを選択します。
    2. Operator フィールドで、ドロップダウンボックスから演算子を選択します。デフォルト設定は Contains です。実行を継続するには、このフィールドで選択する条件が、Keywords フィールドに入力する値に対して true である必要があります。
    3. Keywords フィールドに、絞り込む値を入力します。たとえば、デフォルトの Contains 演算子を使用し、受信テキストに特定の製品が含まれる場合のみインテグレーションの実行を継続するとします。この場合、このフィールドに製品名を入力します。
  5. 必要に応じて、+ Add another rule クリックして、別のルールを定義します。

    ルールエントリーの右上にあるごみ箱アイコンをクリックすると、ルールを削除できます。

  6. フィルターステップが完了したら、Done をクリックしてフローに追加します。

その他のリソース

  • 演算子の詳細や、評価するテキストを指定する例については「Camel Simple Language Operator Support」を参照してください。基本フィルターステップの matches 演算子は、Simple 言語の regex 演算子に対応することに注意してください。
  • 基本のフィルターステップに必要なフィルターを定義できない場合は、「高度なフィルターステップの追加」を参照してください。

5.10. 高度なフィルターステップの追加

フィルターステップでは、Fuse Online はデータを検査し、コンテンツが定義した基準を満たしている場合にのみフローの実行を継続します。基本のフィルターステップでは必要なフィルターを定義できない場合は、高度なフィルターステップを追加します。

前提条件

  • フローには必要なコネクションがすべて含まれている必要があります。
  • フローを作成または編集することになります。
  • Camel Simple 言語を熟知するか、フィルター言語が提供されている必要があります。

手順

  1. フロービジュアライゼーションの上級なフィルターステップを追加する場所で PlusSignToAddStepOrConnection をクリックします。
  2. Advanced Filter をクリックします。
  3. 編集ボックスで Camel Simple 言語 を使用してフィルター式を指定します。たとえば、メッセージヘッダーの type フィールドが widget に設定されている場合、以下の式は true に評価されます。

    ${in.header.type} == 'widget'

    以下の例では、メッセージのボディーに title フィールドが含まれる場合に式が true に評価されます。

    ${in.body.title}
  4. Next をクリックして、高度なフィルターステップをフローに追加します。

フローでの追加プロパティーの指定

式では、高度なフィルターステップが以下のようなフローの場合、追加のプロパティーを指定する必要があります。

  • API プロバイダーインテグレーションのオペレーションフロー。
  • Webhook コネクションで始まるシンプルなインテグレーション。
  • カスタム REST API コネクションで始まるシンプルなインテグレーション。

これらのフローでは、Fuse Online は body プロパティー内で実際のメッセージコンテンツをラッピングします。これは、高度なフィルターへの入力に body プロパティーが含まれ、このプロパティーには実際のメッセージコンテンツが含まれる別の body プロパティーが含まれることを意味します。そのため、このようなフローの 1 つにある高度なフィルター式に、body のインスタンスを 2 つを指定する必要があります。たとえば、入力メッセージの completed フィールドにあるコンテンツを評価するとします。この場合、以下のように式を指定します。

${body.body.completed} = 1

5.11. テンプレートステップの追加

フローでは、テンプレートステップはソースからデータを取得し、Fuse Online にアップロードするテンプレートで定義された形式に挿入します。テンプレートステップの利点は、指定した一貫性のある形式でデータの出力を提供できることです。

テンプレートでは、プレースホルダーを定義して静的テキストを指定します。フローの作成時に、テンプレートステップを追加してソースフィールドをテンプレートプレースホルダーにマップし、テンプレートコンテンツをフローの次のステップにマップします。Fuse Online がフローを実行するとき、マップされたソースフィールドにある値がテンプレートのインスタンスに挿入されるため、フローの次のステップで利用できるようになります。

フローにテンプレートステップが含まれる場合、そのフローの唯一のテンプレートステップとなる可能性が高くなります。ただし、フローに複数のテンプレートステップを含めることも可能です。

Fuse Online は、FreemarkerMustache、および Velocity のテンプレートをサポートします。

前提条件

  • フローを作成または編集する必要があります。
  • シンプルなインテグレーションを作成する場合は、すでに最初と最後のコネクションがある必要があります。

手順

  1. フロービジュアライゼーションのテンプレートステップを追加する場所で Plus Sign をクリックします。
  2. Template をクリックします。Upload Template ページが開きます。
  3. Freemarker、Mustache、または Velocity をテンプレートタイプとして指定します。
  4. テンプレートを定義するには、以下のいずれかを行います。

    • テンプレートファイルまたはテンプレートを作成するために編集するテキストが含まれるファイルを、テンプレートエディターにドラグアンドドロップします。
    • browse to upload をクリックしてファイルを選択し、アップロードします。
    • テンプレートエディターで、テンプレートを定義します。
  5. テンプレートエディターでは、テンプレートが Fuse Online で使用できるようにしてください。有効なテンプレートの例は、この手順の後に記載されています。Fuse Online では、構文エラーが含まれる行の左側に a red error indicator が表示されます。構文エラーインジケーターにマウスオーバーすると、エラーを解決するためのヒントが表示されます。
  6. Done をクリックして、フローにテンプレートステップを追加します。

    Done ボタンが有効でない場合は、修正する必要のある構文エラーが 1 つ以上存在します。

    テンプレートステップへの入力は、JSON オブジェクトの形式である必要があります。そのため、データマッピングステップをテンプレートステップの前に追加する必要があります。

  7. テンプレートステップの前にデータマッパーステップを追加するには、以下を行います。

    1. フロービジュアライゼーションで、先ほど追加したテンプレートステップの直前にある Plus Sign をクリックします。
    2. Data Mapper をクリックします。
    3. データマッパーで、ソースフィールドを各テンプレートプレースホルダーフィールドにマップします。

      たとえば、この手順の後に記載されているテンプレート例を使用して、ソースフィールドを以下のテンプレートフィールドにマップします。

      • time
      • name
      • text
    4. 右上の Done をクリックし、データマッパーステップをフローに追加します。

    テンプレートステップからの出力は常に JSON オブジェクトになります。そのため、テンプレートステップの後にデータマッパーステップを追加する必要があります。

  8. テンプレートステップの後にデータマッパーステップを追加するには、以下を行います。

    1. フロービジュアライゼーションで、先ほど追加したテンプレートステップの直後にある Plus Sign をクリックします。
    2. Data Mapper をクリックします。
    3. データマッパーで、テンプレートの message フィールドをターゲットフィールドにマップします。message フィールドには常にソースフィールドをテンプレートに挿入した結果が含まれます。たとえば、フローの次のコネクションが Gmail コネクションで、テンプレートステップの結果を Gmail メッセージの内容として送信するとします。これには、message ソースフィールドを text ターゲットフィールドにマップします。
    4. 右上の Done をクリックします。

テンプレートの例

Mustache テンプレートの例:

At {{time}}, {{name}} tweeted:
{{text}}

Freemarker および Velocity では、以下のテンプレート例がサポートされます。

At ${time}, ${name} tweeted:
${text}

Velocity では、以下の例のようにかっこを使用しない構文もサポートされます。

At $time, $name tweeted:
$text

プレースホルダーに . (ピリオド) を使用することはできません。

その他のリソース

フィールドのマッピングに関する詳細は、「インテグレーションデータを次のコネクションのフィールドにマッピング」を参照してください。

5.12. カスタムステップの追加

Fuse Online がフローで必要なステップを提供しない場合、開発者はエクステンションでカスタムステップを 1 つ以上定義できます。カスタムステップは、フローのコネクション間のデータで操作します。

カスタムステップは、組み込みのステップを追加するのと同じ方法でフローに追加します。シンプルなインテグレーションでは、最初と最後のコネクションを選択し、必要に応じて他のコネクションを追加した後、追加のステップを追加します。API プロバイダーインテグレーションでは、フローがカスタムステップを実行するオペレーションを選択し、必要に応じてコネクションをフローに追加した後、他のステップを追加します。ステップを追加すると、Fuse Online はフローの前のステップから受信するデータで操作します。

前提条件

  • Fuse Online にカスタムステップのエクステンションがアップロードされている必要があります。「カスタム機能の使用」を参照してください。
  • フローを作成または編集することになります。
  • フローに必要なコネクションがすべて存在する必要があります。

手順

  1. フロービジュアライゼーションのカスタムステップを追加する場所で PlusSignToAddStepOrConnection をクリックします。
  2. 追加するカスタムステップをクリックします。

    使用できるステップには、Fuse Online 環境にアップロードされたエクステンションで定義されたカスタムステップが含まれます。

  3. ステップの実行に必要な情報のプロンプトに応答します。この情報はカスタムステップごとに異なります。