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

5.2.3. 繰り返し処理を利用したフロー

この章では、ロジックフローの定義で繰り返し処理を利用する方法を説明します。

5.2.3.1. 「繰り返し」制御要素

IM-LogicDesignerでは、フロー内で指定した条件、ないしは、回数の繰り返し処理を行う「繰り返し」制御要素を提供しています。
開発者は「繰り返し」制御要素を利用することで、同一処理の複数回実行を実現することが出来ます。

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

本章では、「繰り返し」制御要素によって処理が複数回行われることを確認するため、「基礎編 - ファースト・ステップ」で作成したロジックフローを以下のように変更します。
  • 「ログ出力」タスク、および、「テキストメール送信」タスクを、「繰り返し」制御要素で囲みます。

  • 繰り返し実行する回数は、ロジックフローの入力値をもとに決定します。
    • この仕様に伴い、入力値に新しく実行回数を指定する値を定義します。

コラム

メール送信環境が未整備の場合

本チュートリアルは性質上、「テキストメール送信」タスクの処理が複数回実行されます。
メール送信環境が未整備の場合、一度のロジックフロー実行で多くの例外が出力されるので、ログ確認等の実行結果の確認が煩雑になることが考えられます。
必要に応じて「テキストメール送信」タスクを除外してください(動作確認を行う上で問題はありません)。

5.2.3.2. 繰り返しを利用したフローの作成

繰り返しを利用したフローを実現する最初のステップとして、ロジックフローに繰り返し処理のエレメントを配置します。
  1. 「サイトマップ」- 「LogicDesigner」-「フロー定義一覧」から、ロジックフロー定義一覧を開きます。
    一覧の中から、フロー定義ID「tutorial_flow」の行の編集アイコンをクリックし、ロジックフロー定義編集画面を開きます。
  2. ロジックフロー定義編集画面左部、パレット内の「基本」へカーソルを合わせます。

    ../../../_images/draw11.png

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

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

    図:「繰り返し開始」制御要素をクリック

  4. 繰り返し処理を行う制御要素(繰り返し開始、および、繰り返し終了)がフロー編集画面上に追加されます。
    ../../../_images/draw31.png

    図:「繰り返し開始」「繰り返し終了」制御要素の追加

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

図:ロジックフロー(繰り返し)完成例

5.2.3.3. 繰り返し条件の定義(回数)

次に、実際に繰り返し条件を定義し、その条件のもとロジックフローが動作することを確認します。
ロジックフローにおける繰り返しの条件設定は、設定を行う「繰り返し開始」制御要素のプロパティから行います。
はじめに「繰り返し回数指定」での定義方法を説明します。
  1. ロジックフロー定義編集画面上の「繰り返し開始」制御要素をクリックします。

    ../../../_images/count1.png

    図:「繰り返し開始」制御要素を選択

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

    • 繰り返し回数 - 「3
    ../../../_images/count2.png

    図:繰り返し回数の設定

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

以上で、繰り返し条件の定義(回数)が完了しました。

5.2.3.3.1. 繰り返し条件の定義(回数)の結果の確認

保存が完了した後、作成したロジックフローを実行し、結果を確認します。
実行方法は「Swagger(SPEC)から実行する」を、結果の確認方法は「結果を確認する」を参照してください。
実行結果として「基礎編 - ファースト・ステップ」で作成したロジックフローの以下の内容が、3回出力されていることを確認してください。
これは「繰り返し」制御要素が、定義された繰り返し回数に応じて処理を制御していることを表しています。
../../../_images/count3.png

図:「繰り返し」制御要素が回数を元に処理を制御するイメージ

以上で、「繰り返し回数指定」を利用したロジックフローの繰り返し処理が確認できました。

5.2.3.4. 繰り返し条件の定義(条件)

次に「繰り返し終了条件指定」での定義方法を説明します。
ここでは、繰り返す回数をロジックフローの入力値として受け取り、その条件を元に繰り返し処理が行われることを確認します。
繰り返し終了条件を設定する前に、ロジックフローの入力値として新しく「繰り返しを行う回数」を表すパラメータを定義します。
  1. ロジックフロー定義編集画面上部、ヘッダー内の「入出力設定」をクリックし、入出力設定画面を開きます。

    ../../../_images/prepare_input1.png

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

  2. 入力として以下のとおりにパラメータを追加します。

    • パラメータ名
      • max_count
      • integer
    ../../../_images/prepare_input2.png

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

  3. 入出力設定画面右下のOKをクリックします。

