4.3. メッセージ¶
メッセージは「メッセージ開始イベント」 や 「メッセージキャッチイベント」などに送信することで、プロセスインスタンスを開始、および、進めることができます。
4.3.1. メッセージを送信する¶
メッセージを送信する用途はいくつかあります。
- プロセス定義のメッセージ開始イベントに送信する。
- メッセージキャッチイベントにとまっているプロセスインスタンスに送信する。
- イベントサブプロセスに遷移させるために送信する。
- メッセージ境界イベントを発火させるために送信する。
4.3.1.1. プロセスインスタンスを開始する¶
プロセス定義のメッセージ開始イベントに設定された「参照メッセージ」を指定して、メッセージを送信します。
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」を指定して、メッセージを送信します。
図:メッセージキャッチイベントコラム
メッセージキャッチイベントの設定の詳細は「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を指定してメッセージを送信します。
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」を指定して、メッセージを送信します。
メッセージキャッチイベントにとまっているプロセスインスタンスを進める方法と同様です。
図:メッセージ境界イベントコラム
メッセージ境界イベントの設定の詳細は「IM-BPM プロセスデザイナ 操作ガイド」 - 「メッセージ境界イベント」を参照してください。コラム
エグゼキューションIDの取得方法は「エグゼキューション」 - 「メッセージを送信する際に指定するエグゼキューションを取得する」を参照してください。