
旗正规则引擎
旗正规则引擎,是由杭州旗正信息技术股份有限公司独立开发的一款规则引擎。
规则引擎由推理引擎发展而来,是一种嵌入在应用程式中的组件,实现了将业务决策从应用程式代码中分离出来,并使用预定义的语义模组编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。
基本介绍
- 中文名:旗正规则引擎
- 外文名:VRS
- 语言:java
- 性能:嵌入式组建
产生背景
企业管理者对企业级IT系统的开发有着如下的要求:(1)为提高效率,管理流程必须自动化,即使现代商业规则异常複杂(2)市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速、低成本的更新(3)为了快速、低成本的更新,业务人员应能直接管理IT系统中的规则,不需要程式开发人员参与。
而项目开发人员则碰到了以下问题:(1)程式=算法+数据结构,有些複杂的商业规则很难推导出算法和抽象出数据模型(2)软体工程要求从需求->设计->编码,然而业务规则常常在需求阶段可能还没有明确,在设计和编码后还在变化,业务规则往往嵌在系统各处代码中(3)对程式设计师来说,系统已经维护、更新困难,更不可能让业务人员来管理。
基于规则的专家系统的出现给开发人员以解决问题的契机。规则引擎由基于规则的专家系统中的推理引擎发展而来。下面简要介绍一下基于规则的专家系统。
使用方式
由于规则引擎是软体组件,所以只有开发人员才能够通过程式接口的方式来使用和控制它,规则引擎的程式接口至少包含以下几种API:载入和卸载规则集的API;数据操作的API;引擎执行的API。开发人员在程式中使用规则引擎基本遵循以下5个典型的步骤:创建规则引擎对象;向引擎中载入规则集或更换规则集;向引擎提交需要被规则集处理的数据对象集合;命令引擎执行;导出引擎执行结果,从引擎中撤出处理过的数据。使用了规则引擎之后,许多涉及业务逻辑的程式代码基本被这五个典型步骤所取代。
一个开放的业务规则引擎应该可以"嵌入"在应用程式的任何位置,不同位置的规则引擎可以使用不同的规则集,用于处理不同的数据对象。此外,对使用引擎的数量没有限制。
架构与推理

规则引擎的推理步骤如下:a. 将初始数据(fact)输入至工作记忆体(Working Memory)。b. 使用Pattern Matcher将规则库(Rules repository)中的规则(rule)和数据(fact)比较。c. 如果执行规则存在冲突(conflict),即同时激活了多个规则,将冲突的规则放入冲突集合。d. 解决冲突,将激活的规则按顺序放入Agenda。e. 执行Agenda中的规则。重複步骤b至e,直到执行完毕Agenda中的所有规则。
任何一个规则引擎都需要很好地解决规则的推理机制和规则条件匹配的效率问题。
当引擎执行时,会根据规则执行伫列中的优先顺序逐条执行规则执行实例,由于规则的执行部分可能会改变工作区的数据对象,从而会使伫列中的某些规则执行实例因为条件改变而失效,必须从伫列中撤销,也可能会激活原来不满足条件的规则,生成新的规则执行实例进入伫列。于是就产生了一种"动态"的规则执行链,形成规则的推理机制。这种规则的"链式"反应完全是由工作区中的数据驱动的。
规则条件匹配的效率决定了引擎的性能,引擎需要迅速测试工作区中的数据对象,从载入的规则集中发现符合条件的规则,生成规则执行实例。1982年美国卡耐基·梅隆大学的Charles L. Forgy发明了一种叫Rete算法,很好地解决了这方面的问题。现阶段世界顶尖的商用业务规则引擎产品基本上都使用Rete算法。
特点
使用规则引擎可以通过降低实现複杂业务逻辑的组件的複杂性,降低应用程式的维护和可扩展性成本,其特点如下:
· 分离商业决策者的商业决策逻辑和套用开发者的技术决策;
· 能有效的提高实现複杂逻辑的代码的可维护性;
· 在开发期间或部署后修复代码缺陷;
· 应付特殊状况,即客户一开始没有提到要将业务逻辑考虑在内;
· 符合组织对敏捷或叠代开发过程的使用;
定义
旗正规则引擎,是一个基于规则引擎实现的可视化定製业务逻辑的商业规则管理系统,同时又具有快速开发java软体项目的功能。旗正规则引擎可以在程式外部对软体项目中所涉及的业务逻辑进行单独管理,并且提供多种语言的API接口供外部程式调用。可以集成到现有的软体项目中,将软体中经常容易发生变化的部分,独立出来由规则库进行管理。可以用于直接开发web项目。

