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

4.4. シグナル

シグナルは、シグナル中間イベントなどのシグナルの受信を待機しているプロセスインスタンスを進めることができます。

4.4.1. シグナルを送信する

シグナルを送信する用途はいくつかあります。
  • シグナル中間イベントにとまっているプロセスインスタンスにブロードキャストする。
  • シグナル境界イベントを発火させるためにブロードキャストする。
  • レシーブタスクに送信する。
  • プロセス定義のシグナル開始イベントにブロードキャストする。

4.4.1.1. シグナル中間イベントにとまっているプロセスインスタンスを進める

シグナルをブロードキャストする方法と、特定のイベントへシグナルを送信する方法があります。
../../../_images/signal_1.png
図:シグナル中間イベント

コラム

シグナル中間イベントの設定の詳細は「IM-BPM Designer 操作ガイド」 - 「シグナル中間イベント」を確認してください。

4.4.1.1.1. 参照シグナルを指定してシグナルをブロードキャストする

4.4.1.1.1.1. REST-API
メソッド POST
URI %ベースURL%/api/bpm/runtime/signals
BODY {‘signalName’ : ‘%参照シグナル%’, ‘async’ : false, ‘variables’ : [{‘name’ : ‘%変数名%’, ‘type’ : ‘%変数タイプ%’, ‘variableScope’ : ‘%変数スコープ%’, ‘value’ : ‘%値%’}, ...]}
4.4.1.1.1.2. JavaEE開発モデル
RuntimeService runtimeService = ProcessEngineFactory.getInstance().getProcessEngine().getRuntimeService();

runtimeService.signalEventReceived("%参照シグナル%");

// 変数を設定する場合
runtimeService.signalEventReceived("%参照シグナル%", %変数Map%);

// シグナル受信アクティビティを非同期実行する場合
runtimeService.signalEventReceivedAsync("%参照シグナル%");
4.4.1.1.1.3. スクリプト開発モデル
var runtimeService = new bpm.RuntimeService();

runtimeService.signalEventReceived("%参照シグナル%");

// 変数を設定する場合
var variables = {
   "var1": "string",
   "var2": 123,
   "var3": new Date(),
   "var4": true
};
runtimeService.signalEventReceived("%参照シグナル%", variables);

// シグナル受信アクティビティを非同期実行する場合
runtimeService.signalEventReceivedAsync("%参照シグナル%");

4.4.1.1.2. 特定のシグナル中間イベントへシグナルを送信する

4.4.1.1.2.1. REST-API
メソッド PUT
URI %ベースURL%/api/bpm/runtime/executions/{executionId}
BODY {‘action’ : ‘signalEventReceived’, ‘signalName’ : ‘%参照シグナル%’, ‘variables’ : [{‘name’ : ‘%変数名%’, ‘type’ : ‘%変数タイプ%’, ‘variableScope’ : ‘%変数スコープ%’, ‘value’ : ‘%値%’}, ...]}
参照シグナルを指定しない場合
メソッド PUT
URI %ベースURL%/api/bpm/runtime/executions/{executionId}
BODY {‘action’ : ‘signal’, ‘variables’ : [{‘name’ : ‘%変数名%’, ‘type’ : ‘%変数タイプ%’, ‘variableScope’ : ‘%変数スコープ%’, ‘value’ : ‘%値%’}, ...]}
4.4.1.1.2.2. JavaEE開発モデル
RuntimeService runtimeService = ProcessEngineFactory.getInstance().getProcessEngine().getRuntimeService();

runtimeService.signalEventReceived("%参照シグナル%", "%エグゼキューションID%");

// 変数を設定する場合
runtimeService.signalEventReceived("%参照シグナル%", "%エグゼキューションID%", %変数Map%);

// 参照シグナルを指定しない場合
runtimeService.signal("%エグゼキューションID%");
4.4.1.1.2.3. スクリプト開発モデル
var runtimeService = new bpm.RuntimeService();

runtimeService.signalEventReceived("%参照シグナル%", "%エグゼキューションID%");

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

// 参照シグナルを指定しない場合
runtimeService.signal("%エグゼキューションID%");

4.4.1.2. シグナル境界イベントを発火させるためにブロードキャストする

シグナル境界イベントに設定している参照シグナルを指定してシグナルをブロードキャストします。
../../../_images/signal_2.png
図:シグナル境界イベント

コラム

シグナル境界イベントの設定の詳細は「IM-BPM Designer 操作ガイド」 - 「シグナル境界イベント」を確認してください。
シグナル中間イベントにとまっているプロセスインスタンスを進める方法と同様です。

4.4.1.3. レシーブタスクに送信する

レシーブタスクにとまっているプロセスのエグゼキューションIDを指定してメッセージを送信します。
../../../_images/signal_3.png
図:レシーブタスク

コラム

レシーブタスクの設定の詳細は「IM-BPM Designer 操作ガイド」 - 「レシーブタスク」を確認してください。
シグナル中間イベントにとまっているプロセスインスタンスを進める方法の「参照シグナルを指定しない場合」と同様です。

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

プロセス定義のシグナル開始イベントに設定している参照シグナルを指定してシグナルをブロードキャストします。
../../../_images/signal_4.png
図:シグナル開始イベント

コラム

シグナル開始イベントの設定の詳細は「IM-BPM Designer 操作ガイド」 - 「シグナル開始イベント」を確認してください。
参照シグナルを指定してシグナルをブロードキャストする方法と同様です。