智能化规则引擎技术研究
2018-09-14赵志伟
赵志伟
智能化规则引擎技术研究
赵志伟
(星环众志科技(北京)有限公司,北京 100044)
在今天这个急剧变化的市场上,高效的业务决策可以带来重要的竞争优势。对业务进行有效的规则管理就是决策者通过制定规则采用适合于本企业的决策模式,以达到企业管理的一种管理方法。本文阐述了智能化规则引擎产生的需求背景,详细介绍了规则引擎的定义、实现原理。描述了业务规则定义,决策矩阵和决策树的配置原则。以及规则引擎在与外部业务系统进行交互的情况下,如何进行有效的测试和系统调用。
规则引擎;业务规则;控制器;决策矩阵;决策树;逻辑校验
0 引言
在很多行业的企业级项目应用中,比如银行、保险领域的业务规则往往非常复杂,并且规则处于不断更新变化中。而现有很多系统的做法基本上都是将业务规则绑定在程序代码中,整个系统呈现出的业务规则与实现程序的紧耦合状态非常明显。
企业为适应市场的多变性,导致业务逻辑也必然是多变的。理想情况下,业务逻辑的改变应该能够实时的反映在企业信息系统中。但是传统的方法往往会使这种反映出现滞后,进而可能使企业错过市场机遇。
在企业IT系统建设过程中如果能够建立一套规则引擎[1],将业务规则从技术实现中提取出来,实现技术和业务分离。业务分析人员定义业务规则、开发人员处理技术实现,各自做自己所擅长的事情,将是一种非常好的解决方案。
本文主要研究基于动态业务环境中,业务人员驱动整个企业过程的最佳实践-智能化规则引擎的原理与实现思路[2-3]。
1 规则引擎实现原理
1.1 规则引擎定义
规则引擎是一种嵌入在应用程序中的组件,其主要思想是将应用程序中随着时间、空间动态易变的业务决策部分从应用程序代码中分离出来,使用预定义的语义模块编写业务决策。由用户或开发者在需要时进行配置、管理,接受业务系统的数据输入,解释业务规则,并根据规则做出业务决策的引擎。
业务系统根据自身需求提供业务编号和相应的业务接口信息,将请求信息发送到规则管理系统。规则管理系统接收到业务系统的请求后,将该请求转发到规则引擎。规则引擎根据业务编号再将该请求信息分配到相应的业务处理模块进行准入判断:如果业务信息触发了该笔业务的准入或者拒绝的条件,则系统不对接口信息判断直接给出决策结果;如果该请求没有触发准入或者拒绝条件,则进行业务信息的规则处理,最终给出决策结果,并将结果响应回业务系统。
图1 规则管理系统业务处理流程流程
1.2 配置业务规则
业务规则是指对业务定义和约束的描述[4-5],用于维持业务结构或控制和影响业务的行为。业务规则描述了业务过程中重要的且值得记录的对象、关系和活动。其中包括业务操作中的流程、规范与策略等。
业务规则技术的基本思想是:将系统处理的业务逻辑从程序代码中抽取出来,将其转变为简单的业务规则,以结构化的业务规则数据来表示业务行为,采用类自然语言来描述,并集中存储在规则库中。
业务规则技术的理论基础是:设置一个或多个最细粒度的事实条件到一个规则上,当满足这些条件集合时会触发一个或多个操作。以规则形式捕捉策略语句能提供极大的灵活性和良好的适应性,是企业保持竞争优势的决定性因素。在市场驱动的情况下,系统架构和模型必须对客户、竞争对手、合作伙伴和整个市场情况的各种变更及时响应,同时将这些变更产生的需求作为业务规则体现到系统中去。
规则引擎可由用户根据业务要求进行单个业务规则的创建、编辑和删除操作,在创建规则时可以使用系统中已有的决策变量,也可以使用由用户定义的衍生变量。每个规则应有对应的原因码,原因码可由用户自行设置。用户可以设置规则的触发条件(满足规则/不满足规则时触发),在触发规则后系统可按照规则设置的优先级返回触发规则的原因码。业务规则是可以分组管理的,在每个分组中可以设置规则之间的优先级,同时对于不同的规则分组,也可以设置优先级。
以某学校评选学生奖学金为例,根据专业课平均分和英语四级成绩分别评选:
(1)专业课平均分高于85分,且通过英语四级考试,可评一等奖学金。
(2)专业课平均分高于85分,没有通过英语四级考试,可评二等奖学金。
(3)专业课平均分在75分和85分之间,且通过英语四级考试,可评二等奖学金。
(4)专业课平均分在75分和85分之间,没有通过英语四级考试,可评三等奖学金。
根据上述奖学金评选规则可将规则梳理成下表形式,每条规则中的条件可以设置优先级判断,也可以设置成相同的优先级并行计算判断,如表1所示。
根据上面表格内容可在在规则引擎中绘制4条业务规则组件,如图2所示。
1.3 配置决策矩阵
决策矩阵是一种呈表格状的图形工具,适用于描述判断条件较多,各条件又相互组合、有多种决策方案的情况。精确而简洁的描述复杂逻辑的方式,将多个条件与这些条件满足后要执行的动作相对应。不同于传统程序语言中的控制语句,决策矩阵能将多个独立的条件和多个动作直接的联系清晰的表示出来。
表1 业务规则
Tab.1 Business rules
图2 规则列表
决策矩阵能罗列出所有的可能情况,并清晰的指出相应的处理方式,用户不需要考虑其中的逻辑关系就能看出其中什么样的动作对应什么样的情况,相较于程序语言中层层嵌套的逻辑语句具有更加直观的效果。而所有可能情况的平面罗列,也能避免在程序语言编写中因为逻辑上的层层嵌套而产生遗漏,尤其在if-then-else结构中else部分是可选的情况下。
根据上一章节中的业务规则列表可编写如表2所示,决策矩阵。
表2 决策矩阵
Tab.2 Decision matrix
1.4 配置决策树
决策树[6]是一种业务规则设定方式,以树型图的方式使业务用户将一组彼此相关的业务规则设定在一起。通过决策树,业务用户可以设定触发条件和执行结果:树干部分是各个条件的具体分叉值,树叶即节点部分则是各个条件的执行结果。从树根到树叶,每一条分支都是一条完整的规则。根据业务系统需求,规则引擎支持多种类型的决策结果(包括数值、策略表、政策规则集、衍生数据脚本、评分模型等)。
规则引擎配置决策树过程中,所有的条件和结果都可以由业务用户独立维护。业务用户只需要从相关的业务规则列表中选择需要的细分,即可通过拖拽的方式将业务规则直接应用于决策树中。系统添加决策树分支简单易行,可以支持分支的拖拽复制功能。也即可以将决策树中某个节点之后的内容整体复制后,通过粘贴的方式就可以创建新的分支。每个非叶子节点的条件均可以提供展开和折叠的功能,使其所属的所有节点可以根据要求灵活的调整,以便于用户维护复杂的决策树。在对决策树进行调整的时候,可以通过显示调整前和调整后的决策树,让业务用户直观地观察到策略树的变化。
将学校奖学金决策矩阵在规则引擎中配置成决策树的形式,展现如图3所示。
1.5 逻辑校验
规则引擎在决策组件绘制完成保存时可自动进行校验,能够对所有的业务规则、决策矩阵、决策树组件进行逻辑判断。检测组件是否存在异常逻辑,或是否存在差异、重叠、冲突、互斥、冗余、闭环等问题,以保证流程图配置的正确性。
系统发现逻辑错误后,可给出警告信息并生成错误报告,便于用户迅速发现问题所在。
检测系统是否存在异常,所有的检验需提供三种类型的结果输出:
图3 决策树
正常:无需修复,不会影响系统部署和运行。
警告:可以保留,不会影响系统部署和运行。
错误:必须修复,否则系统无法部署和运行。
2 系统测试
2.1 单元测试
系统可以针对业务规则、决策矩阵和决策树进行不同粒度的测试。
系统支持交互式测试,即系统可根据所选组件自动生成专门的信息录入页面,测试所需数据由测试人员手工输入,同时支持文件导入方式进行多条业务数据测试。
系统还支持从其他数据源(数据库、数据文件、数据集合)导入测试数据,进行线下批量测试。
系统同时支持模拟测试,点击测试按钮能够方便快速给出预算结果,但预算结果并不作为真正意义上的决策结果进行存储,只提供结果预览功能,供用户检查业务逻辑和结果预期。
系统测试结果可以直观的形式显示给用户,可以随时查询历史测试结果,并可以将测试结果保存到文件中,供后续分析使用。
2.2 试点测试
试点测试指在测试环境或生产环境中随机选取一部分业务请求,使用新的策略模型,对其效果与原策略模型进行比较。如果新策略模型效果超过旧策略模型,则将新策略模型运用到更大的业务群中,从而使效益不断得到优化和改善。
规则引擎对于试点测试的支持需求如下:
(1)对于不同的法人、机构、业务部门、用户级别都可以进行独立的测试。
(2)新策略模型被引入后,可通过策略报表功能对新旧策略模型的各项指标进行对比,以衡量其有效性。
(3)对执行新旧策略模型的执行周期具备控制功能:业务用户可对策略模型定义一个周期,在定义的周期内同一个业务不可以既执行旧策略模型又执行新策略模型。
(4)系统可自行设置新旧策略模型的抽样比例,并对抽样比例进行有效性控制。
(5)在策略组件的不同层面上(业务规则、决策矩阵、决策树)均可进行试点测试。对于策略流程的所有节点,包括所有的叶子节点和上层的父节点,也应支持试点测试。
3 外部系统调用
3.1 实时调用
实时调用是指业务系统与规则引擎间的数据交互采用实时方式:业务系统将请求数据发送给规则引擎,规则引擎接收请求信息进行规则计算,然后将计算结果及时反馈给业务系统。对于实时决策,规则引擎所使用的数据由业务系统提供,因此规则引擎应具备与业务系统的实时交互功能。
规则引擎对于业务系统的决策请求,应支持分布式的接口调用方式,并具有平台无关性。实时接口可直接来源于业务流程系统,也可从数据仓库、数据集市中获取数据,但是否获取数据要根据相应的决策要求来确定。
在实时接口中规则引擎可进行决策变量的汇总、计算、逻辑判断等,并将处理结果以决策输出的方式展现给用户,最终响应到业务系统。
规则引擎不仅要对业务系统提供决策服务,同时也需要调用其他应用系统获取服务[7]。此时,规则引擎作为业务请求的发起端,也需要具备接收其他应用系统实时反馈响应信息并及时处理的能力。
3.2 批量调用
批量调用也称非实时交互,是指当天日终批量处理时,规则引擎,通过数据平台完成相关数据信息的采集进行离线计算。
对于批量决策,规则引擎所调用的数据可来源于各业务系统或ODS系统、数据仓库、数据集市等。因此规则引擎应支持与相关系统的批量接口定义,满足业务系统的策略实施。
规则引擎对于批量接口支持数据库连接、数据文件处理、远程接口调用。批量策略既可以按照周期的方式自动运行,也可以由业务用户手工执行。批量调用策略模型后,决策结果信息需响应给业务系统并保存到本地数据库。
在业务用户进行策略配置时会有调用外部系统数据(人行征信信息、法院失信信息、工商经营异常信息、行政处罚信息、公司关联方信息、芝麻信用、金融机构黑名单等)进行对比、校验,然后根据外部系统的返回结果确定下一策略分支流向的需求。规则引擎同样支持外部系统的请求响应,提供权限允许范围内的各种服务。
规则引擎作为客户端或服务端应支持多种协议的配置,比如soap协议、socket协议、webservice,还可以调用外部系统执行相关代码如SAS、SQL、bat、shell、produce等,并接收响应结果进行计算。
4 结论
规则引擎是使用在大规模复杂业务场景下必备的业务框架技术[8-10],使用这门技术搭建起来的系统能够很好的梳理清楚业务逻辑,并且能够方便快速的修改业务逻辑,甚至可以做到需求的实时生效。业务系统中引入规则引擎具有如下优势:
(1)分离商业决策者的商业决策逻辑和应用开发者的技术决策。
(2)实现业务规则的集中管理,从而快速响应业务系统的需求变更,加强业务处理的透明度。
(3)能有效的提高实现复杂逻辑代码的可维护性。
(4)应付特殊状况,将客户一开始没有提到的业务逻辑考虑在内。
(5)符合组织对敏捷或迭代开发过程的使用,提高软件系统的柔性和适应性。
(6)业务规则能作为知识被保留下来,不会随着关键人员的流失而流失。
(7)简化业务系统架构,优化业务应用,减少业务系统中对IT人员的依赖程度。
(8)降低系统的维护成本,方便系统的整合,减少编写硬代码业务规则的成本和风险。
[1] 陶晓俊, 朱敏. 基于规则引擎的企业服务开发模式[M]. 计算机技术与发展, 2008, 18(2): 115-118.
[2] 朱思远, 张雷. 一种分布式规则引擎的实现方法[J]. 软件, 2015, 36(12): 158-161.
[3] 王旭峰, 王智立. 基于SOA 的业务动态定制的网络管理系统设计与实现[J]. 软件, 2015, 36(1): 100-103.
[4] Managing the Business Rules Engine - How to Build a Business Rules Engine - 22 [J]. How to Build A Business Rules Engine, 2004: 1-7.
[5] Wiley Ian Graham.Business Rules Management and Service Oriented Architecture[J]. Whitepaper, 2005
[6] 赵力衡. 基于决策树的手写数字识别的应用研究[J]. 软件, 201, 39(3): 90-94.
[7] 郭晋舟, 詹舒波. 呼叫中心业务管理系统的研究与设计[J].软件, 2016, 37(2): 54-57.
[8] (美)伽玛著, 李英军, 等译. 设计模式[M]. 机械工业出版社, 2000.
[9] 程杰. 大话设计模式[M]. 清华大学出版社, 2007.
[10] (美)迪达著, 李宏东, 等译. 模式分类(原书第2版)[M]. 机械工业出版社, 2003-09.
The Research on Intelligent Rule Engine Technology
ZHAO Zhi-wei
(Transwarp Zhongzhi Technology (Beijing) Inc. Beijing 100044)
In today's rapidly changing market, efficient business decisions can bring important competitive advantages. The effective rule management of the business is a management method for the decision makers to adopt the decision-making pattern suitable for the enterprise through the formulation of rules and to achieve the management of the enterprise. This paper elaborates the background of the requirements generated by the rule engine, and introduces the definition and implementation principle of the rule engine in detail. The configuration principles of business rule definition, decision matrix and decision tree are described. And how the rules engine can effectively test and invoke when interacting with an external business system.
Rule engine; Business rules; Controller; Decision matrix; Decision tree; Logic check
TP319
J
10.3969/j.issn.1003-6970.2018.08.014
赵志伟(1982-),男,高级工程师,主要研究方向:内部评级系统、大数据、人工智能、云计算。
本文著录格式:赵志伟. 智能化规则引擎技术研究[J]. 软件,2018,39(8):65-69