第 15 章 高级进程概念和任务


您可以使用 Decision Model 和 Notation(DMN)在 Business Central 中的决策要求图(DRD)中以图形化方式为决策服务建模,然后在 Business Central 中将 DMN 服务作为业务流程的一部分调用。业务流程通过识别 DMN 服务并在 DMN 输入和业务流程属性之间映射业务数据,与 DMN 服务交互。

如图所示,此流程使用了示例 TrainStation 项目,它定义了列车路由逻辑。这个示例项目包含以下数据对象和 DMN 组件,用于在用于路由决策逻辑的 Business Central 中设计:

Train 对象示例

public class Train {

     private String departureStation;

     private String destinationStation;

     private BigDecimal railNumber;

     // Getters and setters
}
Copy to Clipboard Toggle word wrap

图 15.1. Compute Rail DMN 模型示例

图 15.2. Rail DMN 决策表示例

图 15.3. tTrain DMN 数据类型示例

有关在 Business Central 中创建 DMN 模型的更多信息,请参阅使用 DMN 模型设计决策服务

先决条件

  • 所有所需的数据对象和 DMN 模型组件都在项目中定义。

流程

  1. 在 Business Central 中,前往 Menu Design Projects 并点项目名称。
  2. 选择或创建您要在其中调用 DMN 服务的业务流程资产。
  3. 在流程设计器中,使用左边工具栏来照常拖放 BPMN 组件,以定义您的整个业务流程逻辑、连接、事件、任务或其他元素。
  4. 要在业务流程中整合 DMN 服务,请在左侧工具栏或启动节点选项中添加 业务规则 任务,并在流程流程中的相关位置插入任务。

    在本例中,以下 Accept Train 业务流程将 DMN 服务包含在 Route To Rail 节点中:

    图 15.4. 带有 DMN 服务的 Accept Train 业务流程示例

  5. 选择您要用于 DMN 服务的业务规则任务节点,单击进程设计器右上角的 Properties,然后在 Implementation/Execution 下定义以下字段:

    • 规则语言: 选择 DMN
    • 命名空间 :从 DMN 模型文件中输入唯一的命名空间。示例 :https://www.drools.org/kie-dmn
    • 决策名称 :输入要在所选进程节点中调用的 DMN 决策节点的名称。示例:R ail
    • DMN 模型名称 :输入 DMN 模型名称。示例: 计算 Rail

      重要

      当您浏览 root 节点时,请确保 NamespaceDMN Model Name 字段包含与 DMN 图表相同的值。

  6. Data Assignments Assignments 下,点 Edit 图标并添加 DMN 输入和输出数据,以定义 DMN 服务与进程数据之间的映射。

    对于本例中的 Route To Rail DMN 服务节点,您可以为 Train 添加与 DMN 模型中输入节点对应的输入分配,并为 Rail 添加与 DMN 模型中决策节点对应的输出分配。Data Type 必须与您在 DMN 模型中为该节点设置的类型匹配,SourceTarget 定义是指定对象的相关变量或字段。

    图 15.5. Route To Rail DMN 服务节点的输入和输出映射示例

  7. Save 保存数据输入和输出数据。
  8. 根据您希望如何处理完成的 DMN 服务,定义您的业务流程的其余部分。

    在本例中,Properties Implementation/Execution On Exit Action 值被设置为以下代码,以在 Route To Rail DMN 服务完成后存储 rail 号:

    On Exit Action的代码示例

    train.setRailNumber(rail);
    Copy to Clipboard Toggle word wrap

    如果无法计算 rail 编号,则进程会达到 一个没有正确的 Rail 错误节点,该节点定义了以下条件表达式:

    图 15.6. 无适当的 Rail 最终错误节点状况示例

    如果计算了 rail 编号,则进程到达 Accept Train 脚本任务,该任务使用以下条件表达式定义:

    图 15.7. Accept Train 脚本任务节点的条件示例

    Accept Train 脚本任务还使用 Properties Implementation/Execution Script 中的以下脚本打印有关列路由和当前 rail 的消息:

    com.myspace.trainstation.Train t =
        (com.myspace.trainstation.Train) kcontext.getVariable("train");
    System.out.println("Train from: " + t.getDepartureStation() +
                       ", to: " + t.getDestinationStation() +
                       ",  is on rail: " + t.getRailNumber());
    Copy to Clipboard Toggle word wrap
  9. 使用融合的 DMN 服务定义业务流程后,将您的流程保存到流程设计器中,部署项目,然后运行对应的进程定义来调用 DMN 服务。

    在本例中,当您部署 TrainStation 项目并运行对应的进程定义时,打开 Accept Train 进程定义的进程实例表单,并设置 departure stationdestination station 字段来测试执行:

    图 15.8. Accept Train 进程定义的进程实例表单示例

    执行完进程后,会在服务器日志中显示含有您指定的列车路由的消息:

    Accept Train 进程的服务器日志输出示例

    Train from: Zagreb, to: Belgrade,  is on rail: 1
    Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat