BI.OfficeTrainingRuleEngine.ppt
BI.Office Training,规则引擎使用简介,FEnet BI R&D:熊海霞,2,规则引擎培训提纲,规则设计问题的提出基本原理函数和参数规则使用规则编辑器使用按类型介绍应用实际应用举例,3,1.规则设计篇,BI.Office Rule Engine,4,1.1 规则设计问题的提出,如图所示报表:灰色区域对应的单元格是可以从Cube中查询得到的。SM1,SM2,SA1,SA2非Cube成员,所以黄色区域对应的单元格是不能从Cube中直接得到,需要给出这些单元格的计算方法。,5,1.2 规则设计原理介绍,基本设计思路为了实现这种特殊报表需求,我们在BI.Office普通报表的基础上引入了“报表规则”的概念。所谓“规则”:分为条件和实体两个部分条件部分:限定该规则的使用范围;实体部分:指定该规则将执行的操作;*这两部分都是函数的嵌套组合。通过在报表内定制规则,可以实现任意复杂的OLAP报表。,6,1.2 规则设计原理介绍,规则类型根据实际应用,我们提供六种规则类型:计算规则:计算报表某个或某几个单元格的值;告警规则:对报表的某个或某几个单元格设定告警;跳转规则:从一个报表跳到另一个报表。可见规则:设置报表某行或某列设定是否可见。表格规则:设置单元格格式。命名集规则:为报表动态增加或减少成员作查询。为方便规则定制复用,系统提供表达式样例。下面将分别针对这几种规则,简要介绍设计原理。,7,1.2 规则设计原理介绍,(1)计算规则每张报表就是一系列的单元格组成。每个单元格都会对应一个路径由多个成员唯一确定。如果这个路径中所有的成员都来自Cube,那么这个单元格的数据就是可以查询得到。如果其中包含的成员有非Cube成员,那么这个单元格的数据就是不可直接从Cube中查询得到的。对于这些非Cube成员的数据,我们如何得到呢?这里引入TAG成员概念。所谓TAG成员,是BI.Office自定义的一种成员,取名为TAG,意为标记占位。我们的计算规则就是为了计算这些TAG成员而设计的。,8,1.2 规则设计原理介绍,(1)计算规则在报表中加入TAG成员后,对TAG成员定义计算规则:用函数嵌套的方式指定对非Cube成员的计算方法,这就是规则的实体部分;而条件部分是用来限制这种计算方法对哪些区域有效。执行过程简要说明:后端在扫描报表的单元格的过程中,每扫描到一个单元格,都会自动匹配所有的计算规则的条件部分;如果条件部分匹配,那么就会运行该规则的实体部分(这里定义了该单元格的计算函数),获得该单元格的数据。通过递归扫描,最终可以将数据填满整张报表。,9,1.2 规则设计原理介绍,(2)告警规则为何要告警?在生产经营中,业务指标的值都有一定的范围,如果某些指标值过高或者过低,都意味着生产经营中的某些因素产生了突变,决策者需要及时地找到这些因素,并分析其变化的原因,以便随时调整经营策略。那么如何在决策系统中实现“告警”呢?通过“告警规则”定义指标的正常取值范围。对于超出正常范围的指标值,在报表中用一个显著的背景色标示出来,以辅助决策者快速、直观的发现异常的指标值。,10,1.2 规则设计原理介绍,(2)告警规则告警规则是在扫描表格单元格的过程中被执行。举例如下:假设A、B、C、D、E、F是报表中的单元格。想设立告警:ABCD的时候,E和F告警,告警等级为严重。条件部分是:如果当前扫描的单元格是 E 或者 F,返回True实体部分是:If(ABCD),then setAlert(GetCurCellPath(),严重告警),11,1.2 规则设计原理介绍,(3)跳转规则跳转规则是对报表分析设计功能的一种扩展。许多报表之间不是独立、没有任何联系的,在查看分析某报表时,往往希望参考其他关联报表。在BI.Office中可以通过“跳转规则”在查看报表时插入另一报表的所有报表元素(表格、图形等),方便关联报表之间的相互参考。支持两种跳转:AP报表 AP报表、AP报表 TP报表能够在跳转时进行报表参数传递通过多个报表的跳转实现一个分析流,12,1.2 规则设计原理介绍,(4)可见规则可见规则主要用于隐藏表格中指定行或者列,使得指定的行列在一定条件下不可见。通常情况下,可见规则都是和计算规则、告警规则等结合在一起使用。例如:在定制计算规则时,为了提高运算速度,增加多个Tag成员用于存储中间运算结果,而在报表中是不希望这些中间结果显示出来,这时我们就可以用可见规则隐藏。,13,1.2 规则设计原理介绍,(5)表格规则表格规则属于表格展示层的数据处理,主要用于设置报表数据的表现格式。表格规则可以定义数据格式;甚至可以修改数据;例如:对于某些不能显示数据单位的普通报表,通过表格规则设置单位;通过报表规则设置数据的小数位数、千分位分隔符等。,14,1.2 规则设计原理介绍,(6)命名集规则命名集规则主要用于动态的增加报表成员。在浏览报表时,可以任意选择该成员的取值范围,方便数据之间的对比。命名集规则是在服务器端进行数据查询之前,根据所定义的命名集函数运行取得成员后,动态地将之加入到查询结构中去;对客户端而言是透明的。提供多种命名集函数,如GetChildren、GetDescendants、GetTimeSegment等。通过这种方法增加的成员,同普通成员一样,可以做进一步的钻取等分析操作。,15,1.2 规则设计原理介绍,规则执行顺序计算规则(扫描执行)告警规则(扫描执行)表格规则(扫描执行)可见规则(顺序执行)命名集规则(顺序执行)跳转规则:由客户端点击右键菜单触发*扫描执行:按报表单元格逐个扫描,发现有匹配规则就执行。*顺序执行:跟单元格无关,按规则顺序执行。若规则是顺序执行,那么GetCurCellPath()函数将不能运行。,16,1.3 规则设计函数和参数,规则函数规则定义:分为条件和实体两个部分条件部分:限定该规则的使用范围;实体部分:指定指该规则将执行的操作。这两部分都是函数的嵌套组合。函数的返回类型有多种:Set(集合)、MemberSet(成员集合)Member(成员)、String(字符串)Numeric(数值)、Boolean(布尔),17,1.3 规则设计函数和参数,规则参数参数分为两种:静态参数:规则设置中,引用函数时,指定具体取值的参数。动态参数:在规则设置时,没有指定具体的输入值。完成规则设置后,在报表界面自动显示该参数的取值框,可在此动态输入参数。动态参数的引用:在定制规则的过程中,有一些参数取值相同,为了减少动态参数的重复输入,系统引入了参数引用。例如:表达式中用到函数func1(a,b,c)、func2(m,n)、func3(p,q),其中m与a同值,p也与a同值。为了实现 m=a、p=a,而无需输入三次值,可以建立参数引用”m引用a、p引用a”,这样当a值改变的时候,m和p的值也会同时改变。,18,1.3 规则设计函数和参数,规则参数参数类型每种类型的参数在客户端会有对应的展示控件。参数支持的数据类型:,Dimension(维类型)Member(成员)Level(层次)TimeSegement(时间段)MemberSet(成员集合)Set(集合),String(字符串)Numeric(数值)Boolean(布尔)AlertLevel(告警等级)ReportInfor(报表),19,2.规则使用篇,目标:基于单元格的数据重组,实现能够定制任意复杂的OLAP报表!,BI.Office Rule Engine,20,2.1 规则使用规则编辑器,清 空:将规则编辑框中的公式全部删除;上一步、CtrlZ(Undo):撤销前一次规则修改操作;下一步、CtrlY(Redo):取消上一次撤销操作;CtrlA(Select All):将编辑框中的公式全部选中;CtrlC(Copy):将编辑框中当前选中的公式或参数复制到剪贴板中。CtrlX(Cut):将编辑框中当前选中的公式或参数复制到剪贴板中,并删除当前选中的公式或参数。CtrlV(Paste):将当前选中的公式或参数删除,并将剪贴板中的公式或参数复制到当前选中位置。参数值输入:在规则编辑器中双击参数,弹出控件框输入参数值。*布尔值Boolean和集合Set不能手工输入,只能使用函数。动态参数输入:在编辑或查看报表界面中,增加控件输入框(可设参数引用)参数信息设置:在规则定制界面中,选中任一个参数点击右键,即弹出参数信息设置窗口。,21,2.2 规则使用规则类型,规则类型计算规则示例告警规则示例跳转规则示例可见规则示例表格规则示例命名集规则示例辅助工具参数引用参数顺序表达式样例,22,2.2 规则使用计算规则,23,2.2 规则使用告警规则,24,2.2 规则使用跳转规则,25,2.2 规则使用可见规则,26,2.2 规则使用表格规则,27,2.2 规则使用命名集规则,28,2.2 规则使用参数引用,报表定制多个规则后,通常存在多个动态参数,并且其中多个动态参数的取值相同。这时,在BI.Office中可以通过“参数引用”减少动态参数的重复手动取值,参数引用对存在动态参数数量很多的报表非常适用。*通常在定制完所有规则后,再定义“参数引用”关系。,29,2.2 规则使用参数顺序,通常动态参数的顺序是按照规则的构建顺序来排列的,可能并不满足用户显示要求。“参数顺序”功能,就是用于调整动态参数在报表中的显示顺序。通过调整,使报表更美观。*通常在定制完所有规则并定义了“参数引用”关系后,再调整“参数顺序”。,30,2.2 规则使用表达式样例,表达式样例是为规则定制提供的快捷功能。规则定制中的条件设置和实体设置,是一系列函数嵌套组成,通常很多时候函数组成大致相同,只需要修改其中函数的参数即可。为了减少重复操作,BI.Office提供了表达式样例,用于定制表达式模型。当定制规则遇到大致相同的函数嵌套时,直接引用表达式模型,简便操作。*定义表达式样例保存后,可在规则定制中直接引用。,31,2.3 规则使用应用示例,实际应用举例如何实现“增量计算”?如何实现“同期分析”?如何实现包含“比重”的报表?如何实现“多时段分析”?如何实现“多维度聚合”?,32,2.3 应用示例1 增量分析,33,2.3 应用示例2 同期分析,34,2.3 应用示例3 比重分析,35,2.3 应用示例4 多时段分析,36,2.3 应用示例5 多维度聚合,37,Thank you!Any Question?,BI.Office Rule Engine,