IM-BPM for Accel Platform IM-BPM チュートリアルガイド 第20版 2024-04-26

4.3.18.5. IM-LogicDesignerタスクを用いて、IM-FormaDesignerで入力したテーブルアイテムの値を扱う

このチュートリアルでは以下の解説を行います。
  • プロセスの開始時に入力した IM-FormaDesignerのテーブルアイテムの値を、「IM-LogicDesignerタスク」に渡す方法
  • 「IM-LogicDesignerタスク」を用いて、 ユーザタスクのフォームとして利用する IM-FormaDesignerのテーブルアイテムに値を反映させる方法
../../../../_images/logicdesigner_task_0401.png
図:概要
IM-FormaDesigner for Accel Platform の詳細については、「IM-FormaDesigner 仕様書」を参照してください。

コラム

このチュートリアルで作成するプロセス定義のサンプルを以下のリンクからダウンロードできます。

このサンプルは「プロセス定義アップロード」機能でプロジェクトにアップロードできます。
アップロード手順は「IM-BPM プロセスデザイナ 操作ガイド」-「プロセス定義のアップロード」を参照してください。

コラム

このチュートリアルで作成するロジックフロー定義のサンプルを以下のリンクからダウンロードできます。

インポート手順は ロジックフロー: 「IM-LogicDesigner ユーザ操作ガイド」-「インポート/エクスポート」を参照してください。

4.3.18.5.1. 事前準備

  1. Formaアプリケーション「edit_forma_variables」をインポートします。

    ../../../../_images/logicdesigner_task_0402.png
    図:使用する入力フォーム

4.3.18.5.2. ロジックフローを作成する

