第3章 Java プロジェクトの移行
Business Central ワークベンチでは作成されていない Java プロジェクトの場合は、pom.xml ファイル内の依存関係を修正し、ビルドに関する問題を解決する必要があります。このプロセスは、Java で書かれたデシジョンサービスとクライアントアプリケーションで共通です。
前提条件/事前作業
Red Hat Decision Manager 7.0 用の Maven リポジトリーをダウンロードし、ローカル Maven システムが利用できる状態にする必要があります (ローカルまたはリモートリポジトリーとして)。
手順
-
プロジェクトの
pom.xmlファイルを開きます。 以下のグループに属するすべての依存関係から、
<version>タグを削除します。-
org.kie -
org.drools -
org.jbpm -
org.optaplanner
-
<dependencyManagement>セクション内の<dependencies>タグの下に、以下の依存関係を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
${rhdm.version}は、Red Hat Decision Manager 7.0 用 Maven リポジトリーのorg.jboss.bom.rhdm:rhdm-platform-bomアーティファクトのバージョンです。リポジトリーに入り、maven-repository/org/jboss/bom/rhdm/rhdm-platform-bomディレクトリーに移動して、アーティファクトのバージョンを確認できます。このディレクトリーのサブディレクトリーの名前だけを、バージョンとして指定します (例:7.0.0.GA-redhat-1)。コードに Drools CDI アノテーション (
@KReleaseId、@KContainer、@KBase、@KSession) が使用されている場合は、以下の依存関係も追加します。<dependency> <groupId>org.drools</groupId> <artifactId>drools-cdi</artifactId> </dependency>
<dependency> <groupId>org.drools</groupId> <artifactId>drools-cdi</artifactId> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow アノテーションを処理する CDI 拡張子が別のモジュールを使用して定義されるようになったので、この依存関係が必要です。この依存関係がないと、アノテーションは機能しません。
(必要に応じて) 古い
org.guvnor依存関係を、新しいorg.uberfire依存関係に置き換えます。古い
org.guvnor依存関係:<dependency> <groupId>org.guvnor</groupId> <artifactId>guvnor-rest-client</artifactId> </dependency>
<dependency> <groupId>org.guvnor</groupId> <artifactId>guvnor-rest-client</artifactId> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい
org.uberfire依存関係:<dependency> <groupId>org.uberfire</groupId> <artifactId>uberfire-rest-client</artifactId> </dependency>
<dependency> <groupId>org.uberfire</groupId> <artifactId>uberfire-rest-client</artifactId> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
プロジェクトアーティファクトのバージョンを更新し、
pom.xmlファイルを保存します。 - 通常の Maven ビルドを使用してプロジェクトをビルドし直します。
- ビルドエラー、またはその後に実行エラーが発生する場合は、「移行した Java プロジェクトで発生するビルドエラーおよび実行エラーのトラブルシューティング」で説明する情報を元に、それらの問題を解決します。
3.1. 移行した Java プロジェクトで発生するビルドエラーおよび実行エラーのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
以下の情報を元に、Red Hat Decision Manager 7.0 用に移行したプロジェクトの再ビルド後に発生するビルドエラーまたは実行エラーを解決します。
3.1.1. Drools モジュールにおける API 変更 リンクのコピーリンクがクリップボードにコピーされました!
BRMS 6.4 から Red Hat Decision Manager 7.0 への移行により、以下の Drools モジュールに互換性のない変更が含まれます。
kie-api: KIE グループからの全プロジェクト用のメイン API。変更のほとんどは、以下のクラスに関するものです。-
org.kie.api.task.* -
org.kie.api.executor.* -
org.kie.api.concurrent.* -
org.kie.api.builder.* -
org.kie.api.command.* -
org.kie.api.runtime.*
-
drools-core: ルールエンジン。以下のクラスが変更されます。-
org.drools.core.command.* -
org.drools.core.common.*
-
kie-server-api: KIE Server (Decision Server) 用の標準 API (コマンド、モデル等を含む)。以下のクラスが変更されます。-
org.kie.server.api.commands.* -
org.kie.server.api.marshalling.* -
org.kie.server.api.model.* -
org.kie.server.api.rest.RestURI(定数がわずかに変更され、先頭の/が省略されます)
-
kie-server-controller-api: KIE Server Controller 用の API。以下のクラスが変更されます。-
org.kie.server.controller.api.service.*
-
kie-server-controller-rest: KIE Server Controller 用の REST API。以下のクラスが変更されます。-
org.kie.server.controller.rest.RestSpecManagementServiceImpl -
org.kie.server.controller.rest.RestKieServerControllerImpl
-
kie-server-client: KIE Server Client。以下のクラスが変更されます。-
org.kie.server.client.SolverServicesClient -
org.kie.server.client.UIServicesClient -
org.kie.server.client.admin.ProcessAdminServicesClient -
org.kie.server.client.ProcessServicesClient -
org.kie.server.client.QueryServicesClient -
org.kie.server.client.JobServicesClient -
org.kie.server.client.UserTaskServicesClient -
org.kie.server.client.KieServicesClient -
org.kie.server.client.KieServicesConfiguration
-
ここで挙げるクラスに関するビルドエラーが発生する場合は、「List of API changes between BRMS 6.4 and Decision Manager 7.0」に書かれた詳細なレポートを確認してください。レポートには API 変更の詳細が記載されています。この情報を元に、コードを変更に対応させることができます。
3.1.2. Drools モジュールにおけるロジック変更 リンクのコピーリンクがクリップボードにコピーされました!
Drools モジュールに以下のロジック変更が加えられました。
Red Hat BRMS 6.4 では、ルールが累積パターンの sum 関数を実行する場合、返される結果は入力のデータタイプにかかわらず必ず double 型でした。Red Hat Decision Manager 7.0 では、sum 関数を実行する入力のデータタイプが維持されます。この機能拡張により、sum 関数からより正確な結果が得られます。以下の例では、accumulate 関数で得られる結果のデータタイプは
double型ではなくLong型になります。Long(...) from accumulate(..., sum($p.getLongWeight()))
Long(...) from accumulate(..., sum($p.getLongWeight()))Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat BRMS 6.4 プロジェクトのルールに累積パターンの sum 関数が含まれている場合は、この関数を探して確認してください。Red Hat BRMS 6.4 ではこの関数は double 型のデータタイプを返していましたが、Red Hat Decision Manager 7.0 では入力値のデータタイプを返す点に注意してください。
-
累積パターンと一致するファクトがない場合、Red Hat Decision Manager 7.0 では min および max accumulate 関数は
+/-Integer.MAX_VALUEではなくnullを返します。したがって、BRMS 6.4 の場合とは異なり、ルールの累積は一致せずルールは実行されません。 -
Business processes that contain business rule tasks with an
implementation=Javaconfiguration will not be compiled in Red Hat Decision Manager 7.0 due to stricter validation requirements. To resolve compilation errors related to this restriction, set the implementation configuration toimplementation=##unspecifiedor remove theimplementationattribute.