intra-mart Accel Platform IM-LogicDesigner チュートリアルガイド 第12版 2023-10-01

5.2.2. 条件分岐を利用したフロー

この章では、ロジックフローの定義に条件分岐を利用する方法を説明します。

5.2.2.1. 「分岐」制御要素

IM-LogicDesignerでは、フロー内で定義した条件による単純分岐処理を行う「分岐」制御要素を提供しています。
開発者は「分岐」制御要素を利用することで、指定した条件による分岐処理を実現することができます。

コラム

分岐できるパターン数

IM-LogicDesignerが提供する「分岐」制御要素では、分岐先は2つまで設定できます。
3つ以上の分岐については、「分岐」制御要素を複数組み合わせることで実現可能です。

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

本章では、「分岐」制御要素によって指定した条件の分岐処理が行われることを確認するため、「基礎編 - ファースト・ステップ」で作成したロジックフローを以下のように変更します。
  • 「ログ出力」タスクと「テキストメール送信」タスクの間に、「分岐」制御要素を組み込みます。

  • 分岐条件としてロジックフローの入力値に分岐を決定するフラグを受け取ります。

  • 「分岐」制御要素では、入力値のフラグを条件に分岐処理を行います。
    • フラグがtrueの場合、「テキストメール送信」タスクを実行する。
    • フラグがfalseの場合、「テキストメール送信」タスクの実行をスキップする。

5.2.2.2. 条件分岐を利用したフローの作成

条件分岐を利用したフローを実現する最初のステップとして、ロジックフローに条件分岐のエレメントを配置します。
  1. 「サイトマップ」→「LogicDesigner」→「フロー定義一覧」から、ロジックフロー定義一覧を開きます。
    左ペインのツリーから「チュートリアルカテゴリ」の開閉アイコンをクリックしカテゴリ配下を情報を表示します。
    フロー定義「チュートリアルフロー」を選択し編集ボタンをクリックし、ロジックフロー定義編集画面を開きます。
  2. ロジックフロー定義編集画面左部、パレット内の「基本」へカーソルを合わせます。

    ../../../_images/draw1.png

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

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

    図:「分岐」制御要素をクリック

  4. 分岐処理を行う制御要素がフロー編集画面上に追加されます。
    ../../../_images/draw3.png

    図:「分岐」制御要素の追加

追加された「分岐」制御要素を、既存のフローに組み込みます。
具体的な線(シーケンス)の定義内容は以下の通りです。
入力(始点) 変更前の出力(終点) 変更後の出力(終点)
ログ出力 - out テキストメール送信 - in 分岐 - in
分岐 - then (なし) テキストメール送信 - in
分岐 - else (なし) 終了 - in
ロジックフローの完成例は以下の通りです。
../../../_images/flow_summary.png

図:ロジックフロー(分岐)完成例

5.2.2.3. 条件式の定義

次に、実際に条件を定義し、その条件のもとロジックフローが動作することを確認します。
ロジックフローにおける条件分岐の条件設定は、設定を行う「分岐」制御要素のプロパティから行います。
  1. フロー編集画面上の「分岐」制御要素をクリックします。

    ../../../_images/condition1.png

    図:「分岐」制御要素を選択

  2. タスク固有設定の項目を以下のとおりに変更します。

    • 条件式(EL式)- 「${true}
    ../../../_images/condition2.png

    図:条件式の定義

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

保存が完了した後、作成したロジックフローを実行し、結果を確認します。
実行方法は「Swagger(SPEC)から実行する」を、結果の確認方法は「結果を確認する」を参照してください。
そして、実行結果として「基礎編 - ファースト・ステップ」で作成したロジックフローで得られた結果と、同じ出力が得られることを確認してください。
これは、「分岐」制御要素が定義した条件式を評価した結果として、常にthen端子が接続された方へ処理を制御したためです。
../../../_images/condition3.png

図:「分岐」制御要素が条件式を元に処理を制御するイメージ

コラム

EL式について

EL式の概要や記述方法の詳細は「IM-LogicDesigner仕様書」-「付録」-「EL式」を参照してください。
「分岐」制御要素の動作を更に確認するためには、タスク固有設定の項目を以下のとおりに変更し、再度ロジックフローを実行してください。
  • 条件式(EL式)- 「${false}
実行結果として「ログ出力」タスクの出力結果のみが得られ、「テキストメール送信」タスクの出力結果が得られないことを確認できます。
以上で、分岐に設定された条件をもとにロジックフローが動作することが確認できました。

5.2.2.4. より高度な条件式の定義

条件式の定義」で定義した条件式では常に同じ結果を返すため、条件分岐としては不十分です。
最後に、ロジックフローの入力値として分岐を決定するフラグ(boolean)を定義し、その値をもとに処理を行う方法を説明します。
  1. 「サイトマップ」→「LogicDesigner」→「フロー定義一覧」から、ロジックフロー定義一覧を開きます。
    一覧の中から、フロー定義ID「tutorial_flow」の行の編集アイコンをクリックし、ロジックフロー定義編集画面を開きます。
  2. ロジックフロー定義編集画面上部、ヘッダ内の「入出力設定」をクリックし、入出力設定画面を表示します。

    ../../../_images/advanced_condition1.png

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

  3. 入力値として分岐を決定するフラグを以下のとおりに設定します。

    • パラメータ名「condition
    • 型「boolean
    ../../../_images/advanced_condition2.png

    図:新規パラメータの追加(boolean)

  4. 入力設定後、フロー編集画面上の「分岐」制御要素をクリックします。

    ../../../_images/advanced_condition3.png

    図:「分岐」制御要素をクリック

  5. タスク固有設定の項目を以下のとおりに変更します。

    • 条件式(EL式)- 「${$input.condition}
    ../../../_images/advanced_condition4.png

    図:条件式の設定

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

保存が完了した後、作成したロジックフローを実行し、結果を確認します。
はじめに、今回新しく定義した「分岐を決定するフラグ」の値にtrueを設定し、ロジックフローを実行してください。
../../../_images/advanced_condition5.png

図:Swagger上での設定例

実行結果として「基礎編 - ファースト・ステップ」で作成したロジックフローで得られた結果と、同じ出力が得られることを確認してください。
続けて、「分岐を決定するフラグ」の値にfalseを設定し、ロジックフローを実行してください。
実行結果として「ログ出力」タスクの出力結果のみが得られ、「テキストメール送信」タスクの出力結果が得られないことを確認できます。
この結果は、「分岐」制御要素が定義した条件式を評価する際、ロジックフローの入力値として渡されたconditionの値をもとに処理を制御していることを表しています。
以上で、ロジックフローの入力値を条件として、処理を制御する定義が完了しました。

コラム

EL式で利用可能な暗黙的な変数

分岐条件の中で利用した$inputという変数は、IM-LogicDesignerが提供する、EL式で利用可能な暗黙的な変数の1つです。
暗黙的な変数の詳細は「IM-LogicDesigner仕様書」-「付録」-「EL式」-「利用可能な暗黙的な変数」を参照してください。