4.4. 框表达式中的 DMN 决策逻辑
DMN 中的方框表达式是您用来在决策要求图(DRD)中定义决策节点和商业知识模型的基本逻辑。一些方框的表达式可包含其他框的表达式,但顶级的表达式与单个 DRD 工件的决策逻辑对应。DRD 代表 DMN 决策模型的流,但已框的表达式定义各个节点的实际决策逻辑。DRD 和 boxed 表达式组成一个完整的、功能 DMN 决策模型。
以下是 DMN 框表达式的类型:
- 决策表
- 字面表达式
- 上下文
- 关系
- Functions
- 调用
- 列表
Red Hat Decision Manager 不提供 Business Central 中的方框列表表达式,但支持 FEEL 列表
数据类型,您可以在框中使用字面上的表达式。有关 Red Hat Decision Manager 中列出
数据类型和其他 FEEL 数据类型的更多信息,请参阅 第 4.3.1 节 “FEEL 中的数据类型”。
您在框表达式中使用的所有 Friendly Enough Expression Language(FEEL)表达式必须符合 OMG Decision Model 和 Notation 规格 中的 FEEL 语法要求。
4.4.1. DMN 决策表
DMN 中的决策表是按表格格式显示一个或多个业务规则的可视化表示。您可以使用决策表为在决策模型给定点上应用这些规则的决定节点定义规则。每个规则均由表中的一行组成,包括针对该特定行定义条件(输入)和结果(输出)的列。每行的定义足够精确,可以利用条件的值生成结果。输入和输出值可以是 FEEL 表达式或定义的数据类型值。
例如,以下决策表根据有定义的 loan applicant 分数分数来决定分数等级:
图 4.3. 得分评级的决策表
根据申请款款资格和投标类型,以下决策表确定了申请策略:
图 4.4. 用于 lending 策略的决定表
下表决定 loans 特定资格的资格,作为 loan prequalification 决策模型中的排除决定节点:
图 4.5. loan prequalification 的决策表
决策表是建模规则和决策逻辑的流行方法,在许多方法(如 DMN)和实施框架中使用。
Red Hat Decision Manager 支持 DMN 决策表和 Drools-native 决策表,但它们具有不同的语法要求且不可交换的资产类型。有关 Red Hat Decision Manager 中的 dros 原生决策表的更多信息,请参阅使用电子表格决策表设计决策服务。
4.4.1.1. DMN 决策表中的点击策略
按策略决定了在决定表中的多个规则与提供的输入值匹配时如何到达结果。例如,如果决策表中的一个规则向军事人员应用销售折扣,并且另一条规则向学生应用折扣,那么当客户既是学生,在军事区中,决策表点击政策必须指明是否应用一个折扣或其他(唯一 )或购买(1 个有效)或折扣(选择Sum)。您可以在决策表的左下角指定点击策略的单一字符(U、F、C+)。
DMN 支持以下决策表点击策略:
- 唯一(U): 仅发送一个要匹配的规则。任何重叠都会引发错误。
- any(A):一个 要匹配的多个规则,但它们必须具有相同的输出。如果多个匹配规则没有相同的输出,则会出现一个错误。
- 优先级(P): 通过不同的输出来传输要匹配的多个规则。输出值列表中第一个输出会被选择。
- First(F): 按规则顺序使用第一个匹配项。
收集(C+、C>、C<、C#): 基于聚合功能,来自多个规则的输出。
- 收集(C): 任意列表中的聚合值。
- 收集 Sum(C+) :输出所有收集的值的总和。值必须是数字。
- 收集 Min(C<):输出匹配项中的最小值。生成的值必须比较,如数字、日期或文本(循环顺序)。
- collect Max(C>):输出匹配项中的最大值。生成的值必须比较,如数字、日期或文本(循环顺序)。
- collect Count(C#): 输出匹配规则的数量。
4.4.2. 已安装的字面表达式
DMN 中的方框字面表达式是表格单元格中的文字,通常是带有标记的列和分配的数据类型。您可以使用封闭的字面表达式,在决定特定节点的 FEEL 中直接在 FEEL 中定义简单或复杂节点逻辑或决策数据。literal FEEL 表达式必须符合 OMG Decision Model 和 Notation 规格中的 FEEL 语法要求。
例如,以下方框的字面表达式定义了最低可接受 PITI 计算(principal、interest、gincipes 和 保险),其中 可接受的率
是一个在 DMN 模型中定义的变量:
图 4.6. 开箱即用的字面表达式,最小 PITI 值
以下固定字面表达式根据具体标准(如年龄、位置和兴趣)在在线保护应用程序中对潜在候选(相对应)进行排序:
图 4.7. 用于匹配的在线 dating 候选的字面表达式
4.4.3. Boxed 上下文表达式
DMN 中的方框上下文表达式是一组变量名称和值,其值具有结果值。每个 name-value 对都是上下文条目。您可以使用上下文表达式来代表决策逻辑中的数据定义,并在 DMN 决策模型中为所需决策元素设置一个值。框上下文表达式中的值可以是数据类型值或 FEEL 表达式,或者可以包含任何类型的嵌套子表达式,如决策表、字面表达式或其他上下文表达式。
例如,以下方框上下文表达式定义了根据定义的数据类型(TPassengerTable、
决策模式中排序延迟乘客的因素:
tFlightNumberList
)在flight-rebooking
图 4.8. Boxed 上下文表达式,用于 flight 乘客等待列表
以下方框上下文表达式定义了可确定是否可以基于主体、兴趣、税务和保险(PITI)作为前端比例计算的因素:
图 4.9. 用于前端客户端 PITI 比率的方框上下文表达式
4.4.4. 框关系表达式
DMN 中的方框关系表达式是传统的数据表,其中包含给定实体(以行的形式列出)。在特定节点决定相关实体的决策中,您可以使用框关系表来定义相关实体的决策数据。框关系表达式与上下文表达式相似,因为它们设置变量名称和值,但关系表达式不包含结果值,并且根据每个列中定义的变量列出所有变量值。
例如,以下开箱即用关系表达式提供有关员工的恶意决策中的员工信息:
图 4.10. 与员工信息建立框关系表达式
4.4.5. Boxed 功能表达式
DMN 中的 box 功能表达式是一个参数化的表达式,包含字面的 FEEL 表达式、外部 JAVA 或 PMML 函数的嵌套上下文表达式,或任何类型的嵌套式表达式。默认情况下,所有业务知识模型都定义为开箱即用的功能表达式。您可以使用 boxed 功能表达式为您的决策逻辑上调用功能,并定义所有业务知识模型。
例如,以下方框的函数表达式决定在flight-rebooking decision model 中的flight 动态容量:
图 4.11. 用于动态容量的 box 功能表达式
以下开箱即用的功能表达式包含基本的 Java 功能,作为在决策模型计算中确定绝对值的上下文表达式:
图 4.12. 开箱即用的功能表达式,用于绝对值
以下方框式函数表达式确定一个月的分流安装,作为商业知识模型确定在方便的决策中,该函数值定义为嵌套上下文表达式:
图 4.13. 在商业知识模式下安装计算的已选式功能表达式
以下开箱即用的功能表达式使用 DMN 文件中附带的 PMML 模型来定义最低可接受的 PITI 计算(费用、兴趣、税务和保险):
图 4.14. 具有业务知识模型中包含的 PMML 模型的 box 功能表达式
4.4.6. Boxed invocation 表达式
DMN 中的开箱即用调用表达式是调用业务知识模型的框式表达式。框调用表达式包含要调用的业务知识模型的名称以及参数绑定列表。每个绑定都由一行中的两个方框表达式表示: 左侧的方框包含参数的名称,右侧框中包含了用于评估调用的商业知识模型的绑定表达式。您可以在特定的决策节点上调用该决策节点,这是决策模型中定义的业务知识模型。
例如,以下复选框调用调用表达式调用 Reassign Next Passenger
Business knowledge model,作为在flight-rebooking 决策模型中包括的决策节点:
图 4.15. 开箱即用的调用表达式来重新分配flight 乘客
以下复选框调用调用表达式调用 InstallmentCalculation
Business knowledge model,以在做出经济决定前计算每月安装量:
图 4.16. 所需每月安装的调用表达式
4.4.7. Boxed list 表达式
DMN 中的方框列表表达式代表项目的 FEEL 列表。您可以使用已框的列表来定义决定特定节点的相关项目列表。您还可以将字面的 FEEL 表达式用于列出单元中的项目,以创建更复杂的列表。
例如,以下复选框列表表达式标识 loan Application decisions 服务中的已获信分数机构:
图 4.17. 批准分数机构的已选信列表表达式
以下复选框列表表达式还标识出类机构,但使用 FEEL 逻辑根据 DMN 输入节点定义机构状态(Inc.、Spulce、SAS、GA):
图 4.18. 使用 FEEL 逻辑的已核算列表表达式(用于批准的信贷分数)状态