intra-mart Accel Platform IM-LogicDesigner チュートリアルガイド 第7版 2018-04-01

5.2.4. サブフロー呼び出し

この章では、ロジックフローの定義で別のロジックフロー(サブフロー)を呼び出す方法を説明します。

5.2.4.1. 「フロー呼び出し」制御要素

IM-LogicDesignerでは、あるフロー内で別のフローの呼び出し処理を行う「フロー呼び出し」制御要素を提供しています。
開発者は「フロー呼び出し」制御要素を利用することで、他のフローで実現した機能を容易に別フローに組み込む事ができます。

5.2.4.1.1. 本章で作成するフロー

本章では、「フロー呼び出し」制御要素によって、作成済みの別ロジックフロー処理を呼び出せることを確認するため、以下のようなフローを作成します。
  • 基礎編 - ファースト・ステップ」で作成したロジックフローを「呼び出し先」ロジックフローとします。
    • 本章のチュートリアルでは、基礎編のチュートリアルで作成したロジックフローに対する編集は行いません。
  • 基礎編 - ファースト・ステップ」で作成したロジックフローとは別に新たにロジックフローを作成します。

  • 新しく作成したロジックフローを「呼び出し元」ロジックフローとし、「呼び出し先」ロジックフローを呼び出す処理のみ定義します。

5.2.4.2. フロー呼び出しを利用したフローの作成

フロー呼び出しを利用したフローを新しく作成します。
フロー呼び出しを行うためには、ロジックフローにフロー呼び出しを行うエレメントを配置します。
  1. 「サイトマップ」- 「LogicDesigner」-「フロー定義一覧」から、ロジックフロー定義一覧を開きます。
    ロジックフロー定義一覧画面左上の「新規作成」をクリックします。
  2. ロジックフロー定義編集画面左部、パレット内の「基本」へカーソルを合わせます。

    ../../../_images/draw12.png

    図:パレット内の「基本」

  3. 「基本」にカテゴライズされる制御要素一覧がスライドインします。
    スライドインした一覧から、「フロー呼び出し」をクリックします。
    ../../../_images/draw22.png

    図:「フロー呼び出し」制御要素をクリック

  4. フロー呼び出しを行う制御要素がフロー編集画面上に追加されます。

    ../../../_images/draw32.png

    図:「フロー呼び出し」制御要素の追加

  5. フロー呼び出しを行う制御要素を、以下の具体的な線(シーケンス)の定義内容に従って接続します。

    入力(始点) 出力(終点)
    開始 - out フロー呼び出し - in
    フロー呼び出し - out 終了 - in
    ../../../_images/draw4.png

    図:シーケンスの定義

  6. フロー編集画面上の「フロー呼び出し」タスクをクリックします。

    ../../../_images/draw5.png

    図:「フロー呼び出し」タスクをクリック

  7. タスク固有設定の「フローID」項目下にある「検索」をクリックし、呼び出しを行うフローの検索ポップアップを表示します。

    ../../../_images/draw6.png

    図:検索ポップアップの表示

  8. ロジックフロー定義検索ポップアップから、フロー定義ID「tutorial_flow」の行の選択チェックボックスにチェックを入れ、「決定」をクリックします。

    ../../../_images/draw7.png

    図:「tutorial_flow」行のチェック

  9. タスク固有設定の「フローID」項目に、「tutorial_flow」が表示されていることを確認してください。

    ../../../_images/draw8.png

    図:呼び出すフローIDの設定内容を確認

