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

5.2.1. 階層化された入力値・出力値の定義(Object型の定義)

この章では、ロジックフローの入出力値の階層的な定義の仕方について説明します。

5.2.1.1. 階層化された値とは

階層化された値とは、値の定義に親子関係を含むものを指します。
基礎編 - ファースト・ステップ」-「入出力設定を定義する」では、入出力ともに1つずつの非常にシンプルな構成です。
IM-LogicDesignerでは、入出力定義において上記のようなシンプルな構成の他に、JavaScriptにおけるObjectのような親子関係の存在する値の定義が可能です。
この章では、階層化された値の定義方法と、マッピングについて説明します。

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

本章では、階層化された値の定義方法の説明のため、「基礎編 - ファースト・ステップ」で作成したロジックフローを以下のように変更します。
  • ロジックフローの「入力値」を変更
    • 入出力設定を定義する」にて定義していた入力値を変更します。変更内容は以下の通りです。
      • 「メールの題名(subject)」を入力として受け取るようにします。
      • 定義済みである本文(message)について、名称および定義位置を変更します。
  • 「テキストメール送信」タスクの定数値の一部削除
    • 定数値を定義する」にて定義していた「テキストメール送信」タスクの定数値のうち「メールの題名(subject)」を削除します。
ロジックフローの処理順の変更はありません。

5.2.1.2. 階層化された値の定義方法

ロジックフローの入力値を本チュートリアルで作成するフローに合わせて、再定義します。
  1. 「サイトマップ」- 「LogicDesigner」-「フロー定義一覧」から、ロジックフロー定義一覧を開きます。
    一覧の中から、フロー定義ID「tutorial_flow」の行の編集アイコンをクリックし、ロジックフロー定義編集画面上部、ヘッダー内の「入出力設定」をクリックします。
    ../../../_images/input1.png

    図:入出力設定をクリック

  2. 入出力設定画面の、入力ペイン上部にある「+object」をクリックします。

    ../../../_images/input2.png

    図:object要素の追加

  3. 入力ペイン下部に、新しい値が設定されるので、名称を「send_info」とします。

    ../../../_images/input3.png

    図:object要素の名称変更

  4. send_info」を選択した状態で、入力ペイン上部にある「配下に配置する」にチェックをいれます。

    ../../../_images/input4.png

    図:「配下に配置する」をチェック

  5. 入力ペイン上部にある「+string」をクリックします。
    新しい値が「send_info」の配下に配置されることが確認できます。
    ../../../_images/input5.png

    図:string要素を配下に追加

  6. 配置された値の名称を「subject」とします。

    ../../../_images/input6.png

    図:string要素の名称変更

  7. 同様の手順で「+string」をクリックし、配下に配置された値を「body」とします。

    ../../../_images/input7.png

    図:新しいstring要素を配下に追加

  8. 定義済みの本文(message)を削除します。今後本文情報は「body」で管理するものとします。

    ../../../_images/input8.png

    図:既存のstring要素の削除

最後に、右下のOKをクリックし、設定を完了します。
以上で、階層化された入力値の設定が完了しました。

5.2.1.3. 階層化された値のマッピング

再定義した入力値を「テキストメール送信」タスクへマッピングします。
  1. マッピング設定の事前準備として、定数設定画面からメールの題名(subject)を削除します。

    ../../../_images/mapping1.png

    図:定数値の削除

  2. ロジックフロー定義編集画面上の「ログ出力」タスクをクリックし、プロパティからマッピング設定画面を開きます。
    (事前に定義されたマッピング内容は、入力値の変更によって自動で消えます)
    ../../../_images/mapping2.png

    図:「ログ出力」タスクのマッピング設定画面

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

    入力(始点) 出力(終点)
    入力<object> - send_info<object> - body<string> im_logger1<string>
    ../../../_images/mapping3.png

    図:「ログ出力」タスクのマッピング設定

  4. 設定画面右下のOKをクリックし、「ログ出力」タスクのマッピング設定を終了します。

  5. ロジックフロー定義編集画面上の「テキストメール送信」タスクをクリックし、プロパティからマッピング設定画面を開きます。
    (事前に定義された一部のマッピング内容は、入力値の変更によって自動で消えます)
    ../../../_images/mapping4.png

    図:「テキストメール送信」タスクのマッピング設定画面

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

    入力(始点) 出力(終点)
    入力<object> - send_info<object> im_sendTextMail1<object>

    注意

    マッピングの仕様について

    <object>型のマッピングとプリミティブ型のマッピングが混在した場合、マッピングを行った(線を引いた)順に処理が行われるため、一見、同一のマッピングに見えても動作が違うといったパターンが存在します。

    チュートリアルの流れ上、「from」と「to」に最初からマッピングがされている状態ですが、マッピングを一度外し、「send_info」、「from」、「to」の順にマッピングの設定を行ってください。
    「send_info」のマッピングが先に行われていない場合、処理が正常に行われず「from」と「to」の値がnullに設定されます。
    ../../../_images/mapping5.png

    図:「テキストメール送信」タスクのマッピング設定

  7. 設定画面右下のOKをクリックし、「テキストメール送信」タスクのマッピング設定を終了します。

  8. ロジックフローを保存します。

5.2.1.3.1. 階層化された値のマッピングの結果の確認

保存が完了した後、作成したロジックフローを実行し、結果を確認します。
実行方法は「Swagger(SPEC)から実行する」を、結果の確認方法は「結果を確認する」を参照してください。
今回、新しくフローの入力値を定義したため、実行時に指定するパラメータが追加されます(subject)。
追加されたパラメータを含め、以下の内容でロジックフローを実行します。
  • subject - [HIERARCHICAL] IM-LD Tutorial
  • body - Hierarchical!, IM-LogicDesigner
../../../_images/execute_param_detail.png

図:Swagger上での設定例

実行結果として「基礎編 - ファースト・ステップ」で作成したロジックフローで得られた結果と、同じ出力が得られることを確認してください。
この結果は、階層化された値同士をマッピングし、マッピング元とマッピング先で配下に同名の値を持っている場合、IM-LogicDesignerは自動でその値をマッピングすることを示しています。
今回、マッピング元のsend_info配下に存在するsubject、および、bodyが、自動的に「テキストメール送信」タスクのsubject、および、bodyに紐付けられました。
以上で、ロジックフローの入出力値の階層的な定義が完了しました。