说说规则引擎
规则引擎的定义:
百度百科里对于规则的定义如下:业务规则是指对业务定义和约束的描述,用于维持业务结构或控制和影响业务的行为。业务规则技术的基本思想是将系统处理的业务逻辑从程序代码中抽取出来,将其转变为简单的业务规则,以结构化的业务规则数据来表示业务行为,采用类自然语言来描述,并集中存储在规则库中。业务规则由业务人员创建、实时更新和调试,业务规则之间的复杂逻辑关系由规则引擎处理。业务规则技术改变了传统的、以过程形式处理业务逻辑的方式。
业务规则专家组 (BRG) 规定了业务规则的两个定义。第一个定义与业务观点相关,而第二个定义与 IT 相关:
“从业务的角度看,业务规则是一种原则,包含在特定活动或范围内关于指导、操作、实践或过程的行为规范。”
“从信息系统的角度看,业务规则是一个定义或限制业务某些方面的声明。业务规则旨在用于断言业务结构,或者控制或影响业务行为。”
规则引擎实际就是将上述规则的一些 IT 技术实现。其面向的主要是规则推演。根据不同的场景(包括时间、入参)等来计算规则的结果。在当前的规则引擎系统中的,已经远远不止单一规则推演,实际上涵盖了规则、规则集、规则流等一系列的计算了。
规则引擎的作用场景
规则引擎面对的是处理复杂规则集合的场景。也就是由基础事件,加以推演或者归纳,得到最终的执行结果。规则处理的输入或触发条件是事件,且事件间有依赖或时序的关系,所以规则引擎经常和CEP(复合事件处理)结合起来使用。规则引擎的核心作用在于将复杂、易变的规则从系统中抽离出来,由灵活可变的规则来描述业务需求。
从代码的层面来说,规则引擎面临的场景就是多个嵌套的 if-else 的场景。
一些名词:
规则:由条件和结论构成的推理语句。当存在事实满足条件时,相应结论被激活(这里地方的说法为行为)。一条规则的一般形式如下:
上述定义中,用伪代码里描述,就是:
Rule1(){
if(LHS)then(RHS);
}
其中 LHS 为条件部分,RHS 为结论部分。
下面为一条规则的例子:
( 手机要素拒绝规则
(^手机号码没有实名制)|| (^手机在网时间不足 1 年)(^手机号码在黑名单库中)
->
(拒绝申请)
)
一个规则的 IF 部分被称为 LHS,THEN 部分被称为 RHS。
模式: IF 语句部分中的条件。IF 语句有可能是由几个更小的条件组成的大条件,而模式是指不能再分割的最小的原子条件。
事实:对象之间及对象属性之间的关系。这些事实是规则进行推理时的依据。举例说明:
申请人:(^张三 ^男性 ^44 岁 ^大学学历 ^已婚已育 ^私营企业工作 ^中层管理者)
规则集: 规则集也叫决策集,是由多个规则共同形成作用的组合。在规则集中,所有规则共享规则的触发事件,并按照一定的规则来依次进行推理。前一个规则的推理结果会影响整个集合的推理规则。
规则流:是规则集的一种表现方式,其中规则之间的流转是固定的流程方式。简单的理解,就是流程规则固定的规则集,用一张示例如下:
规则表:将规则集使用表格的形式进行记录和推理的一种方式。示例如下
其他形式的规则还包括有决策集、决策树、交叉决策表、评分卡等不同的模式,先列出名字,后面慢慢展开讲。
注 本文中图片引自https://blog.csdn.net/sdmxdzb/article/details/81461744 如有侵权,请告知删除。
版权声明: 本文为 InfoQ 作者【张老蔫】的原创文章。
原文链接:【http://xie.infoq.cn/article/b3b9ea4785cb87d8de9ff0802】。文章转载请联系作者。
评论