10.4. JBPM 組み込み非同期メッセージング

JBPM の組み込み非同期メッセージを使用する場合、ジョブメッセージはデータベースに永続化することによって送信されます。このメッセージの永続化は、JBPM プロセス更新と同じトランザクションまたは JDBC 接続で実行できます。
そのジョブのメッセージは、JBPM_JOB テーブルに保存されます。
POJOコマンドエグゼキューター (org.jbpm.msg.command.CommandExecutor) は、データベースのテーブルからメッセージを読み取り、実行します。 つまり、典型的な POJO コマンドエグゼキューターのトランザクションは以下のようになります。
  1. 次のコマンドメッセージの読み込み
  2. コマンドメッセージの実行
  3. コマンドメッセージの削除
コマンドメッセージの実行処理が失敗した場合、トランザクションはロールバックされます。 その後、新しいトランザクションは、開始され、エラーメッセージをデータベースのメッセージに追加します。コマンドエグゼキューターは、例外を含むすべてのメッセージを無視します。
POJO コマンドエグゼキュータートランザクション

図10.3 POJO コマンドエグゼキュータートランザクション

例外をコマンドメッセージに追加するトランザクションが失敗した場合は、ロールバックされます。 その場合、例外なしでメッセージはキューに残り、後で再試行されます。

重要

JBPM のビルトイン非同期メッセージングシステムはマルチノードロックをサポートしていません。そのため、POJO コマンドエクゼキュータを複数回デプロイすることはできず、同じデータベースを使用するよう設定することもできません。