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

5.2.5. 変数を利用したフロー

この章では、ロジックフローの定義で変数を利用する方法を説明します。

5.2.5.1. 変数とは

一般的なプログラミングにおける変数とは、プログラムのソース上で扱われるデータの記憶領域として固有の名称を与えたものです。
IM-LogicDesignerにおける変数もそうした一般的なプログラミングにおける変数と同様に、ロジックフローの中で扱われるデータの記憶領域として固有の名称を与えたものです。
この章では、変数の定義方法と利用方法を説明します。

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

本章では変数の作成、および、その利用方法を確認するため、以下のようなフローを作成します。
  • 変数として、ロジックフロー実行ユーザ名を格納する変数を定義します。
  • ロジックフローの中で、ユーザコンテキストからフロー実行ユーザのユーザ名を取得し、変数に代入します。
  • 変数に代入されたロジックフロー実行ユーザ名を「ログ出力」タスクを利用して、コンソールに出力します。
なお、本章では「基礎編 - ファースト・ステップ」で作成したロジックフローを利用していないことに注意してください。

5.2.5.2. 変数設定画面を開く

変数を利用するためには、予め変数を定義する必要があります。
変数の定義は変数設定画面から行います。
変数設定画面はロジックフロー定義編集画面から開きます。
  1. 「サイトマップ」→「LogicDesigner」→「フロー定義一覧」から、ロジックフロー定義一覧を開きます。
    ロジックフロー定義一覧画面左上の「ロジックフロー新規作成」をクリックします。
  2. ロジックフロー定義編集画面上部、ヘッダ内の「変数設定」をクリックします。

    ../../../_images/view_setting1.png

    図:「変数設定」をクリック

  3. 変数設定画面が表示されます。

    ../../../_images/view_setting2.png

    図:変数設定画面

5.2.5.3. 変数を定義する

次に、新しく変数を定義します。
変数の定義は「入出力設定を定義する」で説明を行った入出力値の定義と同様の方法で利用可能です。
  1. ヘッダ内の「変数設定」をクリックし、変数設定画面を表示します。

  2. 変数設定画面上部にある「+string」をクリックします。

    ../../../_images/add_variable1.png

    図:変数の追加

  3. 画面中央に新しく値が設定されたのを確認し、名称を「executeUser」とします。

    ../../../_images/add_variable2.png

    図:変数の名称変更

  4. 変数設定画面下部の「決定」をクリックします。

以上で、変数の定義が完了しました。

5.2.5.4. 変数へ値を代入する

次に、定義した変数へ実際に値を代入します。
IM-LogicDesignerでは、変数ヘ値を代入するための「変数操作」制御要素を提供しています。
  1. ロジックフロー定義編集画面左部、パレット内の「基本」へカーソルを合わせます。

    ../../../_images/set_variable1.png

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

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

    図:「変数操作」制御要素をクリック

  3. 変数操作を行う制御要素がフロー編集画面上に追加されます。

    ../../../_images/set_variable3.png

    図:「変数操作」制御要素の追加

  4. 「開始」制御要素と、「変数操作」制御要素を接続します。
    (正しく動作させるためのフローの接続は、次章で行います)
    ../../../_images/set_variable4.png

    図:シーケンスの定義(変数操作)

具体的な変数の操作は、「変数操作」制御要素のマッピング設定を用いて行います。
  1. 追加した「変数操作」制御要素をクリックした上で、「マッピング設定」をクリックし、マッピング設定画面を開きます。

    ../../../_images/set_variable5.png

    図:「変数操作」制御要素のマッピング設定

  2. マッピング設定画面上部、ヘッダ内の左上に位置するセレクトボックスをクリックし、以下の項目を選択します。

    • エイリアス一覧 - ユーザコンテキスト
    ../../../_images/set_variable6.png

    図:入力 - ユーザコンテキストの追加

  3. セレクトボックスの中身が変更されたことを確認し、右側にある「入力を追加」をクリックし、ユーザコンテキストを新しく入力として追加します。

    ../../../_images/set_variable7.png

    図:入力:ユーザコンテキストの追加

    コラム

    入力としてユーザコンテキストを利用する

    「変数操作」制御要素の入力値として利用しているユーザコンテキストの詳細は「応用編 - より高度なフロー」 - 「様々な入力情報の利用」 - 「暗黙的な変数の利用」を参照してください。
  4. 作成した変数(executeUser)へ、ユーザコンテキストのユーザ名を代入するため、マッピング設定を以下のとおりに設定します。

    入力(始点) 出力(終点)
    ユーザコンテキスト<object> - userProfile<object> - userName<string> <object>変数 - <string>executeUser
    ../../../_images/set_variable8.png

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

  5. 設定画面右下のOKをクリックし、「変数操作」制御要素のマッピング設定を終了します。

以上で、変数への値の代入が完了しました。

5.2.5.5. 変数を入力として利用する