次に実際の「繰り返し終了条件」を指定します。
  1. ロジックフロー定義編集画面上の「繰り返し開始」制御要素をクリックします。

    ../../../_images/condition11.png

    図:「繰り返し開始」制御要素の選択

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

    • 繰り返し条件 - 「${$input.max_count >= im_startLoop1.index}
    • 繰り返し回数 - 5
    ../../../_images/condition21.png

    図:繰り返し条件、および、繰り返し回数の設定

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

以上で、繰り返し条件の定義(条件)が完了しました。

5.2.3.4.1. 繰り返し条件の定義(条件)の結果の確認

保存が完了した後、作成したロジックフローを実行し、結果を確認します。
実行方法は「Swagger(SPEC)から実行する」を、結果の確認方法は「結果を確認する」を参照してください。
今回、新しくフローの入力値を定義したため、実行時に指定するパラメータが追加されます。
ここでは条件の定義が有効であることと、条件と回数の関係性を確認するために、2パターンの実行結果を確認します。
はじめに以下の内容でロジックフローを実行します。
  • max_count - 3
  • message - 3Counts, IM-LogicDesigner
../../../_images/confirm_result_pattern1.png

図:パラメータ設定例(その1)

実行結果として「基礎編 - ファースト・ステップ」で作成したロジックフローの以下の内容が、3回出力されていることを確認してください。
これは「繰り返し」制御要素が、定義された繰り返し条件に従い、現在の繰り返し回数(im_startLoop1.index)が繰り返しを行う回数($input.max_count)以上になるまで繰り返し処理を制御していることを表しています。
../../../_images/confirm_result_flow1.png

図:「繰り返し」制御要素が条件を元に処理を制御するイメージ

次に以下の内容でロジックフローを実行します。
  • max_count - 10
  • message - 10Counts, IM-LogicDesigner
../../../_images/confirm_result_pattern2.png

図:パラメータ設定例(その2)

実行結果として「基礎編 - ファースト・ステップ」で作成したロジックフローの以下の内容が、5回出力されていることを確認してください。
これは「繰り返し」制御要素が、定義された繰り返し条件と繰り返し回数の両方を精査し、先に繰り返し回数(5回)の条件を満たしたため、 繰り返し処理を制御したことを表しています。
../../../_images/confirm_result_flow2.png

図:「繰り返し」制御要素が条件と回数を元に処理を制御するイメージ

この動作仕様は、例えば繰り返し条件に意図せず長大な数を指定されてしまった場合のストッパーとして、 繰り返し回数にフローとして許容できる最大繰り返し回数を定義しておくといった運用が可能です。
以上で、「繰り返し終了条件指定」を利用したロジックフローの繰り返し処理が確認できました。

5.2.3.5. 繰り返し処理対象の指定と値の利用

最後に、繰り返し処理を行う対象を指定し、処理中にその値を利用する方法を説明します。
IM-LogicDesignerでは、一般的なプログラミング言語のように繰り返し処理中の値を利用することができます。
ここでは、ロジックフローの入力値として設定済みの本文(message<string>)を複数指定可能に変更し、指定された本文の数だけ繰り返し処理を行う方法を説明します。
はじめに、ロジックフローの入力値を編集します。
  1. ロジックフロー定義編集画面上部、ヘッダー内の「入出力設定」をクリックし、入出力設定画面を開きます。

    ../../../_images/prepare_target_input1.png

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

  2. 入力として設定済みの「message<string>」をクリックし、選択状態とします。

    ../../../_images/prepare_target_input2.png

    図:messageプロパティの選択

  3. 入力ペイン上部にある「配列型にする」チェックボックスにチェックを入れます。
    チェックを入れたタイミングで、選択していたmessageの型が配列型(string[])に変更されたことを確認してください。
    ../../../_images/prepare_target_input3.png

    図:配列型への変更

  4. 入出力設定画面右下のOKをクリックします。

