IM-BPM for Accel Platform IM-BPM チュートリアルガイド 第18版 2021-04-01

4.4.1.1. 承認ノードの処理対象者をロジックフローで指定する

このチュートリアルでは、申請タスクで連携したワークフローに対して、承認ノードの処理対象者を動的に指定する方法を解説します。
処理対象者の動的な指定については、処理対象者プラグインをロジックフローを利用して記述することで行います。
指定する対象のユーザについては、ユーザタスク処理時に画面から入力したユーザとユーザタスクを処理したユーザ自身の2人とします。
チュートリアルで作成するものは以下の4つです。
  • プロセス定義 (IM-BPM)
    • ユーザタスクと申請タスクを配置し、ワークフローと連携します。
    • 画面から入力された処理対象者情報をプロセスの変数情報に保持します。
  • Formaアプリケーション(IM-FormaDesigner)
    • ユーザタスクの処理画面として使用します。
    • 処理対象者情報を画面から入力させます。
  • ロジックフロー(IM-LogicDesigner)
    • ワークフローから処理対象者プラグインとして利用します。
    • プロセスの変数情報から処理対象者情報を取得して返却します。
  • ワークフローのルート定義・フロー定義 (IM-Workflow)
    • 申請タスクによって申請されます。
    • 承認ノード到達時、処理対象者プラグインとしてロジックフローと連携します。
../../../../_images/approve_target_logicdesigner_0000.png
図:概要

注意

このチュートリアルで利用している、プロセス/ワークフロー/ロジックフロー間の連携機能は、IM-BPM for Accel Platform 2018 Summer(Tiffany) 以降のバージョンで動作します。

コラム

このチュートリアルで作成する各種定義のサンプルを以下のリンクからダウンロードできます。
これらのサンプルは、各アプリケーションの機能でインポート、または、アップロードして利用可能です。
詳細な手順については、以下のリンク先を参照してください。
インポート、または、アップロードは、上記の順番で実行してください。
ロジックフローのインポートよりも前に、ロジックフロー管理テーブルデータやルート定義のインポートを行った場合、正しくデータが連携しません。

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

プロセスエディタを利用して、「ユーザタスク」と「申請タスク」を持ちワークフローと連携するプロセス定義を作成します。
ユーザタスクの処理画面として、Formaアプリケーションを使用します。

4.4.1.1.1.1. エレメントを配置する

../../../../_images/approve_target_logicdesigner_0001.png
図:完成イメージ
  1. 開始イベント、ユーザタスク、申請タスク、終了イベントを配置してシーケンスフローで接続します。

4.4.1.1.1.2. ユーザタスクのプロパティを設定する

../../../../_images/approve_target_logicdesigner_0002.png
図:「ユーザタスク」 - 「プロパティ」 - 「基本情報」/「メインコンフィグ」
  1. ユーザタスクのプロパティエリアにて「基本情報」タブを表示します。

  2. 「ID」に select_target を入力します。
    このチュートリアルでは、ここで入力したIDに紐づく変数から、このユーザタスクを処理したユーザを取得します。
  3. 「メインコンフィグ」タブを表示します。

  4. 「処理対象グループ」に im_bpm_user を入力します。

  5. 「フォームキー」に forma:app_select_target を入力します。
    このチュートリアルでは、後ほど app_select_target というアプリケーションIDを持つFormaアプリケーションを作成します。

4.4.1.1.1.3. 申請タスクのプロパティを設定する

../../../../_images/approve_target_logicdesigner_0003.png
図:「申請タスク」 - 「プロパティ」 - 「メインコンフィグ」
  1. 申請タスクのプロパティエリアにて「メインコンフィグ」タブを表示します。

  2. 「アプリケーション」にて IM-Workflow を選択します。

  3. 「フローID」に flow_target_ld を入力します。
    このチュートリアルでは、後ほど flow_target_ld というIDを持つフロー定義を作成します。
  4. 「案件名」に 承認ノード処理対象者チュートリアル を入力します。

  5. 「申請実行者コード」に aoyagi を入力します。

  6. 「申請権限者コード」に aoyagi を入力します。

4.4.1.1.2. Formaアプリケーションを作成する