最後に、変数を実際に他のエレメントの入力として利用する方法を説明します。
  1. ロジックフロー定義編集画面左部、パレット内の「汎用タスク」-「ログ出力」をクリックし、「ログ出力」タスクをフロー編集画面上に追加します。

    ../../../_images/use_variable1.png

    図:「ログ出力」タスクの追加

  2. 以下のエレメント間に線を引きます。

    • 「変数操作」制御要素から「ログ出力」タスク
    • 「ログ出力」タスクから「終了」制御要素
    ../../../_images/use_variable2.png

    図:シーケンス定義(完成)

  3. 「ログ出力」タスクをクリックした上で、「マッピング設定」をクリックし、マッピング設定画面を開きます。

  4. マッピング設定画面の入力としてデフォルトで「変数<object>」、および、その配下に「executeUser<string>」が定義されていることを確認してください。

    ../../../_images/use_variable3.png

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

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

    入力(始点) 出力(終点)
    変数<object> - executeUser<string> <string>im_logger1
    ../../../_images/use_variable4.png

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

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

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

    • フロー定義ID「tutorial_flow_variable

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

    図:ロジックフローの保存

以上で、変数を入力として利用する準備が完了しました。
続いて、作成したフローを実際に実行し、変数が正しく動作することを確認します。
フローの実行、および、結果の確認には「基礎編 - ファースト・ステップ」-「フロールーティングを設定する」と同様に、作成したフローのフロールーティングを定義し、Swaggerを利用して行います。
  1. ロジックフロールーティング情報の各項目に以下の値を入力します。

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

    • メソッド「GET

    • 認証方法「IMAuthentication

    • 認可URI「tutorial/flow_variable/auth

    ../../../_images/use_variable6.png

    図:ロジックフロールーティングの作成

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

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

    ../../../_images/use_variable7.png

    図:Swaggerの表示

  5. 以下の内容でロジックフローを実行します。

    • parameterBody - 設定なし
    ../../../_images/use_variable8.png

    図:パラメータ設定例

  6. 実行結果として、Swaggerを介してロジックフローを実行したユーザ名(本チュートリアルではテナント管理者名)がコンソール上に出力されていることを確認してください。
得られた実行結果は「ユーザコンテキストから取得したユーザ名が正しく変数に格納され、それを参照してログが出力された」ことを表しています。
以上で、変数を利用したフローの作成が完了しました。

5.2.5.6. 応用:変数を活用する

ここでは、これまで説明を行ってきた変数について、より具体的な活用方法の例を紹介します。
ロジックフローを実際に運用していくにあたって、変数の利用を検討する際の一助としてください。
なお、この章で紹介するロジックフローについて、詳細な設定は解説していません。
紹介しているロジックフローの実際の動作や設定項目を確認したい場合は、「付録」-「チュートリアルデータのアーカイブファイル」から該当するロジックフローをインポートしてください。

5.2.5.6.1. Pattern1. ユーザ切り替え

変数の活用方法として、ロジックフローが進行していく上で取得できなくなる値を格納する利用方法があります。
例えば、「メール送信をある特定のユーザで行う(Fromに指定する)ためにユーザ切り替えを利用するが、送信時には必ずCcにロジックフロー実行者のメールアドレスを指定する」ロジックフローを想定します。
以下は「ユーザ切り替え」タスクを利用し送信ユーザへ切り替え(1)、切り替えたユーザのメールアドレスをユーザコンテキストから取得しメールを送信する(2)フロー例です。
../../../_images/advanced_use_pattern1_1.png

図:「ユーザ切り替え」タスクを用いたフロー例

しかし、このフローではロジックフロー実行ユーザの情報(メールアドレス)をユーザコンテキストから取得することができません。
(ユーザコンテキストから取得される値の仕様は「様々な入力情報の利用」-「暗黙的な変数の利用」を参照してください)
../../../_images/advanced_use_pattern1_2.png

図:対象ユーザが切り替わっているため、実行ユーザ情報が取得できない。

ここで変数としてロジックフロー実行ユーザの情報を保持する変数を定義し、ユーザ切り替え前にこの変数へ情報を格納しておく(3)ように、フローを変更します。
../../../_images/advanced_use_pattern1_3.png

図:ユーザ切り替え前に、実行ユーザの情報を格納しておくフロー例

ユーザ切り替え後のメール送信タスクのCcには、変数に保存したアドレスを利用します。
../../../_images/advanced_use_pattern1_4.png

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

これにより、メール送信時に切り替えたユーザとロジックフロー実行ユーザそれぞれのアドレスを指定することが可能になりました。

5.2.5.6.2. Pattern2. 繰り返し処理

変数と「繰り返し処理を利用したフロー」で説明した繰り返し処理の相性は非常に良好です。
ここでは、「入力としてユーザコードの配列を受け取り、ユーザ名をIM-共通マスタから取得し、ユーザ名の配列として出力する」ロジックフローを想定します。
入力としてユーザコードの配列が与えられる(1)ので、繰り返し処理を利用し(2)、一つずつユーザコードを処理します(3)。
../../../_images/advanced_use_pattern2_1.png

図:「繰り返し」制御要素を用いたフロー例

しかし、このままでは取得したユーザ名は次の繰り返し処理が行われた際に上書きされ、保持しておく事ができません。
../../../_images/advanced_use_pattern2_2.png

図:「ユーザプロファイルの取得」で取得された情報が、次の繰り返しでは保持できない

ここで変数として取得したユーザ名を保持しておく配列を定義し、取得したユーザ名を都度この変数に格納していく(4)フローに変更します。
../../../_images/advanced_use_pattern2_3.png

図:取得したユーザ名を「変数操作」で格納していくフロー例

../../../_images/advanced_use_pattern2_4.png

図:「変数操作」のマッピング例

これにより、入力されたユーザコードに対応するユーザ名は変数の配列に格納され、出力へユーザ名の配列(変数)を渡すことが可能になりました。