第65章 Red Hat Process Automation Manager のプロセスエンジン

プロセスエンジンは、Red Hat Process Automation Manager に Business Process Management (BPM) のパラダイムを実装します。BPM は、企業内でプロセスのモデル化、測定、最適化を可能にするビジネス方法論です。

BPM では、繰り返し可能なビジネスプロセスはワークフローダーイアグラムとして表示されます。BPMN (Business Process Model and Notation) 仕様は、このダイアグラムで利用可能な要素を定義します。プロセスエンジンは BPMN 2.0 仕様の大規模なサブセットを実装します。

プロセスエンジンを使用すると、ビジネスアナリストはダイアグラム自体を作成できます。開発者はコード内にフローのすべての要素のビジネスロジックを実装して、実行可能なビジネスプロセスを作成できます。ユーザーは、ビジネスプロセスを実行し、必要に応じて対話できます。プロセスの効率を反映するメトリックスを生成できます。

ワークフローダーイアグラムは、複数のノードで設定されます。BPMN 仕様では、以下のプリンシパルタイプを含む、さまざまな種類のノードが定義されていました。

  • イベント: プロセスの内外で発生するプロセスを表すノード。通常、イベントはプロセスの開始点と終了点です。イベントは、他のプロセスにメッセージを発生させ、このようなメッセージを取得できます。ダイアグラムの丸印はイベントを表します。
  • アクティビティー: (自動またはユーザーの関与を伴うかどうかに関係なく) 実行する必要があるアクションを表すノード。典型的なイベントは、プロセス内で行われるアクション、およびサブプロセスの呼び出しを表すタスクです。角の丸い長方形はアクティビティーを表しています。
  • ゲートウェイ: 分岐ノードまたはマージノード。一般的なゲートウェイは式を評価し、結果によっては複数の実行パスの 1 つに続きます。ダイアグラム内のひし形はゲートウェイを表しています。

ユーザーがプロセスを開始すると、プロセスインスタンスが作成されます。プロセスインスタンスには、プロセス変数に保存されたデータまたは コンテキスト のセットが含まれます。プロセスインスタンスの 状態 には、すべてのコンテキストデータと現在のアクティブなノード (場合によっては複数のアクティブなノード) が含まれます。

これらの変数の一部は、ユーザーがプロセスの開始時に初期化できます。アクティビティーはプロセス変数から読み取り、変数への書き込みが可能です。ゲートウェイはプロセス変数を評価し、実行パスを判断できます。

たとえば、ショップでの購入プロセスはビジネスプロセスである可能性があります。ユーザーのカートの内容は、最初のプロセスコンテキストにすることができます。実行の最後に、プロセスコンテキストは、支払いの確認と出荷追跡の詳細を含めることができます。

必要に応じて、Business Central で BPMN データモデラ―を使用して、プロセス変数内のデータのモデルを設計できます。

ワークフローダーイアグラムは、XML の ビジネスプロセス定義 によってコードで表されます。イベント、ゲートウェイ、およびサブプロセスの呼び出しのロジックは、ビジネスプロセス定義内に定義されます。

一部のタスクタイプ (スクリプトタスクや標準のデシジョンエンジンのルールタスクなど) がエンジンに実装されているものもあります。すべてのカスタムタスクを含む他のタスクタイプについては、タスクを実行する際に、プロセスエンジンが Work Item Handler API を使用して呼び出しを実行します。エンジンの外部にあるコードはこの API を実装し、さまざまなタスクを実装するための柔軟なメカニズムを提供します。

プロセスエンジンには、定義済みのタスクタイプが含まれます。これらのタイプには、ユーザー Java コードを実行するスクリプトタスク、Java メソッドまたは Web サービスを呼び出すサービスタスク、デシジョンエンジンサービスを呼び出すデシジョンタスク、およびその他のカスタムタスク (REST やデータベースコールなど) が含まれます。

もう 1 つの事前定義されたタスクタイプは ユーザータスク で、ユーザーとの対話が含まれます。プロセス内のユーザータスクは、ユーザーおよびグループに割り当てることができます。

プロセスエンジンは、KIE API を使用して他のソフトウェアコンポーネントと対話します。KIE Server のサービスとしてビジネスプロセスを実行し、KIE API の REST 実装を使用してそれらと対話できます。そのため、アプリケーションにビジネスプロセスを埋め込むことができ、KIE API Java 呼び出しを使用して対話できます。この場合は、任意の Java 環境でプロセスエンジンを実行できます。

Business Central には、人的タスクを実行するユーザー向けのユーザーインターフェイスと、人的タスクの Web フォームを作成するフォームモデラ―が含まれています。ただし、KIE API を使用してプロセスエンジンと対話するカスタムユーザーインターフェイスを実装することもできます。

プロセスエンジンでは、以下の追加機能がサポートされます。

  • JPA 標準を使用したプロセス情報の永続化のサポート。永続は、すべてのプロセスインスタンスの状態およびコンテキスト (プロセス変数内のデータ) を保持するため、コンポーネントが再起動またはオフラインになった場合に失われることはありません。SQL データベースエンジンを使用して永続情報を保存することができます。
  • JTA 標準を使用したプロセス要素のトランザクション実行に対するプラグ可能なサポート。JTA トランザクションマネージャーを使用する場合は、ビジネスプロセスのすべての要素がトランザクションとして開始します。要素が完了しない場合、プロセスインスタンスのコンテキストは、要素の起動前の状態に復元されます。
  • 新規ノード種別や他のプロセス言語を含むカスタム拡張コードのサポート。
  • さまざまなイベントについて通知するカスタムリスナークラスのサポート。
  • 実行中のプロセスインスタンスを、新しいバージョンのプロセス定義に移行するためのサポート

プロセスエンジンは、他の独立したコアサービスと統合することもできます。

  • 人的タスクサービス は、人間アクターがプロセスに参加する必要がある場合にユーザータスクを管理できます。これは完全にプラグ可能で、デフォルトの実装は WS-HumanTask 仕様をベースとしています。ヒューマンタスクサービスは、タスク、タスクリスト、タスクフォームのライフサイクルを管理します。また、エスカレーション、委任、ルールベースの割り当てなどのより高度な機能のライフサイクルも管理します。
  • 履歴ログ は、プロセスエンジンのすべてのプロセスの実行に関する情報をすべて保存できます。ランタイム永続化はすべてのアクティブなプロセスインスタンスの現在の状態を保存しますが、履歴ログで履歴情報にアクセスできるようにする必要があります。履歴ログには、アクティブかつ完了したすべてのプロセスインスタンスの現在および履歴状態がすべて含まれます。ログを使用して、監視および分析のプロセスインスタンスの実行に関連する情報をクエリーできます。