画面から処理対象者を指定するため、Formaアプリケーションを作成します。
「サイトマップ」→「Forma管理画面」→「アプリ一覧」から「アプリケーション一覧」画面を表示し、「登録」をクリックしてアプリケーションの作成を開始します。

4.4.1.1.2.1. アプリケーションの基本情報を入力する

../../../../_images/approve_target_logicdesigner_0004.png
図:「アプリケーション登録」
  1. 「アプリケーションID」に app_select_target を入力します。
    プロセス定義の作成時、ユーザタスクのプロパティ「フォームキー」に指定したものです。
  2. 「アプリケーション種別」にて 標準 を選択します。

  3. 「有効日付(開始)」に 2018/01/01 を入力します。

  4. 「アプリケーション名」に 【チュートリアル】処理対象者選択 を入力します。

  5. 「登録」をクリックして先に進みます。

コラム

Formaアプリケーションの基本情報については、「IM-FormaDesigner 作成者操作ガイド」-「IM-FormaDesigner のアプリケーションの基本情報を設定する」を参照してください。

4.4.1.1.2.2. フォームを編集する

../../../../_images/approve_target_logicdesigner_0005.png
図:完成イメージ(フォーム)
  1. 「ツールキット」を開き、「共通マスタアイテム」 - 「ユーザ選択」アイテムをドラッグし、フォームに配置します。
    アイテムのプロパティは特に変更する必要はありませんが、「フィールド識別ID」が userCd1 であることを確認してください。
  2. 「ツールキット」 - 「ボタンアイテム」 - 「ボタン(登録)」アイテムをドラッグし、フォームに配置します。

  3. 「更新」をクリックしてフォームを更新します。

コラム

フォーム・デザイナの詳細については、「IM-FormaDesigner 作成者操作ガイド」-「「フォーム・デザイナ」画面の各部の名称と機能」を参照してください。

4.4.1.1.2.3. テーブルを登録する

  1. 以下のいずれかの方法で「フォーム設定」画面を表示します。

    • 「フォーム編集」画面から「戻る」リンクをクリックして「フォーム一覧」画面に移動し、もう一度 「戻る」リンクをクリックします。
    • 「サイトマップ」→「Forma管理画面」→「アプリ一覧」をクリックし、アプリケーションID「 app_select_target 」の編集アイコンをクリックします。
  2. 「テーブル設定」タブをクリックします。

  3. 「登録」をクリックします。

    ../../../../_images/approve_target_logicdesigner_0006.png
    図:「テーブル設定」
  4. 「ユーザコード」項目のデータサイズに 100 を入力します。

  5. 「登録」をクリックして、テーブルを登録します。

コラム

テーブルの詳細については、「IM-FormaDesigner 作成者操作ガイド」-「テーブルを設定する」を参照してください。

4.4.1.1.2.4. 権限を設定する

  1. 「サイトマップ」→「Forma管理画面」→「アプリ一覧」から「アプリケーション一覧」画面を表示します。

  2. アプリケーションID「 app_select_target 」の編集アイコンをクリックします。

  3. 「権限設定」タブをクリックします。

  4. +ロール」をクリックします。

  5. 「追加」をクリックします。

  6. 「ロール検索」ダイアログにて、「 IM-BPMユーザ(im_bpm_user)」ロールを検索して選択し、「決定」をクリックします。

  7. 追加された「IM-BPMユーザ(im_bpm_user)」ロールの「権限」セレクトボックスにて、「登録・更新・削除可能」を選択します。

    ../../../../_images/approve_target_logicdesigner_0007.png
    図:「権限設定」

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

ワークフローの処理対象者プラグインを、ロジックフローにて記述します。
入力としてプロセスの変数情報が渡されるので、処理対象者情報を取り出して出力に設定するのが、このロジックフローの役割です。
「サイトマップ」→「LogicDesigner」→「フロー定義一覧」から「ロジックフロー定義一覧」を表示し、「ロジックフロー新規作成」をクリックしてロジックフローの作成を開始します。
../../../../_images/approve_target_logicdesigner_0013.png
図:完成イメージ(ロジックフロー)

