业务规则处理方法、装置、设备、系统及存储介质与流程

文档序号:22126772发布日期:2020-09-04 17:39阅读:147来源:国知局
业务规则处理方法、装置、设备、系统及存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种业务规则处理方法、装置、设备、系统及存储介质。



背景技术:

随着企业的发展,企业业务变得越来越复杂,企业的决策系统与业务系统的结合也越来越紧密,如何实现决策系统中的业务规则成为了关注的焦点。

在实现本发明过程中,发明人发现在一种技术方案中,在实现目标业务系统的决策系统时,针对目标业务系统中的每个业务单独实现一套业务规则。然而,在这种技术方案中,仅能处理业务结构比较简单、业务规则间无复杂的依赖关系的情况,难以处理存在较复杂的依赖关系的业务规则。

因此,如何对存在较复杂的依赖关系的业务规则进行处理成为了亟待解决的技术难题。



技术实现要素:

本发明实施例提供一种业务规则处理方法、装置、设备、系统及存储介质,用以解决如何对存在较复杂的依赖关系的业务规则进行处理的问题。

根据本发明实施例第一方面,提供一种业务规则处理方法,包括:

确定预先配置的与目标业务的多个业务规则对应的规则配置信息,其中,所述多个业务规则能够按照所述规则配置信息中配置的执行顺序以及依赖关系形成环形有向图结构;

根据各个所述业务规则的所述执行顺序以及所述依赖关系,执行各个所述业务规则。

在本发明的一些实施例中,所述环形有向图结构为由多个被切割的环形结构组成的环形有向图结构,其中:

所述环形有向图结构的每个环形结构表示一个所述业务规则;

所述环形有向图结构中处于同一层的所述业务规则为可并行执行规则;

所述环形有向图结构中处于不同层的业务规则之间若存在所述依赖关系,则为不可并行执行规则,若不存在所述依赖关系,则为可并行执行规则。

在本发明的一些实施例中,根据各个所述业务规则的所述执行顺序以及所述依赖关系,执行各个所述业务规则,包括:

根据所述规则配置信息,生成所述多个业务规则的业务规则列表,其中,所述业务规则列表按照所述环形有向图结构从外层到里层的执行顺序以及所述依赖关系,生成的列表;

根据所述业务规则列表以及各个所述业务规则的所述依赖关系,并发执行各个所述业务规则。

在本发明的一些实施例中,所述根据所述业务规则列表以及各个所述业务规则的所述依赖关系,并发执行各个所述业务规则,包括:

根据所述业务规则列表以及各个所述业务规则的所述依赖关系,生成各个所述业务规则的业务规则队列,所述业务规则的业务规则队列为所述业务规则的前置依赖规则组成的队列;

根据各个所述业务规则的所述业务规则队列,并发执行各个所述业务规则。

在本发明的一些实施例中,所述根据所述业务规则列表以及各个所述业务规则的所述依赖关系,生成各个所述业务规则的业务规则队列,包括:

根据所述业务规则列表以及各个所述业务规则的所述依赖关系,确定各个所述业务规则的前置依赖规则;

将各个所述业务规则的前置依赖规则,推入各个所述业务规则的业务规则队列中。

在本发明的一些实施例中,所述根据各个所述业务规则的所述业务规则队列,并发执行各个所述业务规则,包括:

获取各个所述业务规则队列中的业务规则;

若所述业务规则的前置依赖规则已经全部执行完毕,则并发执行所述业务规则。

在本发明的一些实施例中,所述并发执行所述业务规则,包括:

根据预定映射关系,获取所述业务规则的规则实现标识,所述预定映射关系为所述业务规则的规则标识与所述业务规则的所述规则实现标识之间的映射关系;

根据所述规则实现标识,通过多线程的方式并发执行所述业务规则。

在本发明的一些实施例中,所述方法还包括:

将所述业务规则的执行结果与预设结果进行比较,确定所述业务规则是否执行成功;

若执行成功,则从所述业务规则队列中弹出所述业务规则;

若执行失败,则通过上下文通知所述业务规则执行失败。

在本发明的一些实施例中,所述规则配置信息包括:规则编号、规则名称、规则实现标识、前置依赖业务规则、参数、预期结果中的一种或多种。

本发明实施例的第二方面,提供了一种业务规则处理装置,包括:

