预订演示
前页 后页

决策表

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

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

访问

图表

在图表上,双击决策元素或 BusinessKnowledgeModel元素。

显示DMN 表达式窗口,显示所选元素的详细信息。

概述

此图显示了决策表的DMN 表达式窗口。

决策表包括A

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

每个输出子句由一个标识符(名称)和该子句允许值的可选列表组成。

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

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

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

决策表编辑器工具栏

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

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

参数

在业务知识模型(BKM)元素的情况下,参数用于传递调用元素提供的输入值。使用输入参数评估 BKM 的决策逻辑,并将结果返回给调用元素。默认情况下,使用两个输入参数“Input 1 ”和“Input 2”创建 BKM元素。

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

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

命中策略

右键单击“命中策略指示器”,然后从弹出菜单中选择所需的命中策略目标。各种库表命中策略在细节决策表命中策略帮助中详细描述。

输入子句

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

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

编辑输入子句时支持自动补全。这意味着,对于决策元素,任何连接到决策元素的输入都可以从列表中进行选择。类似地,对于业务知识模型元素,调用参数可用于从列表中选择。有关详细信息,请参阅帮助DMN 表达式自动完成帮助主题。

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

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

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

允许值

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

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

  • 数字 - [18 ..35]
  • 字符串-“高”、“低”、“中”
  • 布尔值 - 真、 false
  • 不明确的 - '-'
快速填充允许值

这里引用的输入/输出表达式可以是一个简单的值,也可以是一个复杂的FEEL表达式;但是,如果它与 ItemDefinition 的“允许值”字段直接相关,则按下S速度条将启用快速填充选项来设置ItemDefinition中定义的“允许值”(通常通过 InputData元素引用)。

快速填充行

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

更多详情请参见帮助主题帮助DMN 表达式自动完成

输出子句

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

要向决策表。

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

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

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

为了使模拟工作,为所有输入和输出子句设置数据类型至关重要。 'number' 类型的子句支持范围、间隙和重叠验证,但如果未指定类型,则无法执行验证。 C++、C# 和Java等类型语言的代码生成要求指定数据类型。当数据类型指定为' string '时,不需要将每个string文字括在引号中。如果类型已声明,字符串值以斜体显示。

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

定义决策表规则

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

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

可以通过首先选择规则来复制和粘贴现有表(使用“Ctrl+单击”从选择中添加/删除),然后使用菜单选项“复制规则到剪贴板”和“粘贴规则从剪贴板”到执行复制和粘贴。然后可以通过选择和编辑单个单元来修改复制的规则。

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

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

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

决策决策表的“命中策略”决定了匹配行如何使用决策表来产生其输出。

规则格式

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

Rule-as-Row 格式,其中规则沿行开发,输入、输出和注释设置在列中:

Rule-as-Column 格式,其中规则在列下展开,输入、输出和注释沿行设置:

Rule-as-Crosstab 格式,其中规则由定义为一组行和列组合的输入形成,输出设置在相交单元中。 (注记这种格式隐藏了“注释”字段):

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

交叉表设置

在 Rule-as-Crosstab 格式中,由于输入形成行和列,输出位于交叉点,因此设置值的步骤与其他两种格式略有不同。

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

了解更多