プロセスインスタンス変数からテーブルデータを受け取り、それをもとに新たなテーブルデータを作成しプロセスインスタンス変数に登録する ロジックフローを作成します。
  1. 「開始タスク」、「プロセスインスタンスの変数取得タスク」、「変数操作タスク1」、「変数操作タスク2」、「繰り返し開始タスク」、「変数操作タスク3」、「変数操作タスク4」、「繰り返し終了タスク」、「プロセスインスタンスの変数更新タスク2」、「終了タスク」を配置し、順に接続します。
    ../../../../_images/logicdesigner_task_0403.png
    図:ロジックフロー
  2. ツールバーの「入出力設定」をクリックします。
    ../../../../_images/logicdesigner_task_0404.png
    図:「ツールバー」 - 「入出力設定」
  3. 入力値を以下のように設定します。
    キー名
    processInstanceId <string>
    ../../../../_images/logicdesigner_task_0405.png
    図:「入出力設定」 - 「入力」

    コラム

    入力値として直接プロセスインスタンス変数を指定することも可能ですが、今回はプロセスインスタンスIDのみ入力します。
    ロジックフロー内でプロセスインスタンスIDからプロセスインスタンス変数を取得します。
    この方法には、以下の利点があります。
    • ロジックフローのデバッグ機能を使用する際に実行中のプロセスインスタンスのIDを用いてデバッグを行えること
    • IM-BPMプロセスのIM-LogicDesignerタスクの入力データにはプロセスインスタンスIDのみ設定するだけでよいこと
  4. プロセスインスタンス変数を格納するための変数を設定します。
    変数設定ダイアログを開き、以下の値を追加します。
    キー名
    bpm_input_variables - gt1 - gt1_calendar <date>
    bpm_input_variables - gt1 - gt1_detail <string>
    bpm_input_variables - last_name <string>
    bpm_input_variables - name <string>
    bpm_output_variables - tb1 <map[]>
    bpm_output_variables - fullname <string>
    tb1_obj - tb1_calendar <date>
    tb1_obj - tb1_detail <string>
    ../../../../_images/logicdesigner_task_0406.png
    図:「変数設定」

    コラム

    パラメータに子要素を追加する場合、親要素を選択した状態でメニューの「配下に設置する」にチェックを入れ、追加したい各データ型を選択してください。
    ../../../../_images/logicdesigner_task_0407.png
    図:「変数設定」

    コラム

    変数はJSON形式でも入力できます。
    JSON入力については、「IM-LogicDesigner ユーザ操作ガイド」-「入出力/変数/定数を設定する」 - 「JSON入力ダイアログ詳細」を参照してください。
    {
        "bpm_input_variables": {
            "gt1": [
            {
                "gt1_calendar": null,
                "gt1_detail": ""
            }
            ],
            "last_name": "",
            "first_name": ""
        },
        "bpm_output_variables": {
            "tb1": [
            {
                "tb1_name": "",
                "tb1_calendar": null,
                "tb1_detail": ""
            }
            ]
        },
        "tb1_obj": {
            "tb1_name": "",
            "tb1_calendar": null,
            "tb1_detail": ""
        }
    }
    
  5. プロセスインスタンスIDから、プロセスインスタンス変数を取得します。
    「プロセスインスタンスの変数取得タスク」のマッピング設定を開き以下をマッピングします。
    入力(始点) 出力(終点)
    入力<object> - processInstanceId<string> im_bpmGetProcessVariables1<object> - processInstanceId<string>
    ../../../../_images/logicdesigner_task_0408.png
    図:「プロセスインスタンスの変数取得タスク」 - 「マッピング設定」
  6. 「プロセスインスタンスの変数取得タスク」で取得した変数を ロジックフローの変数に設定します。
    「変数操作タスク1」のマッピング設定を開き以下をマッピングします。
    入力(始点) 出力(終点)
    im_bpmGetProcessVariables1<object> - variablesMap<map> 変数<object> - bpm_input_variables<object>
    ../../../../_images/logicdesigner_task_0409.png
    図:「変数操作タスク1」 - 「マッピング設定」

    コラム

    variablesMap には、key:変数名、value:値としてプロセスインスタンス変数がマップとして格納されています。
    「プロセスインスタンスの変数取得タスク」については、「IM-LogicDesigner仕様書」-「タスク一覧」- 「IM-BPM」 - 「プロセスインスタンスの変数取得」を参照してください。
    マッピングの左右で型が異なりますが、右側に定義されている子階層と同名のキーに対応する値が格納されたobject型のオブジェクトを生成後、右側に渡されます。
    右側のオブジェクトの子階層には IM-BPMプロセスに登録される変数と同じ型・変数名の変数を設定しているため、自動でマッピングされます。
    ../../../../_images/logicdesigner_task_0410.png
  7. 取得した変数を、テーブルデータとして IM-BPMプロセスに返却するための変数に格納します。
    まずは返却用の値のうち、テーブル1行分のデータを作成します。
    「変数操作タスク2」のマッピング設定を開き以下をマッピングします。
    入力(始点) 出力(終点)
    変数<object> - bpm_input_variables<object> - last_name<string> concat : a
    変数<object> - bpm_input_variables<object> - first_name<string> concat : b
    concat : out 変数<object> - bpm_output_variables<object> - tb1_name<string>
    im_startLoop1<object> - item<object> - gt1_calendar<date> 変数<object> - tb1_obj<object> - tb1_calendar<date>
    im_startLoop1<object> - item<object> - gt1_detail<string> 変数<object> - tb1_obj<object> - tb1_detail<string>
    ../../../../_images/logicdesigner_task_0411.png
    図:「変数操作タスク2」 - 「マッピング設定」
    作成した1行分のテーブルデータを格納用の変数に設定します。
    「変数操作タスク3」のマッピング設定を開き以下をマッピングします。
    入力(始点) 出力(終点)
    変数<object> - bpm_output_variables<object> - tb1<object[]> push : array
    変数<object> - tb1_obj<object> tb1_obj<object> - tb1_detail<string>
    push : out 変数<object> - bpm_output_variables<object> - tb1<object[]>
    ../../../../_images/logicdesigner_task_0412.png
    図:「変数操作タスク3」 - 「マッピング設定」
  8. 「プロセスインスタンスの変数更新タスク」のマッピング設定を開き以下をマッピングします。

    入力(始点) 出力(終点)
    入力<object> - processInstanceId<string> im_bpmGetProcessVariables1 - processInstanceId<string>
    変数<object> - bpm_output_variables<object> im_bpmSetProcessVariables1 - variablesMap<map>
    ../../../../_images/logicdesigner_task_0413.png
    図:「プロセスインスタンスの変数更新タスク」 - 「マッピング設定」
  9. 新規保存ボタンをクリックし、以下を設定しロジックフローを保存します。

    • フロー定義ID : logicdesigner_task_forma_tb_item

    • フロー定義名 : 【チュートリアル】logicdesigner_task_forma_tb_item

    • フローカテゴリ :

      • ID : im_logicdesigner-data
      • 名称 : BPMチュートリアル