规则配置确定模块,用于确定预先配置的与目标业务的多个业务规则对应的规则配置信息,其中,所述多个业务规则能够按照所述规则配置信息中配置的执行顺序以及依赖关系形成环形有向图结构;

规则执行模块,用于根据各个所述业务规则的所述执行顺序以及所述依赖关系,执行各个所述业务规则。

在本发明的一些实施例中,所述环形有向图结构为由多个被切割的环形结构组成的环形有向图结构,其中:

所述环形有向图结构的每个环形结构表示一个所述业务规则;

所述环形有向图结构中处于同一层的所述业务规则为可并行执行规则;

所述环形有向图结构中处于不同层的业务规则之间若存在所述依赖关系,则为不可并行执行规则,若不存在所述依赖关系,则为可并行执行规则。

在本发明的一些实施例中,所述规则执行模块,包括:

列表生成单元,用于根据所述规则配置信息,生成所述多个业务规则的业务规则列表,其中,所述业务规则列表按照所述环形有向图结构从外层到里层的执行顺序以及所述依赖关系,生成的列表;

并发执行单元,用于根据所述业务规则列表以及各个所述业务规则的所述依赖关系,并发执行各个所述业务规则。

在本发明的一些实施例中,所述并发执行单元包括:

队列生成单元,用于根据所述业务规则列表以及各个所述业务规则的所述依赖关系,生成各个所述业务规则的业务规则队列,所述业务规则的业务规则队列为所述业务规则的前置依赖规则组成的队列;

执行单元,用于根据各个所述业务规则的所述业务规则队列,并发执行各个所述业务规则。

在本发明的一些实施例中,所述队列生成单元包括:

根据所述业务规则列表以及各个所述业务规则的所述依赖关系,确定各个所述业务规则的前置依赖规则;

将各个所述业务规则的前置依赖规则,推入各个所述业务规则的业务规则队列中。

在本发明的一些实施例中,所述执行单元还具体用于:

获取各个所述业务规则队列中的业务规则;

若所述业务规则的前置依赖规则已经全部执行完毕,则并发执行所述业务规则。

在本发明的一些实施例中,所述并发执行单元还具体用于:

根据预定映射关系,获取所述业务规则的规则实现标识,所述预定映射关系为所述业务规则的规则标识与所述业务规则的所述规则实现标识之间的映射关系;

根据所述规则实现标识,通过多线程的方式并发执行所述业务规则。

在本发明的一些实施例中,所述装置还包括:

比较模块,用于将所述业务规则的执行结果与预设结果进行比较,确定所述业务规则是否执行成功;

规则弹出模块,用于若执行成功,则从所述业务规则队列中弹出所述业务规则;

通知模块,用于若执行失败,则通过上下文通知所述业务规则执行失败。

在本发明的一些实施例中,所述规则配置信息包括:规则编号、规则名称、规则实现标识、前置依赖业务规则、参数、预期结果中的一种或多种。

本发明实施例的第三方面,提供了一种业务规则处理系统,包括:

如上述第二方面所述的业务规则处理装置;

配置中心,用于负责存储和同步目标业务的规则配置信息;

缓存中心,用于存储所述目标业务对应的上下文信息。

本发明实施例的第四方面,提供了一种电子设备,包括:存储器,处理器;其中,

所述存储器用于存储所述处理器可执行指令的存储器;

所述处理器被配置为实现如第一方面所述的业务规则处理方法。

本发明实施例的第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面所述的业务规则处理方法。

本发明实施例提供的业务规则处理方法、装置、设备及存储介质,一方面,根据目标业务的多个业务规则的环形有向图结构,预先配置多个业务规则的执行顺序以及依赖关系,能够将复杂业务的业务规则形成环形有向图结构,便于对复杂业务的业务规则进行处理;另一方面,根据各个业务规则的预先配置的执行顺序以及依赖关系,执行各个业务规则,能够高效灵活地处理复杂业务的业务规则,从而能够支持分布式和高并发等实时性决策的应用场景。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1为本发明的一些实施例的业务规则处理方法的应用场景的示意框图。

图2为本发明的一些实施例提供的业务规则处理方法的流程示意图。

图3为本发明的一些实施例提供的业务规则的有向图结构的示意图。

图4为本发明的一些实施例提供与图3的有向图结构对应的规则洋葱模型的示意图。

