商业规则引擎运用杭州旗正信息技术有限公司課程內容VisualRules商业规则引擎概述判断何时利用BusinessRuleEngine处理应用程序逻辑如何建立、出版並執行規則如何通过规则服务使用商业規則动机有关商业規則经常变动变动的原因多半来自非开发人员商业规则引擎(BusinessRuleEngine)将需要处理的数据直接以值的方式传递支持直接从多个数据源存取数据以顺序执行的方式执行规则对于同级匹配规则,可发起重新执行范例規則:如果信号灯是红灯且转向不是右转停车等待如果信号灯是绿灯或转向是右转通行商业規則引擎(BRE)Java应用程序BRE非Java应用程序规则服务BRE規則儲存区商业規則引擎(BRE)相关概念規則包(RulePackage)规则(Rule)规则集(RuleSet)决策表(DecisionTable)商业对象库(BOM)規則包(RulePackage)可通过规则引擎被外部调用的一个执行单元完全独立,包含了运行时相关的所有商业对象数据以及规则的定义規則(Rule)一個規則代表單一可執行的敘述規則是由条件(condition)和动作(action)构成条件的目的在评估成立与否条件成立,执行动作规则集(RuleSet)将规则进行分组对同一组规则设置公共条件对同一组规则设置循环条件决策表(DecisionTable)一组具有类似条件和类似赋值操作的规则的集合以表格的形式描述对值的赋值操作商业对象库(BusinessObjectModel)定义了规则包与外部的接口定义了规则包内部可操作的数据对象定义了可引用的公共规则和规则集内容商业規則引擎商业数据对象类型规则包执行时的传递参数规则包执行时的临时数据可调用的Java类的方法规则包中各个常量可操作数据库的各种对象,包括数据库表、视图、查询、SQL内存数据表格对象XML节点对象处理Excel工作表的对象值数据规则包执行时的传递参数数据规则包执行时新创建的数据类型支持number,string,list,map,boolean,file,datetime,xml类型支持路径中Java类支持常量类型的值可以对值进行分组操作可以对值添加对其操作的公式或者方法数据库对象支持具有JDBC驱动的各种类型的数据库从数据库中读取表、视图、存储过程的信息,自动创建对象以及各种操作方法编辑时可以直接查阅表中的数据根据自定义的SQL语句,创建返回结果集或者返回值的数据对象以及各种操作方法可以直接测试SQL语句的合法性,以及根据参数测试返回数据可以对数据进行缓存处理表格数据对象支持大批量表格类数据的存取可根据Excel文件导入字段定义以及数据可根据数据库对象的结果集导入可对表格数据进行汇总、分组、筛选可对表格数据进行相加、减、乘、除等数值操作可对表格数据进行遍历可将计算结果导出,和Excel比较Xml对象可以设置xml节点的属性可以设置xml节点的内容可以设置xml节点的子节点Excel工作表可以从工作簿中读取或者创建可以以表格的形式访问可以以汇总表的形式访问可以设置某个单元格的值可以设置某个单元格的颜色可以设置某个单元格的注释自定义Java方法publicdoublefunction(intarg1,intarg2){//dosomeaction}业务词汇(Vocabularies)业务词汇是业务人员熟悉的字词或片语和资料或函数之间的对照关系提供规则中可选的业务对象业务词汇让我们能以非开发人员所能了解的方式定义业务规则可以对对象库中所有的对象定义业务词汇可随时变更,不影响规则逻辑配置規則利用Eclipse插件版的规则配置器配置利用应用程序版的规则配置器配置配置阶段,可以直接进行测试配置完规则之后,可以上传规则包到服务器可通过规则管理系统审核、发布规则包发布后的规则会自动更新到规则服务中執行规则包在編輯器中測試在規則引擎中執行规则包規則在內部是以XML的型式存在可在规则管理系统中,直接通过参数调用规则包規則执行順序规则以顺序执行的方式执行排序在前面的规则先执行在规则集中的规则,只有满足规则集的条件才能进行执行同级匹配对于同级规则,按照匹配方式执行可以设置当条件符合时,重新执行规则包这样只有当没有规则的条件符合时,才结束规则包业务規則語言每一個規則都存成XML文件可自动将业务规则语言翻译成程序语言变更后可以更新版本您可以从資料庫中取出該XML如何執行业务規則通过java规则引擎调用规则包通过Java接口进行调用可以通过规则包调用名、主版本号、递增版本号来进行调用通过SOAP规则服务调用规则包可以通过规则包调用名、主版本号进行调用通过Servlet规则服务调用规则包可以直接返回XML、Json、文本等格式的结果通过Socket规则服务调用规则包可以通过规则包调用名、主版本号进行调用執行規則//实例化规则引擎接口RuleEngineengine=RuleEngineFactory.newInstance().getRuleEngine();//传入规则包的参数值(传入数据)engine.put(“paramname”,o);//根据规则包调用名执行规则包engine.excute(“rulename”);//取回规则包的参数值(传入数据)engine.get(“paramname”);規則引擎更新服務以WindowsService的方式執行提供分散式更新能力可对定时执行规则,启动任务调用总结业务规则将业务逻辑从程序中解放出来,可以在程序外灵活配置规则包是一组业务规则的集合,是外部调用的执行一个执行单位可以为规则包指定版本号规则包中可以存取多个数据源,可以直接处理批量数据