4.4.1.1.3.1. 入出力設定を行う

  1. 「入出力設定」をクリックします。

  2. 「入力」ペインにて、「JSON入力」をクリックします。

    ../../../../_images/approve_target_logicdesigner_0008.png
    図:「入出力設定」 - 「JSON入力」
  3. 「null値の型」にて map を選択します。

  4. 「JSON」の内容を、以下の文字列で置き換えます。

    {
       "imbpmExecutionInfo": {
         "id": "",
         "processInstanceId": "",
         "businessKey": "",
         "processDefinitionId": "",
         "superExecutionId": "",
         "currentActivityId": "",
         "currentActivityName": "",
         "variablesLocal": null,
         "variables": null
       }
    }
    
    ../../../../_images/approve_target_logicdesigner_0009.png
    図:「サンプルJSONの入力」
  5. 「決定」をクリックします。

  6. 「出力」ペイン上部にある、「+string」をクリックします。

  7. 「出力」ペイン下部に新しく値が設定されたのを確認し、名称に userCds を入力します。

  8. 追加した userCds を選択している状態で、「配列型にする」チェックボックスをオンにします。

    ../../../../_images/approve_target_logicdesigner_0010.png
    図:「入出力設定」 (設定後)
  9. 「決定」をクリックします。

コラム

ロジックフローの入出力設定については、「IM-LogicDesigner ユーザ操作ガイド」-「入出力/変数/定数を設定する」を参照してください。

また、処理対象者プラグインの入出力設定については、「IM-Workflow 管理者操作ガイド」-「ロジックフローの入出力設定」を参照してください。
このチュートリアルではIM-Workflowの案件情報を利用しないため、IM-BPMが提供する拡張入力値のみを定義しています。

4.4.1.1.3.2. 定数設定を行う

  1. 「定数設定」をクリックします。

  2. +定数を追加」をクリックします。

  3. 「定数ID」に EL_STRING を入力します。

  4. 「定数値」に以下の値を入力します。

    ${$input.imbpmExecutionInfo.variables.im_bpm_system_variables.im_operation_users["select_target"]}
    
    ../../../../_images/approve_target_logicdesigner_0011.png
    図:「定数設定」 (設定後)
  5. 「決定」をクリックします。

コラム

ロジックフローの定数設定については、「IM-LogicDesigner ユーザ操作ガイド」-「入出力/変数/定数を設定する」を参照してください。

4.4.1.1.3.3. 変数設定を行う

  1. 「変数設定」をクリックします。

  2. +string」をクリックします。

  3. 下部に新しく値が設定されたのを確認し、名称に tempUserCds を入力します。

  4. 追加した tempUserCds を選択している状態で、「配列型にする」チェックボックスをオンにします。

    ../../../../_images/approve_target_logicdesigner_0012.png
    図:「変数設定」(設定後)
  5. 「決定」をクリックします。

コラム

ロジックフローの変数設定については、「IM-LogicDesigner ユーザ操作ガイド」-「入出力/変数/定数を設定する」を参照してください。

4.4.1.1.3.4. エレメントのマッピングを行う

  1. 「開始」エレメントから「終了」エレメントに向けて、線を接続します。

    ../../../../_images/approve_target_logicdesigner_0013.png
    図:エレメントの接続
  2. 「終了」エレメントをダブルクリックし、「マッピング設定」を表示します。

    ../../../../_images/approve_target_logicdesigner_0014.png
    図:「終了」エレメント - 「マッピング設定」
  3. 入力 variables<map> をクリックして選択し、「+キーを追加」をクリックします。

  4. variables<map> 配下にキーが追加されたのを確認し、名称に userCd1 を入力します。

  5. 「関数選択」セレクトボックスにて、push を選択し、「+関数を追加」をクリックします。

  6. 変数 tempUserCds<string[]> から、追加したpush関数の入力「array」に対して線を引きます。

  7. 入力 userCd1 から、追加したpush関数の入力「value」に対して線を引きます。

  8. 「関数選択」セレクトボックスにて、el を選択し、「+関数を追加」をクリックします。

  9. 定数 EL_STRING から、追加したel関数の入力「value」に対して線を引きます。

  10. 「関数選択」セレクトボックスにて、push を選択し、「+関数を追加」をクリックします。

  11. 1つ目のpush関数の出力「out」から、2つ目のpush関数の入力「array」に対して線を引きます。

  12. el関数の出力「out」から、2つ目のpush関数の入力「value」に対して線を引きます。

  13. 2つ目のpush関数の出力「out」から、出力 userCds<string[]> に対して線を引きます。

    ../../../../_images/approve_target_logicdesigner_0015.png
    図:「終了」エレメント - 「マッピング設定」(設定後)
  14. 「決定」をクリックします。

