17.4. 将 DMN 模型 KJAR 迁移到红帽构建 Kogito 微服务


迁移外部应用程序后,您需要将特定于 DMN 模型的 KJAR 迁移到红帽构建 Kogito 微服务。

流程

  1. 为您的红帽构建 Kogito 微服务创建一个 Maven 项目。

    有关创建 Maven 项目的步骤,请参阅为红帽构建的 Kogito 微服务创建 Maven 项目

    Maven 项目创建 Kogito 工件。

  2. 将 KJAR 的 src/main/resources 文件夹中的 DMN 模型复制到 Kogito 工件的 src/main/resources 文件夹。
  3. 将 KJAR 的 src/test/resources 文件夹的测试场景复制到 Kogito 工件的 src/test/resources 文件夹。

    重要

    您需要在项目的 pom.xml 文件中导入红帽构建的 Kogito 依赖项测试场景,并使用 KIE Server REST API 创建 JUnit 激活器。如需更多信息,请参阅使用 测试场景测试决策服务

  4. 运行以下命令,并确保为指定的非出口测试运行测试场景。

    mvn clean install

    运行 Kogito 应用程序的红帽构建后,您可以检索 Swagger 或 OAS 规格文件。Swagger 或 OAS 规格提供与 REST 端点相同的信息,以及以下实现详情:

    • API 可用服务器的基本 URL
    • 引用架构名称

    当外部应用程序重新路由到新 URL 时,您可以使用提供的实现详情。

在将 DMN 模型 KJAR 迁移到红帽构建 Kogito 微服务后,您需要使用 Red Hat OpenShift Container Platform 部署微服务。有关使用 Openshift 的部署选项,请参阅使用 RHPAM Kogito Operator 的 OpenShift 部署选项

以下是将 DMN 模型 KJAR 迁移到红帽构建 Kogito 微服务的示例:

图 17.1. 使用 DMN 模型实施的决策服务示例

DMN 决策服务示例

图 17.2. 使用特定 ItemDefinition 结构的 DMN 模型示例

使用 ItemDefinition 结构的 DMN 决定服务示例

您需要将对象模型(POJO)定义为在 Business Central 中开发的现有 KJAR 中的 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 结合使用。或者,您可以在有效负载中指定 DTO,当非 Java 外部应用程序与在 KIE 服务器上部署的 KJAR 交互时。

使用 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 的示例

手动部署的 KJAR 示例
注意

在上例中,REST API 中对象模型的 FQCN 用于通用 KIE Server marshalling。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部