IM-BPM for Accel Platform IM-BPM 仕様書 第17版 2023-10-01

4.9. IM-LogicDesigner連携

IM-LogicDesigner連携の仕様について説明します。

4.9.1. IM-LogicDesignerタスク

「IM-LogicDesignerタスク」を利用することで、プロセス内からIM-LogicDesignerで作成した任意のロジックフローを呼び出すことが可能です。

4.9.1.1. ロジックフローへの入力データの構築

IM-LogicDesignerタスクのプロパティ「入力データ」を設定することで、ロジックフローに対して変数のデータなどを連携することが可能です。

4.9.1.2. ロジックフローの出力データの返却

IM-LogicDesignerタスクのプロパティ「結果変数を格納する」を設定することで、ロジックフローの実行結果をプロセスインスタンス変数に格納することが可能です。格納される実行結果は、ロジックフロー実行結果オブジェクトです。
ロジックフロー実行結果オブジェクトは、IM-LogicDesignerタスクのプロパティ「結果変数名」に設定した名前のプロセスインスタンス変数に格納されます。プロパティ「結果変数名」を設定しなかった場合は、ロジックフロー実行結果オブジェクトの第1階層のプロパティがそれぞれプロセスインスタンス変数として格納されます。

4.9.1.3. エラーハンドリング

ロジックフローでは、フロー中にエラー終了エレメントを配置することが可能です。エラー終了エレメントは、エラーメッセージプロパティに任意のエラーメッセージを設定できます。
プロセス側ではエラーキャッチイベントを配置することで、IM-LogicDesignerのロジックフローからスローされたエラーをキャッチすることが可能です。スローされたエラーは、そのエラーメッセージに合致するエラーコードが設定されたエラーキャッチイベントにてキャッチされます。このため、ロジックフロー内で複数のエラー終了エレメントが配置されていた場合に、プロセス側ではそれぞれのエラーを判別し、処理を進めることが可能です。
../../../_images/logicdesigner_1.png
図:エラーハンドリングのイメージ

4.9.2. IM-LogicDesignerリスナ

エグゼキューションやユーザタスクのイベントリスナとして、IM-LogicDesignerで作成したロジックフローを設定することが可能です。IM-LogicDesignerリスナを設定することで、イベントの発生時に設定したロジックフローが呼び出されます。

4.9.2.1. ロジックフローへの入力データの構築

入力データ
IM-LogicDesignerリスナのプロパティ「入力データ」を設定することで、ロジックフローに対して変数のデータなどを連携することが可能です。
暗黙オブジェクト
ロジックフローの入力値として、暗黙オブジェクトを受け取ることが可能です。暗黙オブジェクトの詳細については、「暗黙オブジェクト」を参照してください。
下記のjsonをロジックフローの「入出力設定」の「入力」に設定してください。
  • 実行リスナとしてロジックフローを使用する場合
{
  "execution" : {
    "id" : "",
    "processInstanceId" : "",
    "eventName" : "",
    "businessKey" : "",
    "processDefinitionId" : "",
    "parentId" : "",
    "superExecutionId" : "",
    "currentActivityId" : "",
    "currentActivityName" : "",
    "tenantId" : "",
    "variablesLocal" : {},
    "variables" : {}
  }
}
  • タスクリスナとしてロジックフローを使用する場合
{
  "task" : {
    "id" : "",
    "name" : "",
    "description" : "",
    "priority" : 0,
    "processInstanceId" : "",
    "executionId" : "",
    "processDefinitionId" : "",
    "createTime" : 0,
    "taskDefinitionKey" : "",
    "isSuspended" : true,
    "tenantId" : "",
    "formKey" : "",
    "execution" : {
      "id" : "",
      "processInstanceId" : "",
      "eventName" : "",
      "businessKey" : "",
      "processDefinitionId" : "",
      "parentId" : "",
      "superExecutionId" : "",
      "currentActivityId" : "",
      "currentActivityName" : "",
      "tenantId" : "",
      "variablesLocal" : {},
      "variables" : {}
    },
    "eventName" : "",
    "delegationState" : "",
    "owner" : "",
    "assignee" : "",
    "dueDate" : 0,
    "category" : "",
    "candidates" : [{
      "type": "",
      "userId": "",
      "groupId": "",
      "taskId": "",
      "processDefinitionId": "",
      "processInstanceId": ""
    }],
    "variablesLocal" : {},
    "variables" : {}
  }
}
../../../_images/logicdesigner_2.png
図:ロジックフローの「入出力設定」のイメージ
createTimedueDate は「型を変換」から型を date に変換してください。
../../../_images/logicdesigner_3.png
図:「型を変換」のイメージ

4.9.2.2. ロジックフローの出力データの返却

IM-LogicDesignerリスナのプロパティ「結果変数を格納する」を設定することで、ロジックフローの実行結果をプロセスインスタンス変数に格納することが可能です。格納される実行結果は、ロジックフロー実行結果オブジェクトです。
ロジックフロー実行結果オブジェクトは、IM-LogicDesignerリスナのプロパティ「結果変数名」に設定した名前のプロセスインスタンス変数に格納されます。プロパティ「結果変数名」を設定しなかった場合は、ロジックフロー実行結果オブジェクトの第1階層のプロパティがそれぞれプロセスインスタンス変数として格納されます。

4.9.2.3. エラーハンドリング

IM-LogicDesignerリスナにおいては、エラーキャッチイベントでエラーをハンドリングできません。
ロジックフローがエラー終了エレメントで終了した場合、例外が発生し、トランザクションが全てロールバックされます。