首页 > 代码库 > 在 Excel 工作簿中定义决策表(Oracle Policy Modeling-Define decision tables in Excel workbooks)

在 Excel 工作簿中定义决策表(Oracle Policy Modeling-Define decision tables in Excel workbooks)

要在 Excel 中编写规则,您只需在表中编写规则,并使用 Oracle Policy Modeling 样式标识单元格中的信息类型,

以便这些规则可以编译并在 Oracle Determinations Engine 中使用。在文档中可以创建任意数量的规则工作表。

 

了解用于规则表的样式

打算在 Oracle Policy Modeling 中编译的 Excel 规则需要用随 Oracle Policy Modeling Excel 文档模板一起提供的样式标记。以下样式用于编写规则:

标题单元格为可选。同样,单元格顺序无关紧要,因为每种样式都具有唯一性 - 只要必要样式用于有效的单元格内容。

注意:

 a.无论工作表上的声明顺序是什么,处理顺序都是“全局实体”、“实体”,然后是任何属性。这可以保证属性出现在正确的实体中。

 b.要将单元格的格式定义为货币值,不要使用 Excel 格式工具栏上的按钮 - 而是转至格式 | 单元格并在数字选项卡上选择货币

 c.在 Microsoft Excel 中处理数字、货币、日期和时间时,计算机的区域设置与规则库项目的区域应一致。这是因

    为 Microsoft Excel 使用区域设置中的模板定义数据类型的格式。

如果您使用文本属性,该文本属性的值可以放在引号内,也可以不放在引号内,处理方法都相同。如果要在规则表中使用文本

函数,需要用圆括号将函数文本括起来。

 

在 Excel 中创建规则表

当您向项目中添加 Excel 文档时,此文档的规则表工作表将包含如下所示的规则模板:

要在 Excel 中编写包含单个条件和单个结论的简单规则,请执行以下步骤。在此示例中,我们将根据人员的国籍推

断出其是哪国人。注:变量属性应先在属性文件中声明才能在 Excel 中使用。(在规则中使用布尔值属性之前不必

声明这些属性。)在此示例中,文本变量“国籍”和“哪国人”已经在项目的属性文件中声明。

 a.将第二列中的文本条件替换为“国籍”。此单元格已采用正确的条件标题样式。因为我们将只有一组条件,所以您可以删除第一个条件列。

 b.将文本结论替换为“哪国人”。此单元格已采用正确的结论标题样式。因为我们将只有一组结论,所以您可以删除另一个结论列。

 c.在“国籍”单元格下面的单元格中键入“美国”。使用 Tab 键转至下一个单元格(“哪国人”单元格下面的单元格)并键入“美国人”。

    这些单元格已经采用正确的样式:分别为条件结论。删除随后两行,因为这些行不会用到。

   1.在下面的行中,输入另一个条件“苏格兰”,关联的结论为“苏格兰人”。按照此方法处理下一行,条件为“日本”,结论为“日本人”。

   2.在否则条件旁边的单元格中键入“不确定”。此操作将应用替代结论“不确定”。

规则表应如下所示:

当编译规则时,在 Excel 中编写的决策表将由 Oracle Policy Modeling 转换成内部生成的规

则表。上述表将在 Oracle Policy Modeling 中创建以下规则 (xgen)。(要查看此规则,可

以在 OPM 的项目资源管理器中用右键单击规则文档,然后选择打开规则浏览器。)

 

为同一组条件证明多个属性

在 Excel 中仅使用一个表,就可以为同一组条件证明多个属性(与在 Word 中需要多个规则表不同)。

假设已声明以下变量,文本变量“国籍”、“哪国人”和“国家/地区的货币”,可以编写以下规则表:

 

使用多个条件证明同一组结论

您可以在 Excel 中为特定结论指定多个条件,在合适的情况下合并结论单元格以影响规则的求值方式。

例如,您可能要为成人和儿童的不同组合确定合适的门票类型。如果有如下变量:

可以编写以下规则表:

在 Oracle Policy Modeling 中为此表生成的规则如下所示:

如果我们不想测试结论单元格的属性值,则可以将条件单元格留空。在我们的示例中,我们可以

决定,两个成人带有儿童时可以购买“家庭”门票进入,三个大人无论是否带有儿童,都可以购买“家庭”门票。

这样可以简化逻辑,生成如下规则:

如果有多个条件行证明同一结论,我们还可以合并结论值的单元格。

这样可以简化 Excel 规则表的外观,强调为门票推断的值在多个可能方案中相同。但是,Oracle Policy Modeling 解

释规则逻辑的方式也会随之改变。根据 Excel 规则表生成的内部规则表对于每个 Excel 结论单元格包括一行。

这意味着,生成的规则表中并非存在两行来证明同一结论值(按从上到下的顺序求值),而是只存在一行来证明

