前页 后页

决策表

决策表是一组相关的输入和输出表达式的表格表示形式,组织成规则以指示哪个输出条目适用于一组特定的输入条目。

决策表由决策业务知识模型元素类型支持。它们由图上元素右上角的图标表示。

访问

图表

在图上,双击Decision元素或BusinessKnowledgeModel元素。

将显示“ DMN表达式”窗口,其中显示所选元素的详细信息。

总览

该图像显示了针对“决策表”显示的DMN表达式窗口。

决策表包括:

  • 表格匹配策略(C +,U,A,P等),用于指定规则的应用方式
  • 规则列表(1、2、3、4等),其中每个规则行均包含特定的输入条目和相应的输出条目
  • 输入子句列表(在蓝色标题下),定义为通常包含一个或多个输入值的表达式
  • 输出子句的列表(在粉红色标题下),定义对应于一组特定输入的输出
  • 您可以通过窗口“工具栏”添加每个规则的可选注释(在绿色标题下)
输入子句包含一个表达式和一个可选的允许值列表(列标题下方的行)。很多时候,表达式只是一个未修改的输入值。但是,它也可以是涉及多个输入值的表达式,也可以是条件语句,例如“应用程序风险评分> 100”。允许值适用于表达式结果,而不是所使用的输入值。

每个输出子句均包含一个标识符(名称),以及该子句的允许值的可选列表。

决策表应包含确定输出所需的所有输入-并且仅包含那些输入。

在确定应用哪些规则时,将对给定输入评估输入子句中定义的表达式 ,然后使用表达式结果查找具有匹配输入条目的规则。

如果DMN表达式窗口的宽度或深度不足以显示所有列和行,则可以使用滚动条访问隐藏的内容,或将边框拖出以增加每个列的宽度。 “输入”和“输出”列的宽度最初是相同的,但是您可以通过在表格中或标签名称正下方的灰色栏中拖动列边界来独立调整每个列的宽度。

决策表编辑器的工具栏

选择决策表后,可通过窗口顶部的工具栏访问DMN表达式窗口中可用的功能,如下所示:

有关更多详细信息,请参阅“ 决策表编辑器工具栏”帮助主题。

参量

对于BusinessKnowledgeModel元素,参数用于传递调用元素提供的输入值。使用输入参数评估BKM的决策逻辑,并将结果返回给调用元素。默认情况下,将使用两个输入参数“输入1”和“输入2”创建BKM元素。

单击DMN表达式窗口的工具栏中的图标,以显示“编辑参数”对话框。

您可以在此处更改参数名称,重新排列顺序,设置其数据类型,创建其他参数或删除现有参数。

热门政策

右键单击“命中策略指示器”,然后从弹出菜单中选择所需的命中策略。 “ 决策表匹配策略帮助”主题中详细描述了各种表匹配策略

输入条款

决策表的输入子句定义为表达式。很多时候,表达式只是一个未修改的输入值。但是,它也可以是涉及多个输入值的表达式,也可以定义为条件语句,例如“应用程序风险评分> 100”。允许值适用于表达式结果,而不是所使用的输入值,因此,值的类型应与表达式结果的类型匹配。

使用两个默认输入子句“输入1”和“输入2”创建决策表。这两个子句的数据类型均为“数字”。在DMN表达式窗口中,输入子句在“决策表”上显示为列标题。要修改输入子句,请单击列标题以选择单元格,然后再次单击或按F2键进行编辑。

编辑输入子句时支持自动完成。这意味着,对于“决策”元素,可以将与“决策”元素连接的所有输入从列表中选择出来。同样,对于BKM元素,可以从列表中选择调用参数。有关更多信息,请参见DMN表达式自动完成帮助主题。

要将其他输入条目列添加到决策表,请单击DMN表达式窗口的工具栏上的图标。

要从表中删除输入列,请在不需要的输入列中单击鼠标右键,然后从弹出菜单中选择“删除输入列”选项。

可以通过将列拖放到新位置来重新排列表中输入列的顺序。 (将表格列顶部的未标记单元格拖动到所需位置。)

允许值

定义“输入”或“输出”列时,该列的第二行定义“允许值”。这是该列中的可选单元格,但对于阐明其下面各行中的条目很有用。运行验证时,将检查“允许值”单元格下方的每个单元格,以确保它们符合该单元格中的表达式。

此单元格中使用的表达式取决于“输入”或“输出”列的键入方式。例如:

  • 数字-[18 ..35]
  • 字符串-'高','低','中'
  • 布尔值-正确,错误
快速填充允许值

该引用所引用的输入/输出表达式可以是简单值或复杂的FEEL表达式。但是,如果它与ItemDefinition的“ Allowed Values”字段直接相关,则按S 速度栏将启用快速填充选项,以设置ItemDefinition中定义的“ Allowed Values”(通常通过InputData元素引用)。

快速填充行

一旦定义了“允许的值”字段,并限制了在定义表中的规则时可以使用的值,则“允许的值”字段还为用户提供了快速填充选项。在规则单元格中,通过按S 速度栏并选择所需的项目来调用它:

有关更多详细信息,请参见帮助主题DMN表达式自动完成

输出条款