图5为本发明的一些实施例提供的有向图结构的示意图。

图6为本发明的另一些实施例提供的与图5的有向图结构对应的规则洋葱模型的示意图。

图7为实现本发明的一些实施例提供的业务规则处理方法的业务规则处理系统的结构示意图。

图8为根据本发明的一些实施例提供的业务规则配置的示意图。

图9为根据本发明的一些实施例提供的业务规则与业务实现之间的映射关系的示意图。

图10为根据本发明的一些实施例提供的业务规则的四种实现方式的示意图。

图11为根据本发明的一些实施例提供的业务规则处理系统的示意框图;

图12为根据本发明的另一些实施例提供的业务规则处理方法的流程示意图;

图13为本发明的一些实施例提供的业务规则处理装置实施例一的示意框图;

图14为本发明的一些实施例提供的规则执行模块的示意框图;

图15为本发明的另一些实施例提供的业务规则处理装置实施例二的示意框图;

图16为本发明的一些实施例提供的电子设备的示意框图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

首先,对本发明所涉及的名词进行解释:

环形有向图结构:由多个被切割的环形结构组成的环形有向图结构,该环形有向图结构的每个环形结构表示一个业务规则,例如,该环形有向图结构可以是规则洋葱模型。

规则洋葱模型:指的是使用图形化的方式描述复杂业务的内部细节实现的模型。在使用规则洋葱模型时,通过剥洋葱来形象的表达多线程执行业务规则时的处理过程,每执行完成一个业务规则后,规则洋葱模型的洋葱环会剥落,露出内层洋葱环,且内层洋葱环无遮挡时,表示接下来内层规则可以被加入线程池执行。任何一个业务规则执行失败,导致整个剥洋葱的动作终止,业务执行失败。若所有洋葱环被剥落,则说明多线程执行完毕,业务执行成功。

洋葱环:指的是规则洋葱模型中的具体规则表现,用来描述具体的业务规则。洋葱环是环形结构或被切割或组装起来的环形结构。

遮挡:指在规则洋葱模型中,外层的业务规则会挡住内层的业务规则。外层业务规则优先于内层业务规则执行。业务规则之间存在遮挡,指的是业务规则之间存在前后依赖关系。

业务规则:在决策系统中,每一个决策的条件就是一个业务规则。在实际配置和开发中,出于性能考虑,可以将一部分业务规则的处理只用来于完善上下文数据,供其他业务规则执行。

上下文:一种类似总线bus模式的数据结构,在业务执行开始的时候会被创建,在业务执行完成后被销毁。每一个业务规则都可以读写上下文,用于处理复杂场景下的临时数据和结果等。

规则实现标识:规则实现标识是与业务规则的实现代码对应起来的标识信,具体而言,规则实现标识可以是与业务规则的实现代码的接口的标识信息,也可以是与业务规则的实现代码的接口对应的标识信息。

目前,在实现目标业务系统的决策系统时,针对目标业务系统中的每个业务单独实现一套业务规则,通过决策树或决策表来执行各个业务对应的业务规则。然而,发明人发现:在这种技术方案中,仅能处理业务结构比较简单、业务规则间无复杂的依赖关系的情况。

基于上述内容,本发明的基本思想在于:对复杂的目标业务进行拆分,形成目标业务的环形有向图结构,根据该环形有向图结构配置业务规则的执行顺序以及依赖关系。根据本发明实施例的技术方案,一方面,根据目标业务的多个业务规则的环形有向图结构,预先配置多个业务规则的执行顺序以及依赖关系,能够将复杂业务的业务规则形成环形有向图结构,便于对复杂业务的业务规则进行处理;另一方面,根据各个业务规则的预先配置的执行顺序以及依赖关系,执行各个业务规则,能够高效灵活地处理复杂业务的业务规则,从而能够支持分布式和高并发等实时性决策的应用场景。

图1为本发明的一些实施例的业务规则处理方法的应用场景的示意框图。参照图1所示,该应用场景包括业务系统110以及决策系统120。业务系统110和决策系统120可以为分布式系统。进一步地,业务系统110可以为贷款系统、也可以为信用评估系统或售后业务系统等,本发明对此不进行特殊限定。决策系统120包括业务规则处理装置122以及规则配置中心124。其中,业务规则处理装置112可以根据业务系统110的业务标识从规则配置中心124获取预先配置的对应的规则配置信息,根据获取的规则配置信息执行各个业务规则。

