第 4 章 在 Business Central 中创建和编辑 DMN 模型
您可以使用 Business Central 中的 DMN 设计程序来设计 DMN 决策要求图(DRD),并为完整的功能 DMN 决策模型定义决策逻辑。Red Hat Process Automation Manager 为 DMN 1.2 模型提供符合级别 3 的设计和运行时支持,包括 FEEL 和 DMN 模型组件的增强和修复,以优化使用 Red Hat Process Automation Manager 实施 DMN 决策服务的体验。Red Hat Process Automation Manager 还提供对 DMN 1.1 和 1.3 模型的运行时支持,符合级别 3。Business Central 的 DMN 设计程序目前不支持 DMN 1.1 和 1.3 模型。
流程
-
在 Business Central 中,进入 Menu
Design Projects,然后点击项目名称。 在 Business Central 项目中创建或导入 DMN 文件。
要创建 DMN 文件,请点击 Add Asset
DMN,输入信息性 DMN 模型名称,选择适当的 Package,然后点 Ok。 要导入现有的 DMN 文件,请点 Import Asset,输入 DMN 模型名称,选择适当的 Package,选择要上传的 DMN 文件,然后单击 Ok。
新的 DMN 文件现在列在 Project Explorer 的 DMN 面板中,并显示 DMN 决策要求图(DRD) svas。
注意如果您导入了不包含布局信息的 DMN 文件,则导入的决策要求图(DRD)会在 DMN 设计程序中自动格式化。在 DMN Designer 中点 Save 保存 DRD 布局。
如果导入的 DRD 没有自动格式化,您可以在 DMN 设计器中选择 执行自动布局 图标来格式化 DRD。
点左侧工具中的其中一个 DMN 节点并拖动一个 DMN 节点,开始将组件添加到您的新的或导入的 DMN 决策要求图(DRD)中:
图 4.1. 添加 DRD 组件
可用的 DRD 组件如下:
- 决策 :将此节点用于 DMN 决策,其中一个或多个输入元素根据定义的决策逻辑决定输出。
- 业务知识模型 :将此节点用于带有一个或多个决策元素的可重复使用的功能。具有相同逻辑但依赖于不同的子输入数据或子部门的决策使用业务知识模型来确定要遵循哪些流程。
- 知识源 :将此节点用于负责决定或业务知识模型的外部机构、文档、提交或策略。知识源是指实际因素的参考,而不是可执行的业务逻辑。
- 输入数据 :使用此节点获取在决策节点或业务知识模型中使用的信息。输入数据通常包括与业务相关的业务级概念或对象,如 Lending 策略中使用的 loan applicant 数据。
- 文本注释 :使用此节点获得与输入数据节点、决策节点、业务知识模型或知识源关联的额外说明。
- 决策服务 :使用此节点包含一组可重复使用的决策,作为调用的决策服务。决策服务可以在其他 DMN 模型中使用,并可以从外部应用程序或 站 商业进程调用。
- 在 DMN Designer canvas 中,双击新的 DRD 节点,以输入信息性节点名称。
如果节点是一个决定或业务知识模型,请选择要显示节点选项的节点,然后点击 Edit 图标打开 DMN 框表达式设计器,以定义节点的决策逻辑:
图 4.2. 打开新的决策节点框表达式
图 4.3. 打开新的业务知识模型框表达式
默认情况下,所有业务知识模型都定义为包含字面 FEEL 表达式、外部 JAVA 或 PMML 函数的嵌套上下文表达式或嵌套的方框表达式。
对于决策节点,您可以点击未定义表来选择要使用的方框表达式类型,如框的字面表达式、框的上下文表达式、决策表或其他 DMN 框表达式。
图 4.4. 为决策节点选择逻辑类型
对于业务知识模型,您可以点击左上角的功能单元来选择功能类型,或者右键点击功能值单元,选择 Clear,然后选择另一个类型的方框表达式。
图 4.5. 为业务知识模型选择功能或其他逻辑类型
在所选用于决策节点(任何表达式类型)或业务知识模型(功能表达式)的方框表达式设计程序中,单击适用的表单元,以定义表名称、变量数据类型、变量名称和值、函数参数和绑定或 FEEL 表达式,以包含在决策逻辑中。
您可以右键点击单元,以了解适用的额外操作,如插入或删除表行和列或清除表内容。
以下是决定节点的一个示例决策表,它根据定义的 Lan applicant 的信用卡分数评级来决定信信分数评级:
图 4.6. 信用卡分数评级的决策节点决策表
以下是一个用于业务知识模型的方框函数表达式示例,它根据主体、感兴趣的、销售和技术(PITI)作为字面表达式计算电缆付款:
图 4.7. PITI 计算的企业知识模型功能
- 为所选节点定义决策逻辑后,点 Back to "<MODEL_NAME>" 返回到 DRD 视图。
对于所选的 DRD 节点,请使用可用的连接选项在 DRD 中创建并连接到下一个节点,或者单击新节点并从左栏中将新节点拖到 DRD canvas 中。
节点类型决定支持哪个连接选项。例如,输入数据节点 可以使用适用的连接类型连接到决策节点、知识源或文本注解,而 知识库源 节点可以连接到任何 DRD 元素。决策 节点只能连接到另一个决定或文本注解。
以下连接类型可用,具体取决于节点类型:
- 信息要求 :使用此连接从输入数据节点或决策节点与需要信息的另一个决定节点。
- 知识要求 :使用此连接从业务知识模型到决策节点或调用决策逻辑的另一种业务知识模式。
- 授权要求 :使用此连接从输入数据节点或决策节点到依赖知识源,或从知识源到决策节点、业务知识模型或其他知识来源。
- 关联 :使用此连接,从输入数据节点、决策节点、业务知识模型或知识源到文本注释。
图 4.8. 将信分数输入连接到信分数评级决定
继续添加和定义您决策模型的剩余 DRD 组件。在 DMN 设计程序中定期点击 Save 来保存您的更改。
注意当您定期保存 DRD 时,DMN 设计程序会对 DMN 模型执行静态验证,并可能生成错误消息,直到完全定义模型为止。完全定义了 DMN 模型后,如果保留任何错误,请相应地排除指定的问题。
添加并定义 DRD 的所有组件后,单击 Save 保存并验证已完成的 DRD。
要调整 DRD 布局,您可以在 DMN 设计器右上角选择 Execution automatic layout 图标。
以下是 loan prequalification 决策模型的 DRD 示例:
图 4.9. 为 loan prequalification 已完成的 DRD
以下是使用可重复使用的决策服务处理决策模型的手机调用的 DRD 示例:
图 4.10. 完成 DRD,用于通过决策服务进行手机调用处理
在 DMN 决策服务节点中,底部段中的决策节点融合了来自决策服务的输入数据,以便在决策服务节点的顶部决定。然后,根据决策服务带来的顶级决策,将根据 DMN 模型的任何后续决策或企业知识要求来实施。您可以在其他 DMN 模型中重复使用 DMN 决策服务,以使用不同的输入数据和不同的传出连接应用相同的决策逻辑。
4.1. 在 Business Central 中框表达式中定义 DMN 决策逻辑 复制链接链接已复制到粘贴板!
DMN 中的方框表达式是您用来在决策要求图(DRD)中定义决策节点和业务知识模型的底层逻辑。某些框表达式可以包含其他框表达式,但顶级表达式对应于单个 DRD 工件的决策逻辑。DRD 代表 DMN 决策模型的流,但框表达式定义单个节点的实际决策逻辑。DRD 和方框表达式一起形成完整的功能 DMN 决策模型。
您可以使用 Business Central 中的 DMN 设计程序,使用内置框表达式为您的 DRD 组件定义决策逻辑。
先决�件
- 在 Business Central 中创建或导入 DMN 文件。
流程
-
在 Business Central 中,进入 Menu
Design Projects,点项目名称,然后选择您要修改的 DMN 文件。 在 DMN Designer canvas 中,选择要定义的决策节点或业务知识模型节点,然后点击 Edit 图标以打开 DMN 框表达式设计器:
图 4.11. 打开新的决策节点框表达式
图 4.12. 打开新的业务知识模型框表达式
默认情况下,所有业务知识模型都定义为包含字面 FEEL 表达式、外部 JAVA 或 PMML 函数的嵌套上下文表达式或嵌套的方框表达式。
对于决策节点,您可以点击未定义表来选择要使用的方框表达式类型,如框的字面表达式、框的上下文表达式、决策表或其他 DMN 框表达式。
图 4.13. 为决策节点选择逻辑类型
对于业务知识模型节点,您可以点击左上角的功能单元来选择功能类型,或者右键点击功能值单元,选择 Clear,然后选择另一个类型的方框表达式。
图 4.14. 为业务知识模型选择功能或其他逻辑类型
在本例中,使用决策节点并选择 Decision Table 作为框的表达式类型。
DMN 中的决策表是一个或多个规则的可视化表示,格式为 tabular。每个规则都由表中的一行组成,并包含该特定行定义条件(输入)和结果(输出)的列。
-
单击 input 列标头,以定义输入条件的名称和数据类型。例如,
使用数字数据类型命名输入列 Credit Score.FICO。此列指定数字信分值或 loan applicants 范围。 单击输出列标头,以定义输出值的名称和数据类型。例如,将输出列 Credit Score Rating 和 next of the Data Type 选项命名为 Data Types 页面,您可以在其中创建一个分数评级为约束的自定义数据类型。
图 4.15. 为列标头值管理数据类型
在 Data Types 页面中,点 New Data Type 来添加新数据类型,或者点击 Import Data Object 从您要用作 DMN 数据类型的项目导入现有数据对象。
如果您从项目导入数据对象作为 DMN 数据类型,然后更新该对象,则必须重新导入数据对象作为 DMN 数据类型,以便在 DMN 模型中应用更改。
在本例中,点 New Data Type 并创建一个 Credit_Score_Rating 数据类型
作为字符串:图 4.16. 添加新数据类型
点 Add Constraints,从下拉菜单中选择 Enumeration,并添加以下限制:
-
"Excellent" -
"Good" -
"fair" -
"Poor" -
"Bad"
图 4.17. 在新数据类型中添加限制
要更改数据类型约束的顺序,您可以点约束行左侧的结尾,并根据需要拖动行:
图 4.18. 拖动约束以更改约束顺序
有关指定数据类型的约束类型和语法要求的详情,请参考 决策模型和表示法规格。
-
- 点 OK 保存约束,然后点数据类型右侧的检查标记保存数据类型。
- 返回到 Credit Score Rating 决策表,单击 Credit Score Rating 列标头,然后将数据类型设置为这个新的自定义数据类型。
使用 Credit Score.FICO 输入列来定义信分数值或值范围,并使用 Credit Score Rating 列指定您在 Credit_Score_Rating 数据类型中定义的相应评级之一。
右键点击任何值单元,以插入或删除行(规则)或列(clauses)。
图 4.19. 信用卡分数评级的决策节点决策表
定义所有规则后,单击决策表的左上角的角,以定义规则 Hit Policy 和 Builtin 聚合器 (仅适用于 COLLECT hit 策略)。
hit 策略决定在决策表中的多个规则与提供的输入值匹配时如何达到结果。内置聚合器决定在使用 COLLECT 命中策略时如何聚合规则值。
图 4.20. 定义决策表命中策略
以下示例是一个更复杂的决策表,它决定了与同一 loan prequalification 决策模型中协调决策节点的 loan 许可:
图 4.21. loan prequalification 的决策表
对于分区表以外的框表达式类型,您可以遵循类似导航的表达式表的指南,并为决策逻辑定义变量和参数,但根据框表达式类型的要求。某些框表达式(如框的字面表达式)可以是单列表,而其他框表达式(如函数、上下文和调用表达式)则可使用其他类型的嵌套表达式的多列表。
例如,以下框上下文表达式定义了参数,该参数来确定 loan applicant 是否可以满足基于主体、感兴趣的、参与和过期(PITI),使用子上下文表达式以前端比率计算表示:
图 4.22. 用于前端客户端 PITI 比率的方框上下文表达式
以下框函数表达式决定在许可决策中作为业务知识模型的每月安装,其函数值定义为嵌套上下文表达式:
图 4.23. 在业务知识模型中安装计算的框函数表达式
有关每个框表达式类型的更多信息和示例,请参阅 第 2.4 节 “框表达式中的 DMN 决策逻辑”。