次に、変更を行った本文(message<string[]>)を繰り返しの対象に設定します。
  1. ロジックフロー定義編集画面上の「繰り返し開始」制御要素をクリックします。

    ../../../_images/target1.png

    図:「繰り返し開始」制御要素の選択

  2. タスク固有設定の項目のうち、以下の項目に設定された内容を消去します。

    • 繰り返し条件
    • 繰り返し回数
    ../../../_images/target2.png

    図:既存の条件、および、回数の削除

  3. 繰り返し対象を設定するため、タスク固有設定の項目のうち「繰り返し対象」の下部にある検索リンクをクリックします。

    ../../../_images/target3.png

    図:繰り返し対象の検索

  4. 繰り返し対象を選択する、出力値の設定画面が表示されます。

    ../../../_images/target4.png

    図:繰り返し対象選択画面

  5. 繰り返しの対象として以下の項目を選択します。

    • 入力<object> - message<string[]>
    ../../../_images/target5.png

    図:繰り返し対象の選択

  6. 設定画面下部の「OK」をクリックします。

  7. 出力値の設定画面が消え、繰り返し対象の項目に以下の値が入力されます。

    • $input/message
    ../../../_images/target6.png

    図:選択した繰り返し対象の確認

最後に、設定した繰り返し対象の値のマッピング設定を行います。
  1. フロー編集画面上の「ログ出力」タスクをクリックした上で、「マッピング設定」をクリックし、マッピング設定画面を開きます。

    ../../../_images/target_mapping1.png

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

  2. 設定済みの以下のマッピング設定を削除します。

    入力(始点) 出力(終点)
    入力<object> - message<string[]> im_logger1<string>
    ../../../_images/target_mapping2.png

    図:既存のマッピング設定の削除

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

    入力(始点) 出力(終点)
    im_startLoop1<object> - item<string> im_logger1<string>
    ../../../_images/target_mapping3.png

    図:マッピング設定の追加

    コラム

    入力として繰り返し開始(im_startLoop1<object>)を利用する方法

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

  5. 同様の手順で、「テキストメール送信」タスクのマッピング設定画面を開き、以下のとおりに設定します。

    • 設定の削除

      入力(始点) 出力(終点)
      入力<object> - message<string[]> im_sendTextMail1<object> - body<string>
    • 設定の追加

      入力(始点) 出力(終点)
      im_startLoop1<object> - item<string> im_sendTextMail1<object> - body<string>
    ../../../_images/target_mapping4.png

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

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

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

以上で、繰り返し対象の指定と、その値の利用の設定が完了しました。

5.2.3.5.1. 繰り返し処理対象の指定と値の利用の結果の確認

保存が完了した後、作成したロジックフローを実行し、結果を確認します。
実行方法は「Swagger(SPEC)から実行する」を、結果の確認方法は「結果を確認する」を参照してください。
今回、フローの入力値を一部変更したため、実行時に指定するパラメータが基礎編のチュートリアルとは異なります。
ここでは本文として以下の3つの文章を設定し、それを元に繰り返し処理が行われることを確認します。
Swagger画面を開き、以下の内容でロジックフローを実行します。
  • max_count - 0

  • message
    • 1Time, IM-LogicDesigner
    • 2Time, IM-LogicDesigner
    • 3Time, IM-LogicDesigner
../../../_images/confirm_result_target.png

図:複数の本文をロジックフローに渡して実行

コラム

パラメータの設定について

今回のパラメータ(JSON)の設定方法は複雑なため、定義方法がわからない場合は以下のテキストをコピーして利用してください。
{
  "max_count": 0,
  "message": [
    "1Time, IM-LogicDesigner",
    "2Time, IM-LogicDesigner",
    "3Time, IM-LogicDesigner"
  ]
}
実行結果として「基礎編 - ファースト・ステップ」で作成したロジックフローの以下の内容が、3回出力されていること、および、設定した3つの文章がそれぞれ1回ずつ出力されていることを確認してください。
これは「繰り返し」制御要素が、定義された繰り返し対象の数だけ繰り返し処理を制御したことを表しています。
今回は3つの文章を設定したため、三度繰り返し実行されました。
以上で、繰り返し処理対象の指定と値の利用の結果の確認ができました。

コラム

繰り返し対象との複合条件

本チュートリアルでは説明を省きましたが、繰り返し対象の設定は「繰り返し条件の定義(回数)」および「繰り返し条件の定義(条件)」との複合条件の設定が可能です。
複数の条件を設定した場合、それらの内一番最初に条件から外れたタイミングで繰り返し処理は終了します。
例:繰り返し回数に3を指定し、繰り返し対象が5つあった場合、繰り返し回数が3回の段階で処理は終了します。