规则配置中心124预先配置有至少一个目标业务的规则配置信息,目标业务可以包括贷款业务、信用评估业务或售后业务等。例如,可以在规则配置中心124的数据库中预先存储至少一个目标业务的规则配置信息。数据库可以包括:mysql数据库、oracle数据库,或其他适当的数据库例如hbase数据库等数据库。

需要说明的是,业务规则处理装置110可以为通用计算设备例如台式计算机或膝上型计算机,也可以为其他适当的计算设备或计算模块例如云计算设备或云服务器,本发明对此不进行特殊限定。

下面结合图1的应用场景,参考附图来描述根据本发明的示例性实施例的业务规则处理方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施例在此方面不受任何限制。相反,本发明的实施例可以应用于适用的任何场景。

图2为本发明的一些实施例的业务规则处理方法的流程示意图。该业务规则处理方法可以应用于图1的业务规则处理装置110,下面结合附图对示例实施例中的业务规则处理方法进行详细的说明。

参照图2所示,在步骤s210中,确定预先配置的与目标业务的多个业务规则对应的规则配置信息,其中,多个业务规则能够按照规则配置信息中配置的执行顺序以及依赖关系形成环形有向图结构。

在示例实施例中,目标业务可以包括贷款业务、信用评估业务或售后业务等,本发明对此不进行特殊限定。业务规则的规则配置信息可以包括:规则编号、规则之间的依赖关系、规则实现标识、规则上下文参数以及预期结果中的一种或多种。以贷款业务为例,该业务对应的业务规则可以包括以下几个规则:(规则1)判断用户是否开通了白条、(规则2)判断用户是否在黑名单、(规则3)判断用户是否有过逾期、(规则4)判断用户是否经过身份证实名认证、(规则5)判断用户是否已经提升过额度、(规则6)判断用户是否是次级授信用户、(规则7)判断用户是不是正常开户的状态、(8)判断用户是否已经注销。图3示出了该白条业务的执行顺序以及依赖关系,规则1至8的执行顺序为{1,6,2,3,7,4,5,8}。

进一步地,在示例实施例中,多个业务规则能够按照规则配置信息中配置的执行顺序以及依赖关系形成环形有向图结构,例如,下图4所示的环形有向图结构。

在步骤s220中,根据各个业务规则的执行顺序以及依赖关系,执行各个业务规则。

在示例实施例中,根据业务规则的执行顺序,获取各个业务规则的规则实现标识,根据规则之间的依赖关系以及规则实现标识,执行各个业务规则。例如,以上述白条业务为例,规则1至8的执行顺序为{1,6,2,3,7,4,5,8},规则1为规则2和规则3的前置依赖规则,规则2位规则4的前置依赖规则,在按上述规则执行顺序执行各个业务规则时,在规则1执行完成之后,才能执行规则2和3,在规则2执行完成之后,才能执行规则4。

根据图2的示例实施例的技术方案,一方面,根据目标业务的多个业务规则的环形有向图结构,预先配置多个业务规则的执行顺序以及依赖关系,能够将复杂业务的业务规则形成环形有向图结构,便于对复杂业务的业务规则进行处理;另一方面,根据各个业务规则的预先配置的执行顺序以及依赖关系,执行各个业务规则,能够高效灵活地处理复杂业务的业务规则,从而能够支持分布式和高并发等实时性决策的应用场景。

图4为本发明的另一些实施例提供的环形有向图结构的示意图。参照图4所示,例如,以上述白条业务为例,参照图4所示,规则1至规则8形成环形有向图结构即规则洋葱模型,其中,环形有向图结构的每个环形结构标识一个业务规则,规则1和规则6处于该环形有向图结构的最外层,规则2遮挡了规则4,即规则2为规则4的前置依赖规则。

进一步地,在示例实施例中,按照剥洋葱的方式编排规则列表,处于同一层的业务规则不需考虑先后顺序,遍历结果如下:{1,6,2,3,7,4,5,8}。其中:

(1)规则1,规则6处于无遮挡状态,可以并行执行规则1和规则6。

