IM-BPM for Accel Platform IM-BPM 仕様書 第3版 2016-12-01

4.5. プロセスの実行

プロセスの実行に関する仕様について説明します。

4.5.1. トランザクション

プロセスの実行を行う際のデータベーストランザクションはJTAを用いてトランザクションの制御が行われます。
プロセス実行前に、ユーザが明示的にトランザクションを開始している場合には、そのトランザクションを継続して利用します。
プロセス実行時にトランザクションが開始されていない場合には、内部でトランザクションの開始、終了(コミット)が行われます。

4.5.1.1. トランザクションの範囲

データベーストランザクション及び、プロセスの処理の範囲は、プロセス定義の内容により変わります。
プロセスインスタンスの処理開始地点から、待機を伴うアクティビティまでの間がトランザクションの範囲となります。
待機を伴うアクティビティは以下の内容を指します。
  • ユーザタスク
  • 起票タスク
  • 申請タスク
  • メッセージキャッチイベント
  • タイマーイベント
  • シグナルイベント
また、ParallelGateway (並列ゲートウェイ) において、並行処理が発生した場合にもトランザクション範囲は変わります。
並行処理では、別スレッド、別トランザクションにより処理が行われます。
その為、別スレッドで動作するプロセスは別のトランザクションにて管理されます。
タスクには、非同期実行オプションが設定可能です。
非同期実行オプションが設定されている場合、プロセスインスタンスの処理開始地点から、非同期実行オプションが指定されているタスクまでの間は同一トランザクションとなります。
非同期実行は、別スレッド(または別のAPサーバ上)で実行されます、その為トランザクションは別途制御されます。

4.5.1.2. タスク失敗時のトランザクション

サービスタスク、IM-LogicDesignerタスク等の処理中に何らかの例外が発生した場合、プロセスは指定回数リトライを行います。
指定回数分リトライに失敗した場合には、サービスタスクの実行に失敗したという内容をデータベースへコミットし処理を中断します。
この動作は、プロセス実行時に内部でトランザクション管理が行われている場合の動作です。
プロセス実行時に外部からトランザクション制御を行っている場合には、呼び出し元のトランザクション制御に依存します。
コミットが行われた場合には、内部でトランザクション管理が行われた場合と同じ動作をします。
ロールバックが行われた場合には、プロセスインスタンスの処理は実行直前までロールバックされます。
従ってサービスのリトライを行った履歴やプロセスインスタンスの障害状態は保存されません。

4.5.2. エグゼキューション

エグゼキューションはプロセスインスタンス内の実行単位を示します。
エグゼキューションは、並列ゲートウェイ (ParallelGateway)や、非同期処理オプション、タイマー中間イベント等により変化します。

コラム

エグゼキューションIDの取得

エグゼキューションIDは、EL式より取得することができます。
${execution.id} と記述する事により取得できます。
取得したエグゼキューションIDはメッセージキャッチイベントや変数の操作時に利用します。
EL式及び暗黙オブジェクトについては後述のEL式についてを参照してください。

4.5.3. ジョブ

ジョブはバックグラウンドで処理が行われる単位です。
IM-BPM for Accel Platformでは、プロセスエンジン単位でバックグラウンド実行用のジョブ管理スレッドが起動します。
  • 非同期ジョブ実行管理スレッド

    非同期ジョブの実行を管理するスレッドです。
    設定において定められた時間間隔でジョブテーブルを監視し、条件の成立する非同期ジョブが存在した場合、そのジョブを別スレッドで実行します。
  • タイマー実行管理スレッド

    タイマーが設定されたジョブを管理するスレッドです。
    設定において定められた時間間隔でジョブテーブルを監視し、条件の成立するジョブが存在した場合、そのジョブを別スレッドで実行します。
ジョブ実行は、ジョブ取得時にロックされていないジョブを対象とします。
またジョブ実行直前に、そのジョブに対してロックを行います。 (ジョブレコードの更新)
ジョブのロックは楽観的排他にて行われます。
分散環境時においては、ジョブはどのサーバ上で動作するか保証はされていません。
ジョブ実行時のスレッドは、JavaEEコンテキストが存在するスレッドにて動作します、その為、JTA等を利用したデータベーストランザクションの管理が可能です。