コラム

エレメントのマッピングについては、「IM-LogicDesigner ユーザ操作ガイド」-「エレメントのマッピングを設定する」を参照してください。
push関数については、「IM-LogicDesigner仕様書」-「push」を参照してください。
el関数については、「IM-LogicDesigner仕様書」-「el」を参照してください。
IM-LogicDesignerにおけるEL式については、「IM-LogicDesigner仕様書」-「EL式」を参照してください。

コラム

ここでは、入力に与えられたオブジェクトから以下の2つの値を取り出して、出力にマッピングしています。
  • 変数「 userCd1 」の値
    Formaアプリケーションの識別ID「 userCd1 」のフィールドの値が、連携先プロセスの変数に格納されたものです。
  • 暗黙オブジェクト「 im_operation_users 」の値
    システム変数「 im_bpm_system_variables 」内に、Map型の暗黙オブジェクトとして存在しています。
    ユーザタスクのプロパティに設定したIDをキーとして与えることで、タスクを処理したユーザコードを取得できます。
    このチュートリアルでは、IDが「 select_target 」のユーザタスクを処理したユーザコードを、el関数を利用したEL式で取得しています。
暗黙オブジェクトについては、「IM-BPM 仕様書」-「EL式」を参照してください。

4.4.1.1.3.5. 新規保存を行う

  1. 「新規保存」をクリックします。

  2. 「フロー定義ID」に workflow_target_plugin を入力します。

  3. 「フロー定義名」 - 「 標準 」に 【チュートリアル】BPM処理対象者プラグイン を入力します。

  4. 「フローカテゴリ」を検索し、 Sample を選択します。

    ../../../../_images/approve_target_logicdesigner_0016.png
    図:「新規保存」
  5. 「決定」をクリックします。

コラム

ここで設定した「フロー定義名」は、ワークフローの「履歴参照」画面などに処理者として表示されます。

4.4.1.1.4. ワークフローのルート定義・フロー定義を作成する

作成したロジックフローをワークフロー「ロジックフロー管理」に登録して、処理対象者プラグインとして指定できるようにします。
その後、ワークフローのルート定義・フロー定義を作成します。
ルート定義の作成時、承認ノードの処理対象者プラグインとして作成したロジックフローを指定します。

4.4.1.1.4.1. ロジックフローを管理する

  1. 「サイトマップ」→「ワークフロー」→「ワークフロー管理者」→「ロジックフロー管理」から、「ロジックフロー管理」画面を表示します。

    ../../../../_images/approve_target_logicdesigner_0017.png
    図:「ロジックフロー管理」
  2. 作成した「【チュートリアル】BPM処理対象者プラグイン」について、「common-settings」アイコンをクリックします。

  3. 「リソース設定」ダイアログにて、セレクトボックスで「処理対象者プラグイン」を選択します。

  4. 左ペインに表示されている「処理権限者」をクリックして選択します。

  5. 中央に表示されている right_button をクリックし、「処理権限者」を右ペインに移動します。

    ../../../../_images/approve_target_logicdesigner_0018.png
    図:「リソース設定」
  6. 「更新」をクリックします。

  7. 「【チュートリアル】BPM処理対象者プラグイン」が、処理対象者プラグイン(処理権限者)として利用可能になりました。

    ../../../../_images/approve_target_logicdesigner_0019.png
    図:「ロジックフロー管理」(設定後)

コラム

ロジックフローの管理については、「IM-Workflow 管理者操作ガイド」-「各機能で利用するロジックフローを管理する」を参照してください。

4.4.1.1.4.2. ルート定義を作成する