(2)规则1未完成时,规则2、规则3有遮挡,处理规则2、规则3时将规则1放置对应的规则队列,规则1执行完成后,从含有规则1的所有队列中pop弹出规则1,规则2、规则3变为无遮挡状态,并行执行规则2和规则3。规则6、规则7的处理与规则1、规则2、规则3的处理类似,在此不再赘述。

(3)每个规则的前置规则都会有自己的规则队列。例如,由于规则4执行时,被规则2遮挡,在处理规则4时将规则2放置在规则4的规则队列。而规则2被规则1遮挡,规则1不需要放到规则4的规则队列中。规则2执行完成后,从所有含有规则2的规则队列中pop弹出规则2。

(4)对于规则5,存在规则3、规则4遮挡,规则5的规则队列的pop顺序与规则列表配置顺序一致。比如规则5的规则队列push压入队列时,压入顺序为规则3、规则4;在多线程执行时,即使规则4先执行完成,规则5的队列也不会发生pop弹出,而是等待规则3执行完成后,规则5的规则队列pop弹出。规则队列pop弹出规则3之后,发现已经执行过规则4,则继续pop弹出规则4,则规则5成为无遮挡状态,执行规则5。规则8的处理类似,在此不再赘述。

进一步地,如果一个规则被多个其他规则遮挡,则必须去掉遮挡该规则的多个其他规则之后,才可以执行该规则,即在该规则处于无遮挡状态时,才可以执行该规则。

(5)任何一个规则在执行失败时,要求业务快速响应该规则失败。业务将得到该规则失败的结果立即返回,并通知所有规则队列全部pop出,通知且允许线程池对处理中的线程进行中断回收。

图5为本发明的一些实施例提供的有向图结构的示意图。

参照图5所示,该有向图结构的每个节点表示一个业务规则,该有向图结构包括规则a至规则j,其中,规则a、b、c处于该有向图结构的同一层,规则d、e、f处于该有向图结构的同一层,规则i、h、g处于该有向图结构的同一层,规则c为规则d和规则f的前置依赖规则,规则a为规则i和规则h的前置依赖规则,规则i的前置依赖规则包括规则f和规则a。

图6为本发明的另一些实施例提供的与图5的有向图结构对应的规则洋葱模型的示意图。

图6中的规则洋葱模型,为根据图5中的有向图结构,表示成的由多个被切割的环形结构拼接组装起来环形结构,即规则洋葱模型。其中,每个被切割的环形结构定义为洋葱环,每个洋葱环代表一个业务规则。

参照图6所示,在示例实施例中,规则洋葱模型具有以下特征:

(1)规则洋葱模型的层数即有向图的深度。深度越深,代表整体业务复杂性越高。例如,规则d、e、f的深度为2,规则g、h、i的深度为3,规则j的深度为4,则规则4的复杂度大于规则g、h、i的复杂度。

(2)执行业务规则的时候,处于规则洋葱模型同一层的所有规则为可并行执行规则。

(3)对于处于不同层的业务规则,分为遮挡与不遮挡两种场景,遮挡即某洋葱环的上层存在其他洋葱环。被遮挡说明规则间有相互依赖关系,为不可并行执行规则。

(4)执行整个业务规则时,就如同剥洋葱一样,外层的某业务规则如果执行完成,则此洋葱环被剥落,内层的洋葱环没有遮挡,则可立即执行此业务规则。

因此,按照剥洋葱的方式编排规则洋葱模型中的业务规则,处于同一层的业务规则不需考虑先后顺序(并行执行),则对规则洋葱模型的遍历结果为:cbadfeihgj,即规则洋葱模型的执行顺序或执行列表可以为cbadfeihgj。

图7为实现本发明的一些实施例提供的业务规则处理方法的业务规则处理系统的结构示意图。

参照图7所示,该业务规则处理系统包括:业务系统710、管理端720、配置中心730、缓存中心740以及规则执行中心750。

其中,业务系统710可以为贷款(白条)系统、也可以为信用评估系统或售后业务系统等。

管理端720负责对业务系统710的业务进行配置、管理;对业务系统的业务规则的配置、管理、编排;对业务系统的业务实现的配置、管理等。管理端720的所有的操作数据会落地到配置中心730。

配置中心730,负责存储和同步所有的规则配置信息,支持分布式集群、支持推数据push和拉数据pull的数据同步等。(核心框架可参考框架实现如:zookeeper的框架实现)。参照图8所示,该业务规则配置的配置项或配置信息可以包括:规则编号、规则名称、规则实现标识、前置依赖业务规则、参数、预期结果等信息等。

