搜索

第 44 章 定义电子表格决策表

download PDF

电子表格决策表(XLS 或 XLSX)需要两个关键区域来定义规则数据: RuleSet 区域和一个 RuleTable 区域。电子表格的 RuleSet 区域定义了您要对同一软件包中的所有规则(不仅仅是电子表格)全局应用的元素,如规则集名称或通用规则属性。RuleTable 区域定义了实际规则(箭头)以及条件、操作和其他规则属性(列),这些属性构成指定规则集中的规则表。表格的表格可以包含多个可 规则 的区域,但只能包含一个 RuleSet 区域。

重要

通常,根据 Business Central 中的规则软件包,您通常只 上传一个 决策表,其中包含所有必要规则定义定义。您可以为单独的软件包上传单独的决策表电子表格,但在同一个软件包中上传多个电子表格可能会导致与冲突的 RuleSetRuleTable 属性中相应的错误,因此不建议这样做。

在您定义决策表时,请参考以下示例电子表格:

图 44.1. 发运费用的电子表格决策表示例

决策表示例

流程

  1. 在新的 XLS 或 XLSX 电子表格中,转至第二栏或第三列,并标记单元 RuleSet (例如 1)。为左侧的列或列保留描述性元数据(可选)。
  2. 在右侧的单元里,为 RuleSet 输入一个名称。此命名规则集将包含 规则 软件包中定义的所有规则。
  3. RuleSet 单元下,定义您要对软件包中的所有规则表进行全局应用的任何规则属性(每个单元一个)。指定右侧的单元格中的属性值。例如,您可以输入 Import 标签并在右侧的单元格中,为您要导入的其它软件包(格式为 package.name.object.name)指定相关的数据对象。有关支持的单元标签和值,请参阅 第 44.1 节 “规则集定义”
  4. RuleSet 区域中,在 RuleSet 单元下,跳过一行并标记一个新的单元 规则 (示例中是 7),然后在相同的单元中输入表名称。名称用作来自此规则表的所有规则的初始部分,并附加行号。您可以通过插入 NAME 属性列来覆盖此自动命名。
  5. 使用下面的四个行根据需要定义以下元素(如例中的 8-11 ):

    • 规则属性: Conditions、actions 或其他属性。有关支持的单元标签和值,请参阅 第 44.2 节 “RuleTable 定义”
    • 对象类型: 规则属性应用到的数据对象。如果同一对象类型适用于多个列,请将对象单元格合并到多个列之间的一个单元格中(如示例决策表中所示),而不是在多个单元中重复对象类型。当对象类型合并时,合并范围下的所有列都将合并到单个模式中用于匹配单个事实的一组约束。在单独的列中重复对象时,各个列可以创建不同的模式,可能会匹配不同的或相同的事实。
    • 约束: 对象类型的限制。
    • 列标签: (可选)列的任何描述性标签(可选)作为视觉 aid。如果未使用,留空。

      注意

      作为填充对象类型和约束单元格的替代选择,您可以将对象类型单元格或单元格留空,然后在对应的约束单元或单元格中输入完整的表达式。例如,如果对象类型和 itemsCount > $1 作为约束(不同的单元格),您可以保留对象类型单元格,然后在约束单元中输入 Order (itemsCount > $1),然后为其他约束单元执行相同的操作。

  6. 定义了所有必要的规则属性(列),根据需要输入每个列的值,按行行(例如,第 12-17 一行)生成规则(例如,第 12-17)。没有数据的单元将被忽略(比如当条件或操作不适用时)。

    如果您需要在此决策表格中添加更多规则表,在上表中的最后一条规则后跳过一行,在与前面的 RuleTable RuleSet cells 相同,再按照本部分中相同的步骤创建新表(示例为 19-29)。

  7. 保存 XLS 或 XLSX 电子表格来完成。
注意

默认情况下,在上传 Business Central 中电子表格的电子表格时,只有电子表格的首个工作表才会作为决策表进行处理。每个 RuleSet 名称都与 RuleTable 名称组合,必须在同一软件包中的所有决策表文件中是唯一的。

如果要处理多个工作表表,请创建一个 .properties 文件,其名称与电子表格图书器相同。.properties 文件必须包含带有以逗号分隔的值(CSV)的属性表,例如:

sheets=Sheet1,Sheet2

在上传 Business Central 中的决策表后,规则会呈现如下 DRL 规则,如以下示例表格:

//row 12
rule "Basic_12"
salience 10
  when
    $order : Order( itemsCount > 0, itemsCount <= 3, deliverInDays == 1 )
  then
    insert( new Charge( 35 ) );
end
启用在单元值中使用的空格

默认情况下,在决策引擎处理决策表单元之前或之后的任何空格之前或之后的任何空格会被移除。要保留您在单元格之前或之后使用的空白空间,请将 drools 设为 Red Hat Process Automation Manager 发行中的 false

例如,如果您在红帽 JBoss EAP 中使用 Red Hat Process Automation Manager,请在 $EAP_HOME/standalone/configuration/standalone-full.xml 文件中添加以下系统属性:

<property name="drools.trimCellsInDTable" value="false"/>

如果您使用嵌入在 Java 应用程序中的决策引擎,使用以下命令添加系统属性:

java -jar yourApplication.jar -Ddrools.trimCellsInDTable=false

44.1. 规则集定义

决策表的 RuleSet 区域中的条目定义了您要应用到软件包中所有规则的 DRL 结构和规则属性(不仅仅在电子表格中)。条目必须位于垂直的单元对序列中,其中第一个单元包含一个标签以及右侧包含值的单元格。表格电子表格只能有一个 RuleSet 区域。

下表列出了 RuleSet 定义支持的标签和值:

表 44.1. 支持的 RuleSet 定义
标签使用

ruleset

生成的 DRL 文件的软件包名称。可选,默认为 rule_table

必须是第一个条目。

sequential

truefalse。如果为 true,则使用 salience 来确保规则从上下触发。

可选,最多一次。如果省略,则不会强制触发顺序。

SequentialMaxPriority

整数数字值

可选,最多一次。在连续模式中,此选项用于设置 salience 的开始值。如果省略,默认值为 65535。

SequentialMinPriority

整数数字值

可选,最多一次。在连续模式中,使用这个选项检查是否没有违反此最小值。如果省略,则默认值为 0。

EscapeQuotes

truefalse。如果为 true,则引号会被转义,以便它们在 DRL 中以文字形式出现。

可选,最多一次。如果省略,则转义引号。

IgnoreNumericFormat

truefalse。如果为 true,则忽略数字值的格式,如百分比和货币。

可选,最多一次。如果省略,DRL 会采用格式化的值。

Import

从另一个软件包中导入的、以逗号分隔的 Java 类列表。

可选,可以重复使用。

变量

DRL 全局声明(类型后跟变量名称)。必须使用逗号分隔多个全局定义。

可选,可以重复使用。

Functions

根据 DRL 语法,一个或多个功能定义。

可选,可以重复使用。

查询

根据 DRL 语法,一个或多个查询定义。

可选,可以重复使用。

声明

根据 DRL 语法,一个或多个声明类型。

可选,可以重复使用。

��

此决策表中生成的规则单元。

可选,最多一次。如果省略,则规则不属于任何单元。

dialect

Javamvel.决策表操作中使用的 dialect。

可选,最多一次。如果省略,则使用 java

警告

在某些情况下,Microsoft Office、LibreOffice 和 OpenOffice 可能会以不同的方式编码双引号,从而导致编译错误。例如,"A" 将失败,但 "A" 将传递。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.