以上で、フロー呼び出しを含むロジックフローの定義が完了しました。
続いて、新しく作成したロジックフローの入出力値設定、および、マッピング設定を行います。
基礎編 - ファースト・ステップ」-「入出力設定を定義する」で定義したとおり、呼び出し先のロジックフローには必要とする入力値、および、その結果の出力値が定義されています。
「フロー呼び出し」制御要素は、呼び出し先のロジックフローの入力値と出力値から、動的に自身の入力値・出力値を決定します。
  1. ロジックフロー定義編集画面上部、ヘッダー内の「入出力設定」をクリックし、入出力設定画面を開きます。

    ../../../_images/mapping11.png

    図:入出力設定画面の表示

  2. 基礎編 - ファースト・ステップ」-「入出力設定を定義する」と同様の入力値・出力値を設定します。

    ../../../_images/mapping21.png

    図:基礎編と同様の入出力値の設定

  3. フロー編集画面上の「フロー呼び出し」制御要素をクリックした上で、「マッピング設定」をクリックし、マッピング設定画面を開きます。

    ../../../_images/mapping31.png

    図:「フロー呼び出し」制御要素のマッピング設定画面

  4. マッピング設定を以下のとおりに設定します。

    入力(始点) 出力(終点)
    入力<object> - message<string> im_callFlow1<object> - message<string>
    ../../../_images/mapping41.png

    図:「フロー呼び出し」制御要素のマッピング設定

  5. 設定画面右下のOKをクリックし、「フロー呼び出し」制御要素のマッピング設定を終了します。

  6. 同様の手順で、「終了」制御要素のマッピング設定画面を開き、以下のとおりに設定します。

    入力(始点) 出力(終点)
    im_callFlow1<object> - result<boolean> 出力<object> - result<boolean>
    ../../../_images/mapping51.png

    図:「終了」制御要素のマッピング設定

    コラム

    入力としてフロー呼び出しの出力(im_callFlow1<object>)を利用する方法

    フロー呼び出しの出力値を、「終了」制御要素の入力値として利用する方法の詳細は「応用編 - より高度なフロー」 - 「様々な入力情報の利用」 - 「他のエレメントの出力値の利用」を参照してください。
  7. 設定画面右下のOKをクリックし、「終了」制御要素のマッピング設定を終了します。

  8. ロジックフローを以下のとおりに保存します。

    • フロー定義ID「tutorial_subflow

    • フロー定義名
      • 標準 - 「チュートリアルサブフロー
      • 日本語、英語、中国語(中華人民共和国) - 入力なし
    • フローカテゴリ
      • ID - 「tutorial_category
    ../../../_images/mapping6.png

    図:サブフロー呼び出しの保存

以上で、フロー呼び出しを利用したフローの作成が完了しました。

5.2.4.3. サブフロー呼び出し結果の確認

次に、作成したフローを実行し、その結果を確認します。
フローの実行、および、結果の確認には「基礎編 - ファースト・ステップ」-「フロールーティングを設定する」と同様に、作成したフローのフロールーティングを定義し、Swaggerを利用して行います。
  1. 「サイトマップ」- 「LogicDesigner」-「ルーティング定義一覧」をクリックし、ロジックフロールーティング定義一覧画面を開きます。
    ロジックフロールーティング定義一覧画面左上の「新規作成」をクリックし、ロジックフロールーティング編集画面を表示します。
  2. ロジックフロールーティング情報の各項目に以下の値を入力します。

    • 対象フロー
      • フロー定義ID - 「tutorial_subflow
    • ルーティング「tutorial/subflow

    • メソッド「POST

    • 認証方法「IMAuthentication

    • 認可URI「tutorial/subflow/auth

    ../../../_images/result1.png

    図:サブフロー呼び出しを行うロジックフロールーティング設定

  3. 「新規作成」をクリックし、フロールーティング定義を作成します。

  4. 作成したフロールーティング定義の認可を設定します。
    認可の設定内容として、「基礎編 - ファースト・ステップ」-「ルーティングの認可を設定する」と同様に、「認証済みユーザ」に対して「許可」を設定します。
  5. 作成したフロールーティング「tutorial/subflow」の行のSPECアイコンをクリックし、Swaggerの画面を表示します。

    ../../../_images/result2.png

    図:Swagger画面の表示

  6. 基礎編 - ファースト・ステップ」-「Swagger(SPEC)から実行する」と同様の手順で、フローを実行します。

実行結果として「基礎編 - ファースト・ステップ」で作成したロジックフローで得られた結果と、同じ出力が得られることを確認してください。
これは、正しくフローの呼び出しが行われ、基礎編で作成したロジックフローが実行されたことを表します。
以上で、サブフロー呼び出し結果の確認が完了したました。

コラム

呼び出されるフロー(サブフロー)の制約

「フロー呼び出し」制御要素によって呼び出されるフローは以下の制約のもと呼びだされます。
  • 呼び出されるフローのバージョンは、常に最新のバージョンで呼び出しが行われます。
  • 「フロー呼び出し」制御要素を含むフローを保存後、呼び出し先のフローの最新バージョンが変更され、入出力情報が変更されていた場合、呼び出し元の入出力設定もその影響を受けます。