输出子句由名称,数据类型和可选的允许值列表组成。要修改输出子句,请单击列标题单元格以选择该单元格,然后再次单击或按F2键进行编辑。

要将输出条目的其他列添加到“决策”表,请单击“表达式编辑器”窗口的工具栏上的图标。

要从表中删除输出列,请在不需要的输出列中右键单击,然后从弹出菜单中选择选项“删除输出列”。

可以通过将列拖放到新位置来重新安排表中列的顺序。 (将表格列最顶部的未标记单元拖动到所需位置。)

输入/输出子句的数据类型

为了使仿真正常进行,至关重要的是为所有输入和输出子句设置数据类型。类型'number'的子句支持范围,间隙和重叠验证,但如果未指定类型,则无法执行验证。对于诸如C ++,C#和Java之类的类型化语言的代码生成,需要指定数据类型。将数据类型指定为“字符串”时,无需将每个字符串文字括在引号中。如果已声明类型,则使用斜体显示字符串值。

要设置数据类型,请右键单击“输入”或“输出”列标题,然后从列表中选择所需的类型。

定义决策表规则

通过在表行的单元格内指定输入条目和相应的输出条目来定义决策表规则。对于“数字”数据类型,可以将输入条目指定为单个值或数字范围,例如“ <10”,“> 100”或“ [2..8)”。 (在定义数字范围时,使用圆括号表示不包括边界数字,使用方括号表示包括边界数字。)输出条目应为每个单元格指定一个值。

通过单击工具栏中的图标,可以将其他规则附加到规则列表中。右键单击规则,然后从弹出菜单中选择“删除规则行”选项,可以从表中删除不需要的规则。

可以通过以下方法将现有规则复制并粘贴到表格中:首先选择规则(使用“ Ctrl + Click”从所选内容中添加/删除),然后使用菜单选项“将规则复制到剪贴板”和“将规则从剪贴板粘贴”到执行复制和粘贴。然后可以通过选择和编辑单个单元格条目来修改复制的规则。

如果为字符串或布尔表达式设置了“允许的值”字段,则可以使用空格键显示要选择的值的列表,如前面的“ 允许的值-快速填充行”部分所示。

规则也可以在表中排序,方法是:

  • 单击工具栏上的图标,然后选择“按输入排序”或“按输出排序”,或
  • 右键单击表中的单个规则,然后从弹出菜单中选择“向上移动规则”或“向下移动规则”选项
为了确定表的哪些行被选择用于输出,即由输入子句所定义的表达式进行求值对于给定的输入和表达式的结果然后对表中的行的输入项进行比较。如果表达式结果与表行的输入条目匹配,则选择该行进行输出。

决策表的“命中策略”确定了表的匹配行随后如何用于产生其输出。

规则格式

您可以选择-使用工具栏图标-以三种格式之一显示决策表,如下所示。

行规则格式,其中规则是沿着行开发的,输入,输出和注释设置在列中:

列规则格式,其中规则在各行中向下开发,输入,输出和注释沿行设置:

规则即交叉表格式,其中规则由定义为一组行和一组列的输入组成,输出设置在相交的单元格中。 (请注意,此格式隐藏了“注释”字段):

在模拟结束时,在交叉表决策表中,突出显示了相关的输入条目和输出条目。例如,在此模拟处理中,对于订单大小小于或等于10且交货不适用的商业客户,将获得0.10折扣的输出。

交叉表设置

在“交叉规则”格式中,由于输入同时形成行和列,并且输出位于交点,因此设置值的步骤与其他两种格式略有不同。

  1. 要添加另一种类型的输入,请右键单击输入列标题,然后选择“添加输入”选项。提示您输入输入名称;输入将作为一组字段添加到当前列字段下。
    要从列中删除输入类型,请右键单击其字段集,然后选择“删除输入”选项。输入的名称及其字段集已从列标题中删除。
  2. 要添加另一种类型的输出,请右键单击窗口左上方的Output块,然后选择“ Add Output”选项。提示您输入输出名称;该名称将添加到Output块,新行将添加到窗口主体中的每个单元格。
    要删除输出类型,请右键单击窗口左上方“输出”块中的类型名称,然后选择“删除输出”选项。网格中的输出名称及其字段将被删除。
  3. 您可以在输入类型之间旋转以为行标题选择一个。右键单击该行,然后单击“选择输入作为行标题”选项。这将显示输入类型的列表。单击类型以用作行标题;其他类型组合在列中。
  4. 要将值输入行或列添加到输入中,请右键单击当前行或列,然后根据需要选择“添加输入项输入行”或“添加输入项输入列”选项。显示提示,提示输入条目的名称。输入此内容时,相应的行或列将添加到“决策表”中。
    要删除值输入行或列,请右键单击它,然后选择“删除输入条目行”或“删除输入条目列”选项。所选行或列将从表中删除。
  5. 在“输入”列中,每一行都匹配一种输入类型。如果要将某一种输入的行移到另一行的上方或下方,请右键单击该行,然后选择“上移输入”或“下移输入”选项。上下文菜单仅提供可以操作的选项,因此无法向下移动最后一行,因此未列出“向下移动输入”选项。

学到更多