缓存中心740,用于缓存上下文信息,支持规则执行期间对上下文的读写,支持分布式集群、支持高速读写操作等。(核心框架可参考实现如:redis的框架实现)

规则执行中心750:即计算中心,负责承接外部业务请求,根据不同的业务类型,获取配置中心的业务规则配置,根据业务规则配置,执行业务规则,调用具体的业务实现,返回计算结果。

业务规则与业务实现通过配置管理连接起来,业务规则配置中的规则实现标识是与业务实现代码对应起来的。具体的业务实现可以是原子化的,无状态的微服务。同一个业务实现可以对应多个业务规则,参照图9所示,业务规则1与业务实现1对应、业务规则b、c与业务实现2对应,业务规则d与业务实现3对应。

图10示出了根据本发明的一些实施例提供的业务规则的四种实现的方式的示意图。

参照图10所示,业务规则a、b、c、d对应业务实现1、2、3、4,业务实现1为本地服务实现,业务实现2为远程过程调用(remoteprocedurecall,rpc)实现,业务实现3为类加载实现,业务规则4为动态编译的实现方式。以java编程语言作为后端的业务实现编程语言为例,业务实现有以下4种方式:

(1)硬编码方式,适用于业务规则中的个性化规则,或对特殊类型的业务,做单独的业务编码实现。开发完成后需要重新发布应用,业务实现以本地化的服务形式暴露。

(2)分布式远程过程调用(remoteprocedurecall,rpc)服务,适用于复杂的后端业务场景,针对面向领域设计的不同业务域之间的服务调用,或者因不同模块划分产生的远程调用,以及外部服务调用等。此类服务只需rpc服务的提供方发布服务即可。(rpc核心框架可参考实现如:远程方法调用(remotemethodinvocation,rmi)、dubbo的框架实现)。

(3)采用java虚拟机(javavirtualmachine,jvm)的类加载器原理,达到热加载外部业务实现类的目的,外部的业务实现以jar方式提供,通过开发服务网关协议(openservicegatewayinitiative,osgi)热部署,可以将外部的业务实现,提供成业务规则执行的调用服务。

(4)采用java的动态编译原理,通过groovy方式编写代码,做到类动态编译。然后以spring的beanfactory将编译好的类封装成为可执行的bean,提供成业务规则执行的调用服务。与osgi不同的是动态编译是以类为单位的,osgi是以bundle为单位的热部署。两种方式的好处都是无需重新发布应用,业务规则实现会生效。

图11为根据本发明的另一些实施例提供的业务规则处理系统的流程示意图。

参照图11所示,该业务规则处理系统包括:配置中心1110、业务规则处理装置1100以及缓存中心1160。其中,配置中心1110用于负责存储和同步目标业务的规则配置信息;业务规则处理装置1100用于对目标业务的业务规则进行处理;缓存中心1160用于缓存上下文信息,支持规则执行期间对上下文的读写,支持分布式集群、支持高速读写操作等。

进一步地,业务规则处理装置1100包括:规则配置模块1115、规则列表模块1120、业务请求模块1125、规则获取模块1130、前置规则列表模块1135、规则队列模块1140、业务实现标识模块1145、业务实现模块1150以及线程池1155。

其中,规则配置模块1115用于对目标业务的业务规则进行配置,例如,对业务规则的规则编号、规则名称、规则实现标识、前置依赖业务规则、参数、预期结果等信息中的一种或多种进行配置。规则列表模块1120用于构建目标业务的规则列表。业务请求模块1125用于接收客户端发送的业务请求,该业务请求包含目标业务。规则获取模块1130用于获取与目标业务对应的规则列表。前置规则列表模块1135用于构建规则列表中的各个规则的前置规则列表。规则队列模块1140用于根据各个规则的前置规则列表生成各个规则的规则队列。业务实现标识模块1145用于获取规则列表或规则队列中的业务规则的业务实现标识。业务实现模块1150用于将业务实现标识发送给线程池1155。线程池1155用于执行与业务实现标识对应的业务实现流程。

图12为根据本发明的另一些实施例提供的业务规则处理方法的流程示意图。

参照图12所示,在步骤s1210中,获取配置中心的规则配置信息。