结论值,同时具有多个可按任何顺序求值的选项。规则需要考虑到有些条件值为未知时这很有用。

提示:要查看使用合并条件和结论单元格的完整规则库的示例,请打开并运行保险欺诈得分示例规

则库项目,此项目位于 Oracle Policy Modeling 安装文件夹中的“示例”文件夹下。

 

允许规则条件按任何顺序求值和处理缺少值

Oracle Policy Modeling 根据 Excel 中的决策表生成的内部规则表从上到下逐行求值。如果表的第一行无法

求值(即如果有些条件值未知),即使表中后面的行因为其所有条件值完全已知而可以求值,规则表整体的

求值也不会超过第一行。
在某些情况下,这不是规则求值的最有用方式。如果通过多种方式证明一个结论,您可以在所有不同

条件行中合并单个结论单元格。然后,Oracle Policy Modeling 将允许任何这些条件行以任何顺序证明结论值。

例如,在下面的规则单元格中,我们希望两行中的任一行能够证明结论。

采用当前规则表布局时,在 Oracle Policy Modeling 生成的规则中,对于 Excel 规则中的每行

都有单独的行。因为规则表从上到下求值,所以这意味着,即使我们知道人员 16 岁并因此有权获

得青年福利金,规则表也在我们知道人员的职业后才能推断出结果并对第一行进行求值。

但是,如果我们合并包含适用于这两行的结论的单元格,则 Oracle Policy Modeling 生成的内部规则

会将这些行与单个规则表行中的“或者”条件合并,而不是上面生成的两个单独规则表行。

这个新结构允许按任何顺序对证明结论的条件进行求值,因此现在即使第一行的值未知,第二行也允许对规则进行求值。

 

编写决策应用于一系列数字或日期的比较类型规则

对于非文本条件,决策可能应用于一系列数字或日期,而不是特定数字或日期。

简单的例子就是将特定日期范围的应纳税所得额映射至税率:

您可能还要对一个属性进行多种比较,举例如下:

 

根据规则表的应用起始日期拆分规则表

表可以拆分在同一文件的多个表上,以考虑从特定日期开始应用的定期表更新。为此,

可插入主表对各表区分优先次序。通过引用在表的选项卡中指定的表名称来区分优先次序。

例如,您可能具有:

这些表的逻辑将在编译时合并,因此不会导致多重证明属性。主表使用标准规则条件和结论样式,

但有一个标题为“应用表”的结论列采用结论标题样式。因此请注意,文本“应用表”不能用作

标准规则表中的列标题。

在此示例中,您有三个包含以下规则表的其他工作表。请注意,必须根据“应用表”列中提

供的名称给工作表加标题(区分大小写)。

将在 Oracle Policy Modeling 中创建以下规则:

提示:要查看使用“应用表”来对随时间变化的属性进行推理的完整规则库的示例,请打开

并运行保险欺诈得分示例规则库项目,此项目位于 Oracle Policy Modeling 安装文件夹中的“示例”文件夹下。

 

在 Excel 规则表中使用实体属性

您可以证明 Excel 规则表中的实体层属性,但是,表中的所有结论属性都必须在同一实体中。规则

表中的条件属性可以与结论在同一实体中,或者可以引用结论实体的包含关系中的任何实体。

例如,以下规则表使用实体“孩子”和全局实体中的条件属性推断“宠物”实体中的结论属性,

实体“孩子”和全局实体都在其包含关系中,如下所示:

在具有多数实体函数的条件单元格中也可以使用实体层属性。例如,以下规则使用实例总数函数根据孩子拥有的宠物数量设置她的零用钱。

注:在 Excel 中不能这样使用的实体函数是那些处理多个实体的函数:范围满足条件、范围内所有都满足

       条件、范围内存在一个满足条件、是集合的成员、不是集合的成员、实例等于、实例不等于。

提示:要查看使用实体层属性、函数和基于实体实例的计算的完整规则库的示例,请打开并运行保

        险欺诈得分示例规则库项目,此项目位于 Oracle Policy Modeling 安装文件夹中的“示例”文件夹下。

 

在 Excel 规则中证明文本属性

在 Excel 规则中证明文本属性时,您需要用括号将属性文本括起来,以便编译程序将其识别为属性。

例如,如果您有以下声明:

在规则表中推断出文本属性的文本时,您将需要用括号将其括起来。例如:

如果未在规则中的这些文本属性前后加上括号,这些属性将无法识别,生成的规则将推断出字面字符串。

在推断文本属性的特定值时,不必将其用括号括起来(请注意,您可以将该文本属性的值放在引号内,也可以不放在引号内,处理方法都相同)。

 

========================================================

More reading,and english is important.

I‘m Hongten

hongten

 

E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten

========================================================

在 Excel 工作簿中定义决策表(Oracle Policy Modeling-Define decision tables in Excel workbooks)