前面讲数据质量监控的时候,楼下很多评论希望能把规则引擎也讲一下,规则引擎是一个既复杂但又简单的系统,复杂的地方在于它要满足多种多样的
业务需求,需要知道各个事实的既定结果,然后通过既定公式获得最终需要的结果。
在开讲之前我们首先要了解几个名词:
facts
事实,我们实现的时候,会有一个事实库。用
F
表示。
patterns
模板,事实的一个模型,所有事实库中的事实都必须满足模板中的一个。用
P
表示。
conditions
条件
,
规则的组成部分。也必须满足模板库中的一条模板。用
C
表示。我们可以这样理解
facts
、
patterns
、
conditions
之间的关系。
Patterns
是一个接口,
conditions
则是实现这个接口的类,而
facts
是这个类的实例。
rules
规则
,由一到多个条件构成。一般用
and
或
or
连接
conditions
。用
R
表示。
actions
动作,激活一条
rule
执行的动作。
举个贷款的例子:一个在国企工作名下有一套房的35岁已婚男士去银行贷款买车。按照正常思维,这个人工作稳定有持续的经济来源,在18周岁到56岁之间生活能够自理并且能持续还款,同时已婚代表有很大概率该客户责任心大,至少不会因为一些小挫折不还款,有担忧,就有保证,如果是我的话,肯定贷给他。
其实大家不可能根据一篇文章就会知道所有的规则引擎知识。从网上下了一张图,如下就是一个地址校验的规则,首先我们去判断是否满足一个地址的长度或者说非空,才会走入下一个规则校验行政区和经纬度是否一致:
其实理论知识大家都知道不少了,上边的几个名词就是每条规则抽象出来的元件,还有就是rete算法是规则引擎比较常用的算法,大家可以了解一下。