1.4.3 タイマーイベントのタイマールール動的変更
タイマーイベントのタイマールール動的変更の概要について,説明します。
BPMNエディタで設定したタイマールールの内容の一部を,案件ごとに変更できます。これによって,外部のサービスで決定するタイムアウト期限や待機時間を,案件ごとに設定できます。
動的変更するには,プロセスデータを使用します。使用するプロセスデータのキー名は,BPMNエディタで設定します。ただし,プロセスデータを利用するため,開始イベントによる案件投入のタイマールールは変更できません。また,最大実行回数も変更できません。
プロセスデータの値は,イベント発火時刻の決定タイミングで参照します。イベント発火時刻の決定タイミングで指定されたプロセスデータが存在しない場合,BPMNエディタで設定したタイマールールで動作します。設定されるプロセスデータ値は,タイマールールの種類によって異なります。タイマールールの種類によって設定されるプロセスデータについて,以降で説明します。
- 〈この項の構成〉
(1) 固定日時方式(Fixed date and time)の場合
固定日時方式(Fixed date and time)のタイマールールに変更する場合のプロセスデータ値について説明します。
形式
次の形式(ISO 8601の拡張形式)で,プロセスデータに日付と時刻を指定します。
yyyy-MM-ddThh:mm:ss
yyyy:年を4桁で指定します。
MM:月を2桁(01~12)で指定します。
dd:日を2桁(01~31)で指定します。
hh:時を2桁(00~23)で指定します。
mm:分を2桁(00~59)で指定します。
ss:秒を2桁(00~59)で指定します。
ポイント
年のフィールドは必ず4桁で指定してください。また,月,日,時,分,秒のフィールドは必ず2桁で指定してください。
- 正しい指定例
-
2018-01-02T03:04:05
- 誤った指定例
-
2018-1-2T3:4:5
(2) 間隔方式(Duration)の場合
間隔方式(Duration)のタイマールールに変更する場合のプロセスデータ値について説明します。
形式
次の形式(ISO 8601の間隔を指定する形式の一つ)で,プロセスデータに日付と時刻を指定します。
PnyYnmMndDTnhHnmiM
ny:年を整数で指定します。
nm:月を整数で指定します。
nd:日を整数で指定します。
nh:時を整数で指定します。
nmi:分を整数で指定します。
ポイント
- 量が0であることを表す場合
-
整数値とフィールドの指定文字(Y,M,D,H,M)を省略できます。
1時間30分の表記法を次に示します。年,月,日を示すフィールドの指定文字(Y,M,D)を省略できます。
PT1H30M
- 時,および分の量が0であることを表す場合
-
T以降をすべて省略できます。
1か月間の表記法を次に示します。年,日を示すフィールドの指定文字(Y,D),およびT以降を省略できます。
P1M
ただし,すべてのフィールドを省略することはできません。
(3) 定期日時方式(Periodic date and time)の場合
定期日時方式(Periodic date and time)のタイマールールに変更する場合のプロセスデータ値について説明します。
形式
次の形式で,プロセスデータに日付と時刻を指定します。
*-M-dTh:m
M:月を整数(1~12)で指定します。または「*」を指定します。
d:日を整数(1~31)で指定します。または「*」を指定します。
h:時を整数(0~23)で指定します。または「*」を指定します。
m:分を整数(00~59)で指定します。
ポイント
すべての値を取得したいフィールド(月,日,時)には「*」を指定します。「年」のフィールドは,常にすべての値を取得します。
- ある月の15日午前9時00分の表記法
-
*-*-15T9:00
指定された文字列から求められる日時の「秒」の値は0として扱われます。
(4) サブプロセス(マルチインスタンス)でのタイマールール動的変更
サブプロセス(マルチインスタンス)の場合に,タイマールールを動的に変更するときの設定方法について説明します。
サブプロセス(マルチインスタンス)の中にタイマーイベントが定義されている場合,マルチインスタンスのインスタンスごとに異なるプロセスデータ値で,タイマールールを動的変更できます。
BPMNエディタでは,{MIIndex}を付与した形式でプロセスデータキー名を指定します。指定例を次に示します。
- 指定例
-
$STimerDateTime{MIIndex}
実行環境では,リスト型プロセスデータを登録する必要があります。