4.4. シグナル¶
シグナルは、シグナル中間イベントなどのシグナルの受信を待機しているプロセスインスタンスを進めることができます。
4.4.1. シグナルを送信する¶
シグナルを送信する用途はいくつかあります。
- シグナル中間イベントにとまっているプロセスインスタンスにブロードキャストする。
- シグナル境界イベントを発火させるためにブロードキャストする。
- レシーブタスクに送信する。
4.4.1.1. シグナル中間イベントにとまっているプロセスインスタンスを進める¶
シグナル中間イベントに設定している参照シグナルを指定してシグナルをブロードキャストします。
REST-API
メソッド POST URI %ベースURL%/runtime/signals BODY {‘signalName’ : ‘%参照シグナル%’, ‘async’ : false, ‘variables’ : [{‘name’ : ‘%変数名%’, ‘type’ : ‘%変数タイプ%’, ‘variableScope’ : ‘%変数スコープ%’, ‘value’ : ‘%値%’}, ...]}
API
RuntimeService runtimeService = ProcessEngineFactory.getInstance().getProcessEngine().getRuntimeService(); runtimeService.signalEventReceived("%参照シグナル%"); // 変数を設定する場合 runtimeService.signalEventReceived("%参照シグナル%", %変数Map%); // 非同期でシグナルを送信する場合 runtimeService.signalEventReceivedAsync("%参照シグナル%");
プロセスインスタンスを指定してシグナルを送信する場合
REST-API
メソッド PUT URI %ベースURL%/runtime/executions/{executionId} BODY {‘action’ : ‘signalEventReceived’, ‘signalName’ : ‘%参照シグナル%’, ‘variables’ : [{‘name’ : ‘%変数名%’, ‘type’ : ‘%変数タイプ%’, ‘variableScope’ : ‘%変数スコープ%’, ‘value’ : ‘%値%’}, ...]}
参照シグナルを指定しない場合
メソッド PUT URI %ベースURL%/runtime/executions/{executionId} BODY {‘action’ : ‘signal’, ‘variables’ : [{‘name’ : ‘%変数名%’, ‘type’ : ‘%変数タイプ%’, ‘variableScope’ : ‘%変数スコープ%’, ‘value’ : ‘%値%’}, ...]}
API
RuntimeService runtimeService = ProcessEngineFactory.getInstance().getProcessEngine().getRuntimeService(); runtimeService.signalEventReceived("%参照シグナル%", "%エグゼキューションID%"); // 変数を設定する場合 runtimeService.signalEventReceived("%参照シグナル%", "%エグゼキューションID%", %変数Map%); // 参照シグナルを指定しない場合 runtimeService.signal("%エグゼキューションID%");
4.4.1.2. シグナル境界イベントを発火させるためにブロードキャストする¶
シグナル境界イベントに設定しているシグナル参を指定してシグナルをブロードキャストします。
シグナル中間イベントにとまっているプロセスインスタンスを進める方法と同様です。
4.4.1.3. レシーブタスクに送信する¶
レシーブタスクにとまっているプロセスのエグゼキューションIDを指定してメッセージを送信します。
シグナル中間イベントにとまっているプロセスインスタンスを進める方法の「参照シグナルを指定しない場合」と同様です。