在示例实施例中,接收到目标业务的业务请求时,根据该目标业务的业务类型,从配置中心获取对应的规则配置信息,规则配置信息中包括多个业务规则,多个业务规则能够按照规则配置信息中配置的执行顺序以及依赖关系形成环形有向图结构即规则洋葱模型。

进一步地,规则配置信息可以包括:规则编号、规则名称、规则实现标识、前置依赖业务规则、参数、预期结果等信息中的一种或多种。

在步骤s1215中,根据规则配置信息构建规则列表,并循环处理规则列表中的各个业务规则。

在示例实施例中,根据规则配置信息中各个业务规则的执行顺序以及依赖关系构建规则列表,并循环处理规则列表中的各个业务规则。该规则列表为按照业务规则的环形有向图结构从外层到里层的执行顺序以及依赖关系,生成的列表。

在步骤s1220中,构建规则列表中的业务规则的前置依赖规则的规则队列,并循环处理该业务规则的规则队列中的前置依赖规则。

在示例实施例中,获取业务规则的前置依赖规则,将该业务规则的前置依赖规则推入push到规则队列,并循环处理该规则队列中的前置依赖规则。

在步骤s1225中,获取执行业务规则的上下文信息。

在步骤s1230中,根据上下文信息确定对应的当前业务是否已经结束,若已经结束,则结束业务处理;若未结束,则进行至步骤s1235。

在步骤s1235中,确定是否已经执行过该业务规则,若已经执行过该业务规则,则进行至步骤s1220;若未执行过该业务规则,则进行至步骤s1240。

在步骤s1240中,确定当前规则的前置依赖规则是否全部结束,若全部结束,则进行至步骤s1245;若未全部结束,则进行至步骤s1220。

在步骤s1245中,获取业务规则对应的规则实现标识。

在示例实施例中,根据预定映射关系,获取业务规则的规则实现标识,该预定映射关系为业务规则的规则标识与业务规则的规则实现标识之间的映射关系。例如,从规则队列中获取对应的业务规则,根据该预定映射关系,获取该业务规则的规则实现标识。

在步骤s1250中,向线程池提交规则实现的实现标识,通过线程池采用多线程的方式执行规则实现。

在步骤s1255中,确定规则实现是否执行成功,若执行成功,则进行至步骤s1260;若执行失败,则进行至步骤s1265。

在步骤s1260中,从规则队列中弹出pop对应的业务规则,然后进行至步骤s1215。

在步骤s1265中,发出提示消息,该提示消息用于通知上下文业务快速失败。

进一步地,在示例实施例中,根据业务规则执行情况,调整线程池和规则队列列表的参数。此外,还可以根据业务规则耗时情况调整业务规则执行的顺序。根据业务规则执行的情况调整规则处理过程,能够提高业务规则处理系统的性能,降低计算开销。

根据图12的示例实施例中的业务规则处理方法,一方面,根据目标业务的多个业务规则的环形有向图结构,预先配置多个业务规则的执行顺序以及依赖关系,能够将复杂业务的业务规则形成环形有向图结构,便于对复杂业务的业务规则进行处理;另一方面,根据各个业务规则的预先配置的执行顺序以及依赖关系,执行各个业务规则,能够高效灵活地处理复杂业务的业务规则,从而能够支持分布式和高并发等实时性决策的应用场景

图13为本发明提供的业务规则处理装置实施例一的示意框图。参照图8所示,该业务规则处理装置1300包括:

规则配置确定模块1310,用于确定预先配置的与目标业务的多个业务规则对应的规则配置信息,其中,所述多个业务规则能够按照所述规则配置信息中配置的执行顺序以及依赖关系形成环形有向图结构;

规则执行模块1320,用于根据各个所述业务规则的所述执行顺序以及所述依赖关系,执行各个所述业务规则。

根据图13的示例实施例中的业务规则处理方法,一方面,根据目标业务的多个业务规则的环形有向图结构,预先配置多个业务规则的执行顺序以及依赖关系,能够将复杂业务的业务规则形成环形有向图结构,便于对复杂业务的业务规则进行处理;另一方面,根据各个业务规则的预先配置的执行顺序以及依赖关系,执行各个业务规则,能够高效灵活地处理复杂业务的业务规则,从而能够支持分布式和高并发等实时性决策的应用场景。

