在 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
E | hongtenzone@foxmail.com B | http://www.cnblogs.com/hongten
========================================================
在 Excel 工作簿中定义决策表(Oracle Policy Modeling-Define decision tables in Excel workbooks)的更多相关文章
- excel-合并多个Excel文件--VBA合并当前目录下所有Excel工作簿中的所有工作表
在网上找EXCEL多文件合并的方法,思路: 一.Linux 或者window+cmder,直接用命令行cat合并EXCEL文件,但是,需要安装辅助东西才能直接处理(也许也不可以,但是,可以用文件格式转 ...
- 怎么拆分一个Excel工作簿中的多个工作表?
打开需要编辑的Excel文档.如图所示,工作簿下方有很多工作表.现在需要将这些工作表单独拆分开成一个个工作簿. 右键任意一个工作表标签,在弹出的下拉列表中选择查看代码.即弹出代码窗口.如下图所示. ...
- 显示excel工作簿中所有工作表的名称!!!
问题描述: 有一个工作簿里边将近二百多个工作表(公司),想统计里边所有公司名称即二百多个工作表的名称. 1.找一个空白工作表,也可以利用原来工作表中不用的列,转到“公式”工具栏,点击名称管理,在跳出来 ...
- 【VBA】读取另一个excel工作簿中的内容
后台打开工作簿读取内容源码: Sub subOpenWorkbook() Dim datebase As String datebase = "... ....xlsx" Appl ...
- 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据
本文分步介绍了多种从 Microsoft Visual C# 2005 或 Microsoft Visual C# .NET 程序向 Microsoft Excel 2002 传输数据的方法.本文还提 ...
- 【集中工作薄】 当前文件夹中所有Excel文件中 多个工作簿的第一个工作表 复制到工作簿中
功能:当前文件夹中所有Excel文件中 多个工作簿的第一个工作表 复制到工作簿中 Sub Books2Sheets() '定义对话框变量 Dim fd As FileDialog Set fd = A ...
- 我们无法找到服务器加载工作簿的数据模型"的 SharePoint 网站,当您刷新 Excel 2013 工作簿中的数据透视表时出错
假定您使用 Analysis Services 源在 Microsoft Excel 2013 中创建数据透视表.将 Excel 工作簿上载到 Microsoft SharePoint 网站中.当您尝 ...
- 在Excel里如何将多个工作簿合并到一个工作簿中
在Excel里如何将多个工作簿合并到一个工作簿中 当你必须将多个工作簿合并到一个工作簿时,你遇到过麻烦吗?最让人心烦的就是需要合并的工作簿里有很多张工作表.有人能推荐方法解决这个问题吗? 利用VBA ...
- Excel VBA 从一个工作簿查找另一个一个工作簿中的一些内容复制到另外一个工作簿
帮朋友来写个Excel VBA 以前写过ASP,所以对vb略微熟悉,但VBA 没有仔细研究过. 以前只研究过 vba 写一个 计算个人所得税的程序. 这次写的功能也算是简单,但也耗费了两天的功夫. 需 ...
随机推荐
- My97DatePicker使用技巧
My97DatePicker使用是很常用的控件,总结一下常用使用技巧: 1.onpicked是事件,也就选择日期之后触发事件: 2.isShowClear:是否显示清理按钮: 3.maxDate:最大 ...
- Golang Beego 分析(一)
关于注解路由,实质上其实是comment route. 作者使用ast自动生成注册代码,实质上感觉是画蛇添足了. 有一定的使用价值,但是在代码管理上反而混乱了.所以本人建议不要使用此项特性.
- 快速熟悉python 下使用mysql(MySQLdb)
首先你需要安装上mysql和MySQLdb模块(当然还有其他模块可以用),这里我就略过了,如果遇到问题自行百度(或者评论在下面我可以帮忙看看) 这里简单记录一下自己使用的学习过程: 一.连接数据库 M ...
- APP设计尺寸规范大全,APP界面设计新手教程【官方版】(转)
正值25学堂一周年之际,同时站长和APP设计同仁们在群里(APP界面设计 UI设计交流群,APP界面设计⑥群 APPUI设计③群58946771 APP设计资源⑤群 386032923欢迎大家加入交流 ...
- Lucene.net 全文检索 盘古分词
lucene.net + 盘古分词 引用: 1.Lucene.Net.dll 2.PanGu.Lucene.Analyzer.dll 3.PanGu.HighLight.dll 4.PanGu.dll ...
- C++读取文件夹中所有的文件或者是特定后缀的文件
由于经常有读取一个文件夹中的很多随机编号的文件,很多时候需要读取某些特定格式的所有文件. 下面的代码可以读取指定文件家中的所有文件和文件夹中格式为jpg的文件 参考: http://www.2cto. ...
- 【项目经验】——JSON.parse() && JSON.stringify()
我们在做项目的时候,都知道序列化和反序列化,师哥说:"有正就有反,有来就有回!"的确,就是这样.然后我们在这里分享一下JSON.stringify() 和JSON.parse() ...
- iOS10 UI教程视图的生命周期
iOS10 UI教程视图的生命周期 说到视图的生命周期一般都是指视图控制器的视图生命周期.在视图的声明周期中最主要的有8个方法,分别为loadView().viewDidLoad().viewWill ...
- http://zhidao.baidu.com/link?url=X7IUn1KtjVb0889-lR1OlNOl5xJaA49LEqPHvjTvfKJt5uXPsyi-sn-Xc-yw6-fbaIBvuF0MiTVZGpZGeoW_HLphIR5WmiMVDMoNBFAOINa
http://zhidao.baidu.com/link?url=X7IUn1KtjVb0889-lR1OlNOl5xJaA49LEqPHvjTvfKJt5uXPsyi-sn-Xc-yw6-fbaIB ...
- http://www.cnblogs.com/younggun/archive/2013/07/16/3193800.html
http://www.cnblogs.com/younggun/archive/2013/07/16/3193800.html