基于脚本语言的可视化业务规则引擎构建方法与流程

文档序号:32667381发布日期:2022-12-24 01:22阅读:27来源:国知局
基于脚本语言的可视化业务规则引擎构建方法与流程

1.本发明属于计算机编程、脚本语言、可视化业务规则引擎技术领域,尤其涉及一种基于脚本语言的可视化业务规则引擎构建方法。


背景技术:

2.在企业应用系统或互联网应用系统的研发过程中,涉及的业务场景日益复杂、业务规则需求繁多、迭代变更速度快、系统对象体系庞大,业务系统要适应这种变化,传统的做法在业务处理流程代码中增加很多判断逻辑代码和变更,导致系统业务规则逻辑散落在系统各个角落,难以管理,出现问题难以排查,大大增加了系统的维护和研发成本。
3.引入一个规则引擎来将业务流程执行逻辑和决策判断逻辑分开可以缓解部分问题,但找到一个合适的规则引擎仍然面临许多挑战,一是市面上的开源规则引擎功能有限,如缺少同时执行脚本语言和sql的能力,二是规则引擎能力难以扩展,满足不了复杂业务规则场景的需求,难以做到可视化配置管理;三是开源规则引擎本身有一定的门槛,带来的研发效率收益有限。


技术实现要素:

4.考虑到现有技术存在的缺陷和不足,本发明的目的在于提供一种基于脚本语言的可视化业务规则引擎构建方法,以解决业务系统的规则多变引起的系统维护性问题、研发效率问题及其研发成本问题。
5.基于脚本语言和元数据建模,配合特定业务场景规则执行方案算法和脚本扩展能力,暴露统一的规则方案执行接口给业务侧调用,实现特定业务场景规则的可视化注册、编排和配置。将特定业务场景的业务规则从流程处理执行逻辑中分离出来,且实现了可视化配置,仅需通过页面配置就可以实现业务规则的新增、变更和移除,实现了业务规则的集中管理,降低了业务规则的开发门槛,有效的解决了业务系统因规则多变引起的系统维护性问题、研发效率问题及其研发成本问题。在此基础上可以提供一种可视化工单调度引擎。
6.本发明具体采用以下技术方案:
7.一种基于脚本语言的可视化业务规则引擎构建方法,其特征在于,包括以下步骤:
8.步骤s1.1:进行业务系统元数据建模,定义实体表和属性表登记系统元数据;
9.步骤s1.2:规则脚本执行引擎的开发实现,脚本执行器支持至少包括:groovy和sql脚本语言的解析和执行;
10.步骤s1.3:特定业务场景规则执行方案算法的开发实现,在规则执行方案算法中包含规则执行顺序的编排,方案、规则和脚本的输入输出处理的基本逻辑;
11.步骤s1.4:特定业务场景规则的可视化注册,包括配置规则的基本信息,规则脚本和规则参数,一个规则允许被多个执行方案复用;
12.步骤s1.5:特定业务场景规则执行方案的可视化注册,包括规则的编排和方案元素的注册,一个执行方案允许被多个细化业务场景复用;
13.步骤s1.6:特定业务场景规则执行方案的业务编排配置,即特定业务场景下的细化业务场景与规则执行方案关联关系的绑定;
14.步骤s1.7:暴露规则方案的执行接口给业务系统调用,并暴露方案参数查询接口给业务开发人员查询执行某个规则方案所需的规则参数。
15.进一步地,在步骤s1.2中,特定业务场景规则脚本扩展能力的开发实现,是在原生脚本基础能力无法满足业务的情况下,开发扩展能力给规则脚本调用。
16.进一步地,所述特定业务场景指指工单调度,工单调度规则执行方案,简称工单调度方案,由必选规则、优选规则和评分规则组成。
17.进一步地,步骤s1.3中,执行方案算法包括如下步骤:
18.步骤s3.1:执行必选规则,每条必选规则筛选出若干个目标调度对象(包括不限于人员,部门,团队),多条必选规则结果取并集,若所有必选规则结果为空则返回失败,调度结束;
19.步骤s3.2:按优先级顺序逐条执行优选规则,每条优选规则基于当前调度结果进一步过滤筛选调度对象,一旦调度结果为空则返回失败,调度结束;
20.步骤s3.3:首先初始化当前调度结果每个调度对象的评分为0,然后执行评分规则,每条评分规则给当前调度结果的每个调度对象加上设定的得分;
21.步骤s3.4:从当前调度结果中选出评分最高的调度对象作为调度方案结果返回,调度成功。
22.进一步地,所述特定业务场景指业务决策;步骤s1.3中,所述执行方案算法是一棵二叉决策树,根节点和内部节点为条件表达式,叶子节点为决策选择目标,将根节点或内部节点的表达式注册成决策规则,输出类型为布尔值,整棵二叉决策树注册成一个规则方案,输出类型为决策选择目标,从而形成可视化业务决策引擎。
23.进一步地,步骤s1.6中的业务编排配置为:直接根据特定业务属性匹配到特定业务场景的规则执行方案,或,采用所述决策引擎匹配到目标规则执行方案。
24.与现有技术相比,本发明及其优选方案将特定业务场景的业务规则从流程处理执行逻辑中分离出来,且实现了可视化配置,仅需通过页面配置就可以实现业务规则的新增、变更和移除,实现了业务规则的集中管理,降低了业务规则的开发门槛,有效的解决了业务系统因规则多变引起的系统维护性问题、研发效率问题及其研发成本问题。
附图说明
25.下面结合附图和具体实施方式对本发明进一步详细的说明:
26.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。
27.图1是本发明第一实施例提供的一种基于脚本语言的可视化业务规则引擎构建方法的引擎结构图;
28.图2是本发明第二实施例提供的一种基于脚本语言的可视化业务规则引擎构建方法的调度算法执行流程图;
29.图3是本发明第三实施例提供的一种可视化决策引擎构建方法的二叉决策树与决定方案的转换示例图;
30.图4是本发明第四实施例提供的优化方案匹配步骤后的规则方案执行示意图。
具体实施方式
31.为让本专利的特征和优点能更明显易懂,下文特举实施例,作详细说明如下:
32.应该指出,以下详细说明都是例示性的,旨在对本技术提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本技术所属技术领域的普通技术人员通常理解的相同含义。
33.需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本技术的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
34.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.本发明的发明构思是:基于脚本语言和元数据建模,配合特定业务场景规则执行方案算法和脚本扩展能力,暴露统一的规则方案执行接口给业务侧调用,实现特定业务场景规则的可视化注册、编排和配置,也实现了业务规则与业务流程分离和规则的集中管理。
36.请参阅图1所示,本发明第一实施案例提供的一种基于脚本语言的可视化业务规则引擎构建方法,包括如下步骤:
37.步骤s1.1:业务系统元数据建模,定义实体表和属性表登记系统元数据,使用两个表即可满足等下需求,示例数据如表1为实体示例数据,表2为实体属性数据:
38.实体id实体java类名实体名称10001staffentity员工实体10002worksheetentity工单实体
39.表1元数据实体示例数据
[0040][0041]
表2元数据实体属性示例数据
[0042]
步骤s1.2:规则脚本执行引擎的开发实现,脚本执行引擎由若干个脚本执行器和脚本扩展能力模块(可选)组成,支持包括但不限于groovy和sql脚本语言的解析和执行;
[0043]
步骤s1.3:特定业务场景规则执行方案算法的开发实现,在规则执行方案算法中应包含规则执行顺序的编排,方案、规则和脚本的输入输出处理等基本逻辑,图1中列举了工单调度算法和方案执行决策算法;
[0044]
步骤s1.4:特定业务场景规则的可视化注册,包括配置规则的基本信息,规则脚本和规则参数,一个规则可以被多个执行方案复用,一个规则包含的数据包括如表3所属基本信息、表4所示规则脚本和表5所示规则参数等数据:
[0045]
规则基本信息属性示例数据规则id30001规则名称按地区编码筛选员工规则方案类型工单调度方案规则输出类型员工列表规则描述根据所属地区查找员工
[0046]
表3规则基本信息示例数据
[0047][0048][0049]
表4规则脚本示例数据
[0050]
规则脚本示例数据说明:脚本2001为sql脚本,作用是从员工表中查找特定地区的员工;脚本20002为groovy脚本,作用是处理脚本20001的sql查询结果,如果结果为空则将错误信息放入resultmap的errormsg属性,否则将结果存入resultmap的result数组;规则方案算法逻辑中会处理resultmap里的信息。
[0051]
脚本id方案id参数名称6000130001areacode
[0052]
表5规则参数示例数据
[0053]
规则参数示例数据说明:因为规则脚本20001引用了一个地区编码参数(areacode),这个参数要在规则参数中登记。
[0054]
可以将规则理解为一个编程语言函数,规则脚本是函数体代码,规则参数是函数的形参,函数返回结果都放在resultmap里。
[0055]
步骤s1.5:特定业务场景规则执行方案的可视化注册,包括规则的编排和方案元素的注册,一个执行方案可以被多个细化业务场景复用,一个规则方案包含的数据包括如表6所属基本信息、表7所示方案规则和表8所示方案元素等数据:
[0056]
方案基本信息属性示例数据方案id60001方案名称按地区包区调度方案类型工单调度方案方案输出类型员工方案描述根据工单所属地区派单给员工
[0057]
表6方案基本信息示例数据
[0058]
关系id方案id规则id700016000130001700026000130002700036000130003700046000130004
[0059]
表7方案规则示例数据
[0060]
元素id方案id规则参数id属性id80001600013000120005800026000130002200068000360001300032000780004600013000420008
[0061]
表8方案元素示例数据
[0062]
步骤s1.6:特定业务场景规则执行方案的业务编排配置,即特定业务场景下的细化业务场景与规则执行方案关系的绑定,示例数据如表9所示:
[0063]
配置id地区编码业务类型方案id90001591b00016000190002592b00016000290003593b00016000390004594b000160004
[0064]
表9方案业务编排配置示例数据
[0065]
步骤s1.7:暴露规则方案的执行接口给业务系统调用,并暴露方案参数查询接口给业务开发人员查询执行某个规则方案所需的规则参数。
[0066]
规则方案参数查询接口:某个规则方案所需的规则参数由业务编排配置表的匹配属性和方案元素所引用的属性组成,如上述表9、表8和表2示例数据关系,根据方案id便可以查询其执行所需的参数,如方案60001所需参数及其参数结构为:
[0067]
[0068][0069]
匹配属性地区编码areacode和业务类型biztype是固定的,方案元素所引用的属性是动态的,全部放在名为rulepramas由实体名和属性名作为键名的二维map里。
[0070]
规则方案执行接口:通过参数查询接口得到方案执行所需参数后,业务系统组织执行接口的入参如下所示:
[0071][0072]
方案执行时,首先根据地区编码591和业务类型b0001匹配到方案60001,然后将rulepramas传给脚本执行引擎执行方案60001的算法和规则,得到结果返回给业务系统。
[0073]
作为上述方案的进一步优化,步骤s1.2包含如下步骤:
[0074]
步骤s2.1:特定业务场景规则脚本扩展能力的开发实现,在原生脚本基础能力无法满足业务的情况下,可开发扩展能力给规则脚本调用,即在脚本执行引擎增加脚本扩展能力模块,脚本扩展能力是用java等业务系统编程语言实现的接口方法(给groovy脚本调用),或是数据库存储过程(给sql脚本调用);
[0075]
例如规则里需要获取员工当前的经纬度,这要其它系统模块做交互,脚本语言难以实现,这时需要开发一个取员工当前经纬度的扩展能力给groovy脚本调用。
[0076]
java接口:public map《string,double》getstafflocation(long staffid);
[0077]
将上述接口服务注册给groovy脚本执行器后,规则脚本就可以调用扩该扩展能力了,调用示例脚本代码如下:
[0078]
var location=getstafflocation(staffid);
[0079]
请参阅图2,本发明第二实施例提供的一种基于脚本语言的可视化业务规则引擎构建方法,基于上述第一实施例,其中步骤s1.3到步骤s1.6及步骤s2.1所述的“特定业务场景”指工单调度,工单调度规则执行方案,简称工单调度方案,由必选规则、优选规则和评分规则组成;步骤s1.3所述的执行方案算法包括如下步骤:
[0080]
步骤s3.1:执行必选规则,每条必选规则筛选出若干个目标调度对象(包括不限于人员,部门,团队),多条必选规则结果取并集,若所有必选规则结果为空则返回失败,调度结束;
[0081]
步骤s3.2:按优先级顺序逐条执行优选规则,每条优选规则基于当前调度结果进一步过滤筛选调度对象,一旦调度结果为空则返回失败,调度结束;
[0082]
步骤s3.3:首先初始化当前调度结果每个调度对象的评分为0,然后执行评分规则,每条评分规则给当前调度结果的每个调度对象加上一定的得分;
[0083]
步骤s3.4:从当前调度结果中选出评分最高的调度对象作为调度方案结果返回,调度成功。
[0084]
请参阅图3,本发明第三实施例提供的一种可视化业务决策引擎构建方法,基于上述第一实施例,其中步骤s1.3到步骤s1.6及步骤s2.1所述的“特定业务场景”指业务决策,步骤s1.3所述的执行方案算法是二叉决策树,根节点和内部节点为条件表达式,叶子节点为决策选择目标,可以将根节点或内部节点的表达式可以注册成决策规则,输出类型为布尔值,整棵二叉决策树注册成一个规则方案,输出类型为决策选择目标。
[0085]
假设特定工单调度场景下需要根据产品类型是否为宽带业务、归属地是否为省级和客户等级是否大于3三个条件来选择工单调度方案,图3展示了二叉决策树到决策方案的转换方法;
[0086]
可以将图3中二叉决策树的根节点或内部节点的表达式可以注册成如下表10决策规则:
[0087]
规则id规则名称方案类型输出类型描述30005决策规则1决策方案布尔值否为宽带业务30006决策规则2决策方案布尔值归属地是否为省级30007决策规则3决策方案布尔值客户等级是否大于3
[0088]
表10决策规则示例数据
[0089]
一个决策规则可以被多个决策方案复用。
[0090]
注册决策方案时,决策规则的编排过程就是二叉决策选择树组装过程,假设图3中决策方案1的id为60005,其决策方案与决策规则的关系数据如下表11所示:
[0091][0092]
表11决策方案与决策规则关系示例数据
[0093]
请参阅图4,本发明第四实施例作为上述第一实施例或第二实施例的优化,其中步骤s1.6业务编排配置可以是直接根据特定业务属性匹配到特定业务场景的规则执行方案,采用第三实施例所述的一种可视化业务决策引擎来匹配到目标规则方案。
[0094]
方案业务编排配置数据需将表9扩展成下表12所示
[0095][0096][0097]
表12决策方案与决策规则关系示例数据
[0098]
本发明未尽事宜为公知技术。
[0099]
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
[0100]
本专利不局限于上述最佳实施方式,任何人在本专利的启示下都可以得出其它各种形式的基于脚本语言的可视化业务规则引擎构建方法,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本专利的涵盖范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1