コラム

4.3.18.5.3. プロセス定義を作成する

  1. 開始イベント、IM-LogicDesignerタスク、ユーザタスク、終了イベントを配置して、順にシーケンスフローで接続します。

    ../../../../_images/logicdesigner_task_0414.png
    図:完成イメージ
  2. 「プロセス」に、プロセス定義キーとプロセス名、処理対象ユーザを設定します。
    余白を選択し、「プロセス」タブの「プロセス定義キー」、「名前」、「処理対象ユーザ」に以下の値を設定します。
    • プロセス定義キー : im_logicdesigner_task_forma_tb_item_process
    • 名前 : formaテーブルデータを扱うプロセス
    • 処理対象ユーザ : aoyagi
      ../../../../_images/logicdesigner_task_0415.png
      図 : 「プロパティ」 - 「プロセス」

  3. 「開始イベント」に、インポートした「IM-FormaDesigner」のアプリケーションを設定します。
    「開始イベント」を選択し、「メインコンフィグ」タブの「フォームキー」に以下の値を設定します。
    • フォームキー : forma:edit_forma_variables
      ../../../../_images/logicdesigner_task_0416.png
      図 : 「開始イベント」 - 「プロパティ」 - 「メインコンフィグ」

  4. 「IM-LogicDesignerタスク」に、作成したロジックフローを設定します。
    「IM-LogicDesignerタスク」を選択し、「メインコンフィグ」タブの「フローID」、「利用するバージョン」に以下の値を設定します。
    • フローID : logicdesigner_task_forma_tb_item
    • 利用するバージョン : 最新バージョンを利用
      ../../../../_images/logicdesigner_task_0417.png
      図 : 「IM-LogicDesignerタスク」 - 「プロパティ」 - 「メインコンフィグ」

  5. 「IM-LogicDesignerタスク」に、入力データを設定します。
    「IM-LogicDesignerタスク」を選択し、「メインコンフィグ」タブから「入力データ」の「追加」をクリックします。
    以下のとおりに項目の値を設定してください。
    • 入力データ
      • 名前 : processInstanceId
      • 値 : ${execution.processInstanceId}
      ../../../../_images/logicdesigner_task_0418.png
      図 : 「入力データ」

  6. 「ユーザタスク」に、インポートした「IM-FormaDesigner」のアプリケーションと担当者を設定します。
    「ユーザタスク」を選択し、「メインコンフィグ」タブの「フォームキー」と「担当者」に以下の値を設定します。
    • 担当者 : aoyagi
    • フォームキー : forma:edit_forma_variables
      ../../../../_images/logicdesigner_task_0419.png
      図 : 「ユーザタスク」 - 「プロパティ」 - 「メインコンフィグ」

  7. メニューバー左上、「ファイル」 から「名前を付けて保存」を選択し、保存します。

4.3.18.5.4. 実行結果を確認する

このチュートリアルで作成したプロセス定義を実行環境にデプロイし実行します。また、実行した結果の確認を行います。
  1. 「プロセス開始一覧」画面にて、プロセス定義名 formaデータを連携するプロセス を開始します。

  2. 開始イベントに設定したFormaアプリケーション「edit_forma_variables」に遷移します。
    適当に入力し、「登録」をクリックします。
    ../../../../_images/logicdesigner_task_0420.png
    図:Formaアプリケーション「edit_forma_variables」
  3. 「タスク一覧」 画面の個人タスクを確認します。
    タスク名「LogicDesigner実行結果を確認」の「処理」をクリックし、タスクを処理します。
  4. フォーム右側のテーブルアイテムに、プロセスの開始時に入力したデータをもとに作成されたデータが入力されていることを確認します。

    ../../../../_images/logicdesigner_task_0421.png
    図:Formaアプリケーション「edit_forma_variables」