旗正结合国内项目的特点而开发的一款业务规则管理系统(BRMS)产品。是全中文配置、学习曲线度低、执行速度快、动态热部署、易集成等特点!旗正规则引擎以规则库为基础,规则编辑器为规则录入视窗,规则引擎为动力,辅以规则协同管理、远程项目与服务管理、集群规则同步等功能模组。
引用中国科技论文线上的一段话来解说,现有方法在对媒体编码速率进行调整的过程中都具有一定的弊端,如策略不够灵活、对网路资源的检测不够準确。提出了一种基于规则引擎的业务运行系统,能够通过终端用户的反馈信息準确的获得网路资源情况,同时通过规则引擎提供灵活的策略管理能够根据实际网路对策略进行调整使策略更加符合实际情况。规则引擎通过反馈的网路资源使用情况进行策略的匹配来决定如何对编码速率进行调整使用户获得最佳的体验。
软体部署
旗正规则引擎分为开发平台和运行平台,部署和集成与运行平台相关。现阶段考虑兼容性,配置的规则包编译后生成的代码,已经生成的jsp页面等,支持JDK 1.4及以上版本。 运行平台主要包括规则引擎、web框架以及生成规则包编译档案以及jsp代码。如果不通过旗正规则引擎来生成jsp代码,则不需要web框架。规则引擎和web框架是两个jar档案,可以直接打包放到web工程的lib目录中。编译后的规则包档案可以打包到web工程的classes下面,也可以指定特定目录,放到特定的目录下。生成jsp页面是纯粹的jsp页面,因此可以放到web工程的根目录下面
jar包
部署首先要发布两个jar包,一个是engine.jar,一个是flservlet.jar包。engine.jar和flservlet都是基于JDK1.4进行编译的。
web.xml配置
发布了类库之后还需要在web工程的web.xml中进行一定的配置来启动对应的web服务。
资料库配置档案
当规则包中需要调用资料库时,需要对应配置资料库源的信息。这个配置档案可以由资料库管理器生成。
规则包发布
发布规则包时,只需要发布编译后的规则包档案,一般是rsc格式的档案
web框架发布
web框架主要是生成的jsp页面用到的公共代码。这些代码存储在stimage目录下。只要将这个目录直接複製到web工程的根目录下即可。
web页面发布
页面配置器自动生成jsp代码,因此这些代码可以直接複製到web工程的跟目录下即可。
适用範围
·业务规则複杂多变,业务系统需快速做出决策,快速实现需求
·业务逻辑複杂,IT部门跟不上业务变化的节奏
·快速开发,java软体项目开发过慢,需要快速完成项目的开发
·需要有一个系统,可以像管理数据一样管理规则,沉澱企业业务知识与逻辑,形成可指导现实业务的专家系统。
以上常见于一些绩效管理系统、薪资考核系统、生产排程系统、运力运价系统、渠道管理系统、报价系统、通信运营商系统等,经常性的出现业务变更,且IT部门需要投入较多的时间和人力成本来迎合业务规则变更。
软体意义
我们通过一个案例来看规则引擎所带来的实际意义吧
华中电网IT运维系统具有专有的Rules自适应规则引擎。该引擎具有大量收集和标準化事件数据的能力, 能对各类安全设备告警事件进行跨类型、跨厂商的採集和分析,并可将处理后的信息精确关联到知识库中。这 种记忆功能是该引擎自适应能力的体现点之一。
同时,Rules自适应规则採用容易编辑和理解的脚本表达,避免了複杂的定製开发和程式修改。经过厂家 培训的技术实施人员即可掌握脚本编写规则。当增加新设备的时候,技术人员可以手动将非标準的脚本规则写 入rules规则库,大大提高了规则导入效率,节约了技术支持成本。
自适应规则引擎的自适应能力还体现为它的智慧型化分析统计功能上: 通过对数据的识别、归整、过滤、压 缩、归併、关联将大量原始事件归纳为安全事件,有利于企业提高对安全隐患的发现。[该引擎支持最高1000 条/秒的事件处理能力,可从容应对安全事件风暴