../../../../_images/approve_target_logicdesigner_0022.png
図:完成イメージ(ルート定義)
  1. 「サイトマップ」→「ワークフロー」→「ワークフロー管理者」→「マスタ定義」→「ルート定義」から、「ルート定義」画面を表示します。

  2. 「新規作成」をクリックします。

  3. 「ルートID」に、 route_target_ld を入力します。

  4. 「ルート名」に表示されているロケール分すべてに、 【チュートリアル】承認ノード処理対象者指定ルート を入力します。

    ../../../../_images/approve_target_logicdesigner_0020.png
    図:「ルート定義 - 新規作成」
  5. 「登録」をクリックします。

  6. 表示されている「バージョン」タブ画面にて、「新規作成」をクリックします。

  7. 「基本情報」タブ画面にて、「バージョン期間」 の範囲開始日に 2018/01/01 を入力します。

  8. 「バージョン有効/無効」にて、「 有効 」を選択します。

    ../../../../_images/approve_target_logicdesigner_0021.png
    図:「ルート定義 - バージョン - 新規作成」 - 「基本情報」
  9. 「ルート詳細」タブをクリックします。

  10. 「承認/処理」ノードをドラッグし、ドロップして配置します。

  11. 「申請/処理開始」ノードから「承認/処理」ノードに線を引きます。

  12. 同様に、「承認/処理」ノードから「終了」ノードに線を引きます。

    ../../../../_images/approve_target_logicdesigner_0022.png
    図:「ルート定義 - バージョン - 新規作成」 - 「ルート詳細」
  13. 「申請/処理開始」ノードをクリックし、選択します。

  14. 右側に表示されたノード詳細エリアにて、「処理対象者」の「検索」をクリックします。

  15. 表示された「処理対象者」一覧にて、「ユーザ」を選択し、虫眼鏡アイコンをクリックします。

    ../../../../_images/approve_target_logicdesigner_0023.png
    図:「ルート定義 - バージョン - 新規作成」 - 「申請/処理開始」ノード詳細
  16. 表示された「ユーザ検索」ダイアログにて、「青柳辰巳」を検索して選択し、「決定」をクリックします。

  17. 右側に表示されたノード詳細エリアにて、「処理対象者」に「青柳辰巳」が設定されているのを確認します。

    ../../../../_images/approve_target_logicdesigner_0024.png
    図:「ルート定義 - バージョン - 新規作成」 - 「申請/処理開始」ノード詳細(設定後)
  18. 「承認/処理」ノードをクリックし、選択します。

  19. 右側に表示されたノード詳細エリアにて、「処理対象者」の「検索」をクリックします。

  20. 表示された「処理対象者」一覧にて、「ロジックフロー(ユーザ)」を選択し、虫眼鏡アイコンをクリックします。

    ../../../../_images/approve_target_logicdesigner_0025.png
    図:「ルート定義 - バージョン - 新規作成」 - 「承認/処理」ノード詳細
  21. 表示された「ロジックフロー検索」ダイアログにて、 「【チュートリアル】BPM処理対象者プラグイン」の「選択」チェックボックスをオンにします。

    ../../../../_images/approve_target_logicdesigner_0026.png
    図:「ロジックフロー検索」選択イメージ
  22. 「決定」をクリックします。

  23. 右側に表示されたノード詳細エリアにて、「処理対象者」に「【チュートリアル】BPM処理対象者プラグイン」が設定されているのを確認します。

    ../../../../_images/approve_target_logicdesigner_0027.png
    図:「ルート定義 - バージョン - 新規作成」 - 「承認/処理」ノード詳細(設定後)
  24. 「登録」をクリックします。

コラム

ルート定義の作成については、「IM-Workflow 管理者操作ガイド」-「ルート定義を登録・設定する」を参照してください。
ロジックフローの選択については、「IM-Workflow 管理者操作ガイド」-「利用するロジックフローを選択する」を参照してください。

