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
    Copy to Clipboard Toggle word wrap

    运行红帽构建的 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 模型实现的决策服务示例

图 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;
	}

}
Copy to Clipboard Toggle word wrap

在上例中,定义的 DTO 与 KIE Server 客户端 Java API 一起使用。另外,当非 Java 外部应用程序与 KIE 服务器上部署的 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);
Copy to Clipboard Toggle word wrap

图 17.3. 在有效负载中手动指定 DTO 的示例

注意

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat