4.4 决策表

4.4.1 名词解释

决策表的定义

在 UDM 中,决策表 (Decision Table) 是一种以表格形式组织和表达业务规则的强大工具。它将复杂的条件逻辑可视化,特别适合处理“多条件组合,对应不同动作或结果”的场景。

规则示例

列 (Columns)

  • 左侧若干列代表条件 (Conditions)
  • 右侧若干列代表动作/操作 (Actions)返回值 (Return Values)

行 (Rows)

  • 每一行代表一条独立的规则 (Rule) 或一个决策情形
  • 表格的第一行通常是标题(如“条件”、“动作”)。
  • 第二行是每个条件和动作的具体描述。
  • 从第三行开始,每一行的单元格填写具体的条件值和对应的动作

分区

对于给定条件,可以对具有相同值的一组连续行进行分组。 在这种情况下,分组值右边的单元格是同一分区的一部分。 缺省情况下,表的第一列中的所有单元格都属于同一分区。在 UDM中,通过合并单元格来对其进行分组。

例如:在下表中,行 1 和 2 的 A 级单元格分组为一个单元格。 因此,对应于贷款金额的单元格将成为同一分区的一部分。

image-20251118150700855

多条件组合列

当规则语句包含多个值时,可以在决策表中的列之间拆分条件,形成组合条件列。

img

img

运算符

在UDM中通过运算符来精确地定义数据必须满足什么要求才能触发某条规则,也是构建复杂条件逻辑的关键步骤。

编辑条件列,设定age是一个对象

指定单元格的运算符

常用的运算符

运算符 含义 示例
in 检查值是否在指定的集合中。 age in {0, 1, 2} (年龄是0, 1或2)
!in 检查值是否不在指定的集合中 gender !in {"male", "female"} (性别不是男也不是女)
= 检查两个值是否相等。 age = 18
检查两个值是否不相等 age != 18
> 检查左边的值是否大于右边的值 age > 18
]...[ 大于一个数字并且小于一个数字 age > 18 and age < 65
]...] 大于一个数字并且小于等于一个数字 age > 18 and age <= 65
检查左边的值是否大于或等于右边的值。 age >= 18
[...[ 大于等于一个数字并且小于一个数字 age >= 18 and age<65
[...] 检查值是否在两个数之间(包含边界)) age >=18 and age<= 65
< 检查左边的值是否小于右边的值 age < 18
检查左边的值是否小于或等于右边的值 age <= 18
为空 检查值是否为空(null) address is null
不为空 检查值是否不为空(非null) email is not null

否则单元格

在决策表的条件列中,当您需要覆盖某个属性或表达式的所有可能取值,但不想(或无法)穷举每一个具体值时,可以使用 elseotherwise 关键字。在同一个条件列中,“否则”单元格代表了该条件在当前分区(或所有前置条件组合下)尚未被其他规则覆盖的所有剩余情况,它充当一个“兜底”或“默认”分支,确保决策表的逻辑的完整性,不会出现“无规则匹配”的情况

img

前置条件

决策表的前置条件是一个布尔表达式(即返回 truefalse 的条件),它作为整个决策表的“总开关”或“守门人”。在决策表开始执行其内部的任何规则之前,先检查这个前置条件:如果前置条件为 true,则继续执行,去逐条检查决策表内的规则;否则直接跳过整个决策表,表内的所有规则都不会被执行。

img

4.4.2 示例

使用决策表计算某城市的等级

业务需求

根据城市的GDP和城市的人口数量来判断这个城市是几线城市、使用决策表来做规则计算判断

定义BOMimg
定义项目参数

img

决策表编辑过程

决策表城市线数

效果展示

img

results matching ""

    No results matching ""