4.4.1.1.4.3. フロー定義を作成する

  1. 「サイトマップ」→「ワークフロー」→「ワークフロー管理者」→「マスタ定義」→「フロー定義」から、「フロー定義」画面を表示します。

  2. 「新規作成」をクリックします。

  3. 「フローID」に、 flow_target_ld を入力します。
    プロセス定義の作成時、申請タスクのプロパティ「フローID」に指定したものです。
  4. 「フロー名」に表示されているロケール分すべてに、 【チュートリアル】承認ノード処理対象者指定フロー を入力します。

    ../../../../_images/approve_target_logicdesigner_0028.png
    図:「フロー定義 - 新規作成」
  5. 「登録」をクリックします。

  6. 表示されている「バージョン」タブ画面にて、「新規作成」をクリックします。

  7. 「基本情報」タブ画面にて、「バージョン期間」 の範囲開始日に 2018/01/01 を入力します。

  8. 「バージョン有効/無効」にて、「有効」を選択します。

  9. 「コンテンツ」にて「検索」をクリックし、「スクリプト開発モデル」を選択します。

  10. 「ルート」にて「検索」をクリックし、「【チュートリアル】承認ノード処理対象者指定ルート」を選択します。

    ../../../../_images/approve_target_logicdesigner_0029.png
    図:「フロー定義 - バージョン - 新規作成」 - 「基本情報」
  11. 「登録」をクリックします。

コラム

フロー定義の作成については、「IM-Workflow 管理者操作ガイド」-「フロー定義を登録・設定する」を参照してください。
また、このチュートリアルではルート定義とフロー定義は作成していますが、コンテンツ定義についてはIM-Workflowサンプルの「スクリプト開発モデル」を利用しています。

4.4.1.1.5. 実行結果を確認する

作成したプロセスを開始し、ユーザタスクを処理してユーザを指定します。
申請タスクで申請されたワークフローの処理対象者が、ユーザタスクを処理したユーザと指定したユーザの2人であることを確認します。

4.4.1.1.5.1. プロセスを開始し、ユーザタスクを処理する

  1. 作成したプロセスを実行環境にデプロイします。

  2. 「青柳辰巳」でログインします。

  3. 「プロセス開始一覧」画面を表示し、デプロイしたプロセスを開始します。

  4. 「タスク一覧」画面を表示し、「グループタスク」に存在する「ユーザ指定」タスクを担当にします。

  5. 「個人タスク」に移動した「ユーザ指定」タスクを処理します。

    ../../../../_images/approve_target_logicdesigner_0030.png
    図:「個人タスク」 - 「ユーザ指定」タスク - 「処理」
  6. 作成したFormaアプリケーション「【チュートリアル】処理対象者選択」のフォームが表示されます。
    「ユーザ名」にて「検索」を行い、「 上田辰男 」を選択します。
    ../../../../_images/approve_target_logicdesigner_0031.png
    図:「【チュートリアル】処理対象者選択」入力画面
  7. 「登録」をクリックします。

4.4.1.1.5.2. ワークフローの処理対象者を確認する

  1. 「処理済一覧」画面を表示し、「処理済タスク」に存在する「ユーザ指定」タスクの「process-history」アイコンをクリックします。

    ../../../../_images/approve_target_logicdesigner_0032.png
    図:「処理済タスク」 - 「ユーザ指定」タスク - 「履歴」
  2. 「履歴」画面が表示されます。
    「申請タスク」に記載されている、「【チュートリアル】承認ノード処理対象者指定フロー」リンクをクリックします。
    ../../../../_images/approve_target_logicdesigner_0033.png
    図:「履歴」 - 「申請」タスク - ワークフロー「履歴参照」へのリンク
  3. ワークフローの「履歴参照」ダイアログが表示されます。
    「承認/処理」ノードの「処理者」列に表示されている「【チュートリアル】BPM処理対象者プラグイン」リンクをクリックします。
    ../../../../_images/approve_target_logicdesigner_0034.png
    図:ワークフロー「履歴参照」 - 「承認/処理」ノード - 「処理対象者状況確認」へのリンク
  4. 「処理対象者状況確認」ダイアログが表示されます。
    以下の2人のユーザが表示されていることを確認します。
    • 上田辰男
    • 青柳辰巳
    ../../../../_images/approve_target_logicdesigner_0035.png
    図: 「処理対象者状況確認」