第30章 KIE セッションやタスクサービス向けの EJB API
Red Hat Process Automation Manager には、組み込みのユースケースで使用してリモートで、アプリケーションから KieSession オブジェクトおよび TaskService オブジェクトにアクセスできるように Enterprise JavaBeans (EJB) API が含まれています。EJB API を使用すると、Red Hat Process Automation Manager のプロセスエンジンと、リモートのカスタマーアプリケーションの間で、密接にトランザクションを統合できます。
KIE Server には EJB のサポートはありませんが、KIE Server をリモートの REST または JMS で操作するように、プロセスエンジンのリモートプロトコルとして EJB を使用できます。
EJB インターフェイスの実装は、フレームワークや、コンテナーに依存しない単一の API で、フレームワーク固有のコードと併用できます。EJB サービスは、Red Hat Process Automation Manager の org.jbpm.services.api パッケージおよび org.jbpm.services.ejb パッケージで公開されます。この実装は、RuleService クラスをサポートしませんが、ProcessService クラスは InsertCommand や FireAllRulesCommand など、さまざまなルール関連のコマンドを使用できる execute メソッドを公開します。
コンテキストと依存関係の挿入 (CDI: Contexts and Dependency Injection) も、Red Hat Process Automation Manager の org.jbpm.services.cdi パッケージでサポートされます。ただし、EJB の統合で競合を回避するために、EJB と CDI は併用しないでください。
30.1. サポート対象の EJB サービス リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Process Automation Manager で利用可能な Enterprise JavaBeans (EJB) サービスの完全なリストは、Red Hat カスタマーポータル から Red Hat Process Automation Manager 7.13.5 Maven リポジトリー をダウンロードして、~/jboss-rhba-7.13.5.GA-maven-repository/maven-repository/org/jbpm/jbpm-services-ejb-* に移動してください。
jBPM サービスに対して EJB インターフェイスを提供するアーティファクトは、次のパッケージに含まれています。
-
org.jbpm.services.ejb.api: EJB インターフェイスの jBPM サービス API の拡張を含みます。 -
org.jbpm.services.ejb.impl: コアサービス実装の上の階層にある EJB ラッパーを含みます。 -
org.jbpm.services.ejb.client: EJB リモートクライアント実装を含みます。Red Hat JBoss EAP でのみサポートされます。
org.jbpm.services.ejb.api パッケージには、リモート EJB クライアントで使用可能な、以下のサービスインターフェイスが含まれます。
-
DefinitionServiceEJBRemote: このインターフェイスを使用して、プロセス (ID、名前、バージョン)、プロセス変数 (変数と型)、定義済みの再利用可能なサブプロセス、ドメイン固有のサービス、ユーザータスク、およびユーザータスクの入出力に関する情報を収集します。 -
DeploymentServiceEJBRemote: このインターフェイスを使用してデプロイメントとデプロイメント解除を開始します。このインターフェイスには、deployメソッド、undeployメソッド、getRuntimeManagerメソッド、getDeployedUnitsメソッド、isDeployedメソッド、activateメソッド、deactivateメソッド、およびgetDeployedUnitメソッドが含まれます。DeploymentUnitのインスタンスでdeployメソッドを呼び出すと、RuntimeManagerインスタンスをビルドして、ユニットをランタイムエンジンにデプロイします。デプロイメントに成功すると、DeployedUnitのインスタンスが作成され、将来の使用のためにキャッシュされます。(これらの方法を使用するには、Maven リポジトリーでプロジェクトのアーティファクトをインストールする必要があります。) -
ProcessServiceEJBRemote: このインターフェイスを使用して、1 つまたは複数のプロセスおよびワークアイテムのライフサイクルを制御します。 -
RuntimeDataServiceEJBRemote: このインターフェイスを使用して、プロセスインスタンス、プロセス定義、ノードインスタンスの情報、変数情報など、ランタイム関連のデータを取得します。このインターフェイスには、所有者、ステータス、および時間をもとにタスク情報を収集する便利な方法が複数含まれています。 -
UserTaskServiceEJBRemote: このインターフェイスを使用して、ユーザータスクのライフサイクルを制御します。このインターフェイスには、activate、start、stop、executeなど、ユーザータスクを操作する便利なメソッドが複数含まれます。 -
QueryServiceEJBRemote: このインターフェイスを使用して、詳細なクエリーに対応します。 -
ProcessInstanceMigrationServiceEJBRemote: このインターフェイスを使用して、プロセス定義の新規バージョンがデプロイされると、プロセスインスタンスを移行します。
同じ KIE Server で EJB アプリケーションおよび Business Central を実行する場合は、org.jbpm.deploy.sync.int システムプロパティーを設定して、指定の間隔で EJB と Business Central 間の情報を同期できます。サービスが同期を完了したら、REST 操作を使用して更新された情報にアクセスできます。
Red Hat Process Automation Manager の EJB サービスは、組み込みユースケース向けに設計されています。EJB アプリケーションと Business Central を同じ KIE Server で実行する場合は、EJB アプリケーションのクラスパスに kie-services パッケージも追加する必要があります。