在本发明的一些实施例中,所述环形有向图结构为由多个被切割的环形结构组成的环形有向图结构,其中:

所述环形有向图结构的每个环形结构表示一个所述业务规则;

所述环形有向图结构中处于同一层的所述业务规则为可并行执行规则;

所述环形有向图结构中处于不同层的业务规则之间若存在所述依赖关系,则为不可并行执行规则,若不存在所述依赖关系,则为可并行执行规则。

图14为本发明的一些实施例提供的规则执行模块的示意框图。参照图14所示,在本发明的一些实施例中,所述规则执行模块1320包括:

列表生成单元1410,用于根据所述规则配置信息,生成所述多个业务规则的业务规则列表,其中,所述业务规则列表按照所述环形有向图结构从外层到里层的执行顺序以及所述依赖关系,生成的列表;

并发执行单元1420,用于根据所述业务规则列表以及各个所述业务规则的所述依赖关系,并发执行各个所述业务规则。

在本发明的一些实施例中,所述并发执行单元1420包括:

队列生成单元,用于根据所述业务规则列表以及各个所述业务规则的所述依赖关系,生成各个所述业务规则的业务规则队列,所述业务规则的业务规则队列为所述业务规则的前置依赖规则组成的队列;

执行单元,用于根据各个所述业务规则的所述业务规则队列,并发执行各个所述业务规则。

在本发明的一些实施例中,所述队列生成单元包括:

根据所述业务规则列表以及各个所述业务规则的所述依赖关系,确定各个所述业务规则的前置依赖规则;

将各个所述业务规则的前置依赖规则,推入各个所述业务规则的业务规则队列中。

在本发明的一些实施例中,所述执行单元还具体用于:

获取各个所述业务规则队列中的业务规则;

若所述业务规则的前置依赖规则是否已经全部执行完毕,则并发执行所述业务规则。

在本发明的一些实施例中,所述并发执行单元还具体用于:

根据预定映射关系,获取所述业务规则的规则实现标识,所述预定映射关系为所述业务规则的规则标识与所述业务规则的所述规则实现标识之间的映射关系;

根据所述规则实现标识,通过多线程的方式并发执行所述业务规则。

图15为本发明的另一些实施例提供的业务规则处理装置实施例二的示意框图。参照图5所示,在本发明的一些实施例中,所述装置1300还包括:

比较模块1510,用于将所述业务规则的执行结果与预设结果进行比较,确定所述业务规则是否执行成功;

规则弹出模块1520,用于若执行成功,则从所述业务规则队列中弹出所述业务规则;

通知模块1530,用于若执行失败,则通过上下文通知所述业务规则执行失败。

在本发明的一些实施例中,所述规则配置信息包括:规则编号、规则名称、规则实现标识、前置依赖业务规则、参数、预期结果中的一种或多种。

本发明实施例提供的业务规则处理装置能够实现前述方法实施例中的各个过程,并达到相同的功能和效果,这里不再重复。

此外,本申请实施例还提供了一种电子设备,用于执行上述实施例所描述的业务规则处理方法。图16为本发明的一些实施例提供的电子设备的示意框图。如图16所示,该电子设备1600包括:至少一个处理器1602、存储器1604、总线1606及通信接口1608。

其中:处理器1602、通信接口1608、以及存储器1604通过通信总线1606完成相互间的通信。

通信接口1608,用于与其它设备进行通信。

处理器1602,用于执行程序1610,具体可以执行上述实施例中所描述的方法中的相关步骤。例如,处理器1602可以执行以下步骤:步骤s210,确定预先配置的与目标业务的多个业务规则对应的规则配置信息,其中,多个业务规则能够按照规则配置信息中配置的执行顺序以及依赖关系形成环形有向图结构;步骤s220,根据各个业务规则的执行顺序以及依赖关系,执行各个业务规则。

具体地,程序1610可以包括程序代码,该程序代码包括计算机操作指令。

处理器1602可能是中央处理器,或者是特定集成电路(applicationspecificintegratedcircuit,asic),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。

存储器1604,用于存放程序1610。存储器1604可能包含高速ram存储器,也可能还包括非易失性存储器,例如至少一个磁盘存储器。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是只读存储器(read-onlymemory,rom)、随机存取存储器、cd-rom、磁带、软盘和光数据存储设备等。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1