IM-BPM for Accel Platform プログラミングガイド 第8版 2020-12-01

4.3. メッセージ

メッセージは「メッセージ開始イベント」 や 「メッセージキャッチイベント」などに送信することで、プロセスインスタンスを開始、および、進めることができます。

4.3.1. メッセージを送信する

メッセージを送信する用途はいくつかあります。
  • プロセス定義のメッセージ開始イベントに送信する。
  • メッセージキャッチイベントにとまっているプロセスインスタンスに送信する。
  • イベントサブプロセスに遷移させるために送信する。
  • メッセージ境界イベントを発火させるために送信する。

4.3.1.1. プロセスインスタンスを開始する

プロセス定義のメッセージ開始イベントに設定された「参照メッセージ」を指定して、メッセージを送信します。
../../../_images/message_1.png
図:メッセージ開始イベント

コラム

メッセージ開始イベントの設定の詳細は「IM-BPM プロセスデザイナ 操作ガイド」 - 「メッセージ開始イベント」を参照してください。

4.3.1.1.1. REST API

メソッド POST
URI %ベースURL%/api/bpm/runtime/process-instances
BODY {‘message’ : ‘%参照メッセージ%’, ‘businessKey’ : ‘%業務キー%’, ‘variables’ : [{‘name’ : ‘%変数名%’, ‘type’ : ‘%変数タイプ%’, ‘variableScope’ : ‘%変数スコープ%’, ‘value’ : ‘%値%’}, ...]}

4.3.1.1.2. JavaEE開発モデル

RuntimeService runtimeService = ProcessEngineFactory.getInstance().getProcessEngine().getRuntimeService();

runtimeService.startProcessInstanceByMessage("%参照メッセージ%");

// 業務キーを設定する場合
runtimeService.startProcessInstanceByMessage("%参照メッセージ%", "%業務キー%");

// 変数を設定する場合
runtimeService.startProcessInstanceByMessage("%参照メッセージ%", %変数Map%);

4.3.1.1.3. スクリプト開発モデル

var runtimeService = new bpm.RuntimeService();

runtimeService.startProcessInstanceByMessage("%参照メッセージ%");

// 変数を設定する場合
var variables = {
   "var1": "string",
   "var2": 123,
   "var3": new Date(),
   "var4": true
};
runtimeService.startProcessInstanceByMessage("%参照メッセージ%", variables);

// 業務キーと変数を設定する場合
runtimeService.startProcessInstanceByMessage("%参照メッセージ%", "%業務キー%", variables);

4.3.1.2. メッセージキャッチイベントにとまっているプロセスインスタンスを進める

メッセージキャッチイベントに設定された「参照メッセージ」と「エグゼキューションID」を指定して、メッセージを送信します。
../../../_images/message_2.png
図:メッセージキャッチイベント

コラム

メッセージキャッチイベントの設定の詳細は「IM-BPM プロセスデザイナ 操作ガイド」 - 「メッセージキャッチイベント」を参照してください。

コラム

エグゼキューションIDの取得方法は「エグゼキューション」 - 「メッセージを送信する際に指定するエグゼキューションを取得する」を参照してください。

4.3.1.2.1. REST API

メソッド PUT
URI %ベースURL%/api/bpm/runtime/executions/{executionId}
BODY {‘action’ : ‘messageEventReceived’, ‘messageName’ : ‘%参照メッセージ%’, ‘variables’ : [{‘name’ : ‘%変数名%’, ‘type’ : ‘%変数タイプ%’, ‘variableScope’ : ‘%変数スコープ%’, ‘value’ : ‘%値%’}, ...]}

4.3.1.2.2. JavaEE開発モデル

RuntimeService runtimeService = ProcessEngineFactory.getInstance().getProcessEngine().getRuntimeService();

runtimeService.messageEventReceived("%参照メッセージ%", "%エグゼキューションID%");

// 変数を設定する場合
runtimeService.messageEventReceived("%参照メッセージ%", "%エグゼキューションID%", %変数Map%);

4.3.1.2.3. スクリプト開発モデル

var runtimeService = new bpm.RuntimeService();

runtimeService.messageEventReceived("%参照メッセージ%", "%エグゼキューションID%");

// 変数を設定する場合
var variables = {
   "var1": "string",
   "var2": 123,
   "var3": new Date(),
   "var4": true
};
runtimeService.messageEventReceived("%参照メッセージ%", "%エグゼキューションID%", variables);

4.3.1.3. イベントサブプロセスに遷移させる

イベントサブプロセスのメッセージ開始イベントに設定している参照メッセージとプロセスインスタンスIDを指定してメッセージを送信します。
../../../_images/message_3.png
図:イベントサブプロセス - メッセージ開始イベント

コラム

イベントサブプロセスの設定の詳細は「IM-BPM プロセスデザイナ 操作ガイド」 - 「イベントサブプロセス」を参照してください。

4.3.1.3.1. REST API

メソッド PUT
URI %ベースURL%/api/bpm/runtime/executions/{executionId} * RESTの表記上はexecutionIdですが、プロセスインスタンスIDを設定してください。
BODY {‘action’ : ‘messageEventReceived’, ‘messageName’ : ‘%参照メッセージ%’, ‘variables’ : [{‘name’ : ‘%変数名%’, ‘type’ : ‘%変数タイプ%’, ‘variableScope’ : ‘%変数スコープ%’, ‘value’ : ‘%値%’}, ...]}

4.3.1.3.2. API

RuntimeService runtimeService = ProcessEngineFactory.getInstance().getProcessEngine().getRuntimeService();

runtimeService.messageEventReceived("%参照メッセージ%", "%プロセスインスタンスID%");

// 変数を設定する場合
runtimeService.messageEventReceived("%参照メッセージ%", "%プロセスインスタンスID%", %変数Map%);

4.3.1.3.3. スクリプト開発モデル

var runtimeService = new bpm.RuntimeService();

runtimeService.messageEventReceived("%参照メッセージ%", "%プロセスインスタンスID%");

// 変数を設定する場合
var variables = {
   "var1": "string",
   "var2": 123,
   "var3": new Date(),
   "var4": true
};
runtimeService.messageEventReceived("%参照メッセージ%", "%プロセスインスタンスID%", variables);

4.3.1.4. メッセージ境界イベントを発火させる

メッセージ境界イベントに設定された「メッセージ参照」と「エグゼキューションID」を指定して、メッセージを送信します。
メッセージキャッチイベントにとまっているプロセスインスタンスを進める方法と同様です。
../../../_images/message_4.png
図:メッセージ境界イベント

コラム

メッセージ境界イベントの設定の詳細は「IM-BPM プロセスデザイナ 操作ガイド」 - 「メッセージ境界イベント」を参照してください。

コラム

エグゼキューションIDの取得方法は「エグゼキューション」 - 「メッセージを送信する際に指定するエグゼキューションを取得する」を参照してください。