17.4. DMN モデル KJAR の Red Hat ビルドの Kogito マイクロサービスへの移行
外部アプリケーションの移行後に、DMN モデルに固有の KJAR を Red Hat ビルドの Kogito マイクロサービスに移行する必要があります。
手順
Red Hat ビルドの Kogito マイクロサービス用の Maven プロジェクトを作成します。
Maven プロジェクトの作成手順は、Red Hat ビルドの Kogito マイクロサービス用の Maven プロジェクトの作成 を参照してください。
Maven プロジェクトは Kogito アーティファクトを作成します。
-
KJAR の
src/main/resourcesフォルダーから Kogito アーティファクトのsrc/main/resourcesフォルダーに DMN モデルをコピーします。 テストシナリオを KJAR の
src/test/resourcesフォルダーから Kogito アーティファクトのsrc/test/resourcesフォルダーにコピーします。重要プロジェクトの
pom.xmlファイルに、テストシナリオの Red Hat ビルドの Kogito 依存関係をインポートし、KIE Server REST API を使用して JUnit アクティケーターを作成する必要があります。詳細は、テストシナリオを使用したデシジョンサービスのテスト を参照してください。以下のコマンドを実行して、指定した回帰テストに対してテストシナリオが実行されていることを確認します。
mvn clean installRed Hat ビルドの Kogito アプリケーションの実行後に、Swagger または OAS 仕様ファイルを取得できます。Swagger または OAS 仕様は、以下の実装の詳細とともに REST エンドポイントと同じ情報を提供します。
- API が利用できるサーバーのベース URL
- スキーマ名の参照
外部アプリケーションを新しい URL に再ルーティングする場合には、指定の実装の詳細を使用できます。
DMN モデル KJAR を Red Hat ビルドの Kogito マイクロサービスに移行したら、Red Hat OpenShift Container Platform を使用してマイクロサービスをデプロイする必要があります。Openshift のデプロイメントオプションは、RHPAM Kogito Operator を使用した OpenShift デプロイメントオプション を参照してください。
17.4.1. DMN モデル KJAR を Red Hat ビルドの Kogito マイクロサービスに移行する例 リンクのコピーリンクがクリップボードにコピーされました!
以下は、DMN モデル KJAR を Red Hat ビルドの Kogito マイクロサービスに移行する例です。
図17.1 DMN モデルを使用して実装したデシジョンサービスの例
図17.2 特定の ItemDefinition 構造を使用した DMN モデルの例
Business Central で開発した既存の KJAR で、オブジェクトモデル (POJO) を DTO として定義する必要があります。
KJAR で DTO として定義されたオブジェクトモデルの例
package com.myspace.demo20210321;
/**
* This class was automatically generated by the data modeler tool.
*/
public class Reservation implements java.io.Serializable {
static final long serialVersionUID = 1L;
@com.fasterxml.jackson.annotation.JsonFormat(shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@com.fasterxml.jackson.databind.annotation.JsonSerialize(using = com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer.class)
private java.time.LocalDate checkin;
@com.fasterxml.jackson.annotation.JsonFormat(shape = com.fasterxml.jackson.annotation.JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@com.fasterxml.jackson.databind.annotation.JsonSerialize(using = com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer.class)
private java.time.LocalDate checkout;
private java.util.List<java.lang.String> guests;
public Reservation() {
}
public java.time.LocalDate getCheckin() {
return this.checkin;
}
public void setCheckin(java.time.LocalDate checkin) {
this.checkin = checkin;
}
public java.time.LocalDate getCheckout() {
return this.checkout;
}
public void setCheckout(java.time.LocalDate checkout) {
this.checkout = checkout;
}
public java.util.List<java.lang.String> getGuests() {
return this.guests;
}
public void setGuests(java.util.List<java.lang.String> guests) {
this.guests = guests;
}
public Reservation(java.time.LocalDate checkin,
java.time.LocalDate checkout,
java.util.List<java.lang.String> guests) {
this.checkin = checkin;
this.checkout = checkout;
this.guests = guests;
}
}
上記の例では、定義した DTO は KIE Server クライアント Java API と共に使用されます。または、Java 以外の外部アプリケーションが KIE Server にデプロイされた KJAR と対話している場合は、ペイロードで DTO を指定できます。
KIE Server クライアント Java API の使用例
DMNServicesClient dmnClient = kieServicesClient.getServicesClient(DMNServicesClient.class);
DMNContext dmnContext = dmnClient.newContext();
dmnContext.set("reservation", new com.myspace.demo20210321.Reservation(LocalDate.of(2021, 3, 1),
LocalDate.of(2021, 3, 8),
Arrays.asList("John", "Alice")));
run(dmnClient, dmnContext);
図17.3 ペイロードで DTO を手動で指定する例
上記の例では、REST API のオブジェクトモデルの FQCN は汎用 KIE Server マーシャリングに使用されます。