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

4.4. シグナル

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

4.4.1. シグナルを送信する

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

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

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

コラム

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

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 プロセスデザイナ 操作ガイド」 - 「シグナル境界イベント」を参照してください。
シグナルキャッチイベント にとまっているプロセスインスタンスを進める方法と同様です。

4.4.1.3. 受信タスクに送信する

受信タスクにとまっているプロセスのエグゼキューションIDを指定して、メッセージを送信します。
シグナルキャッチイベントにとまっているプロセスインスタンスを進める」 の 「参照シグナルを指定しない場合」と同様の手段です。
../../../_images/signal_3.png
図:受信タスク

コラム

受信タスクの設定の詳細は「IM-BPM プロセスデザイナ 操作ガイド」 - 「受信タスク」を参照してください。

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

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

コラム

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