CN102681854A - 业务执行方法、服务器和计算机系统 - Google Patents
业务执行方法、服务器和计算机系统 Download PDFInfo
- Publication number
- CN102681854A CN102681854A CN2012101562030A CN201210156203A CN102681854A CN 102681854 A CN102681854 A CN 102681854A CN 2012101562030 A CN2012101562030 A CN 2012101562030A CN 201210156203 A CN201210156203 A CN 201210156203A CN 102681854 A CN102681854 A CN 102681854A
- Authority
- CN
- China
- Prior art keywords
- script
- service
- engine
- sub
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种业务执行方法、服务器和计算机系统,该业务执行方法包括:接收客户端发送的业务请求;在匹配规则集合中查找到业务请求对应的匹配规则条件之后,获得与该匹配规则条件对应的业务规则脚本;根据待处理的业务逻辑子脚本中的脚本类型指示信息确定待处理的业务逻辑子脚本的类型,将待处理的业务逻辑子脚本传递给与待处理的业务逻辑子脚本的类型对应的脚本执行引擎;接收对应的脚本执行引擎传递的需要调用的业务组件的API和需要调用的业务组件的类型,通过需要调用的业务组件的类型对应的执行引擎调用需要调用的业务组件的API。本发明可以实现业务的解耦,进而可以实现在异构的编程语言环境下进行业务的快速集成,提高集成效率。
Description
技术领域
本发明涉及通信技术,尤其涉及一种业务执行方法、服务器和计算机系统。
背景技术
随着软件规模的增大,软件系统的复杂性在增大,其内部的各个业务组件或者模块之间的耦合日益严重,成为了制约软件发展的阻力,这一阻力使得软件系统的维护成本不断上升,不利于软件系统的健康成长。
引入规则引擎可以使得业务的逻辑控制的代码不再固化在组件的代码中,而是使用业务规则来代替,规则引擎(Rules Engine;以下简称:RE)通过对业务规则(Business Rules;以下简称:BR)的解析和执行来调度每个组件的运行,原本每个业务组件提供的业务功能的逻辑控制代码迁移到业务规则中实现,在BR中完成对各个业务组件的应用程序接口(Application Programming Interface;以下简称:API)调用,而原先提供这个功能的业务组件只需要完成自身的业务接口,不再依赖其他业务组件的接口实现。整个业务逻辑的调度和运行由RE来负责,使得各个组件在开发的时候不再有依赖关系,只在运行时有业务依赖。
现有技术中,BR脚本都是符合Java规范请求94(Java SpecificationRequests 94;以下简称:JSR94)的规则脚本,换言之,即业务规则脚本不通用,因此在对异构编程语言的软件系统进行集成时有很大的障碍,例如:难以集成基于超级文本预处理语言(Hypertext Preprocessor;以下简称:PHP)、python、JavaScript、ruby等脚本开发的软件系统,以及C/C++等开发的二进制代码。
发明内容
本发明实施例提供一种业务执行方法、服务器和计算机系统,以实现在异构的编程语言环境下进行业务的快速集成。
本发明实施例一方面提供一种业务执行方法,包括:
接收客户端发送的业务请求;
在匹配规则集合中查找到所述业务请求对应的匹配规则条件之后,根据所述匹配规则条件获得与所述匹配规则条件对应的业务规则脚本,所述业务规则脚本包括至少两个业务逻辑子脚本,所述至少两个业务逻辑子脚本分别对应不同的脚本类型,所述脚本类型表示实现业务逻辑子脚本的编程语言;
根据所述至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定所述待处理的业务逻辑子脚本的类型,将所述待处理的业务逻辑子脚本传递给至少两个脚本执行引擎中与所述待处理的业务逻辑子脚本的类型对应的脚本执行引擎,使得所述对应的脚本执行引擎执行所述待处理的业务逻辑子脚本得到需要调用的业务组件的应用程序接口;
接收所述对应的脚本执行引擎传递的所述需要调用的业务组件的应用程序接口和所述需要调用的业务组件的类型,通过所述需要调用的业务组件的类型对应的执行引擎调用所述需要调用的业务组件的应用程序接口,向所述对应的脚本执行引擎返回所述需要调用的业务组件的应用程序接口的调用结果。
本发明实施例另一方面提供一种服务器,包括:引擎控制器、规则引擎、至少两个脚本执行引擎和执行引擎;
所述规则引擎,用于接收客户端发送的业务请求,在匹配规则集合中查找与所述业务请求对应的匹配规则条件,根据所述匹配规则条件获得与所述匹配规则条件对应的业务规则脚本,并将所述业务规则脚本传递给所述引擎控制器;所述业务规则脚本包括至少两个业务逻辑子脚本,所述至少两个业务逻辑子脚本分别对应不同的脚本类型,所述脚本类型表示实现业务逻辑子脚本的编程语言;
所述引擎控制器,用于根据所述至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定所述待处理的业务逻辑子脚本的类型,将所述待处理的业务逻辑子脚本传递给所述至少两个脚本执行引擎中与所述待处理的业务逻辑子脚本的类型对应的脚本执行引擎;以及接收所述对应的脚本执行引擎传递的需要调用的业务组件的应用程序接口和所述需要调用的业务组件的类型,通过所述需要调用的业务组件的类型对应的执行引擎调用所述需要调用的业务组件的应用程序接口,向所述对应的脚本执行引擎返回所述需要调用的业务组件的应用程序接口的调用结果;
所述至少两个脚本执行引擎中与所述待处理的业务逻辑子脚本的类型对应的脚本执行引擎,用于接收所述引擎控制器传递的所述待处理的业务逻辑子脚本,执行所述待处理的业务逻辑子脚本得到需要调用的业务组件的应用程序接口,将所述需要调用的业务组件的应用程序接口和所述需要调用的业务组件的类型传递给所述引擎控制器,以及接收所述引擎控制器返回的所述需要调用的业务组件的应用程序接口的调用结果。
本发明实施例再一方面提供一种计算机系统,包括:至少一个处理器,以及存储器,所述存储器用于存储可执行程序代码,其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于:
接收客户端发送的业务请求;
在匹配规则集合中查找到所述业务请求对应的匹配规则条件之后,根据所述匹配规则条件获得与所述匹配规则条件对应的业务规则脚本,所述业务规则脚本包括至少两个业务逻辑子脚本,所述至少两个业务逻辑子脚本分别对应不同的脚本类型,所述脚本类型表示实现业务逻辑子脚本的编程语言;
根据所述至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定所述待处理的业务逻辑子脚本的类型,将所述待处理的业务逻辑子脚本传递给至少两个脚本执行引擎中与所述待处理的业务逻辑子脚本的类型对应的脚本执行引擎,使得所述对应的脚本执行引擎执行所述待处理的业务逻辑子脚本得到需要调用的业务组件的应用程序接口;
接收所述对应的脚本执行引擎传递的所述需要调用的业务组件的应用程序接口和所述需要调用的业务组件的类型,通过所述需要调用的业务组件的类型对应的执行引擎调用所述需要调用的业务组件的应用程序接口,向所述对应的脚本执行引擎返回所述需要调用的业务组件的应用程序接口的调用结果;
所述脚本执行引擎和所述执行引擎运行在所述至少一个处理器上。
本发明实施例中,接收客户端发送的业务请求,在匹配规则集合中查找到上述业务请求对应的匹配规则条件之后,根据该匹配规则条件获得与该匹配规则条件对应的业务规则脚本,确定业务规则脚本包括的至少两个业务逻辑子脚本中待处理的业务逻辑子脚本的类型,将上述待处理的业务逻辑子脚本传递给至少两个脚本执行引擎中与该待处理的业务逻辑子脚本的类型对应的脚本执行引擎,使得上述对应的脚本执行引擎执行上述待处理的业务逻辑子脚本得到需要调用的业务组件的应用程序接口;然后接收上述对应的脚本执行引擎传递的需要调用的业务组件的应用程序接口和需要调用的业务组件的类型,通过需要调用的业务组件的类型对应的执行引擎调用上述需要调用的业务组件的应用程序接口,向对应的脚本执行引擎返回需要调用的业务组件的应用程序接口的调用结果。可见,本发明实施例中,业务规则脚本中的至少两个业务逻辑子脚本由各自类型对应的脚本执行引擎执行,获得各自需要调用的业务组件的应用程序接口,再通过需要调用的业务组件的类型对应的执行引擎调用该应用程序接口,从而可以实现业务的解耦,进而可以实现在异构的编程语言环境下进行业务的快速集成,提高集成效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明业务执行方法一个实施例的流程图;
图2为本发明规则引擎架构一个实施例的示意图;
图3为本发明规则引擎初始化一个实施例的流程图;
图4为本发明业务请求匹配流程一个实施例的流程图;
图5为本发明业务请求执行流程一个实施例的流程图;
图6为本发明事件转发流程一个实施例的流程图;
图7为本发明规则引擎架构一个实施例的示意图;
图8为本发明规则引擎初始化另一个实施例的流程图;
图9为本发明业务请求匹配流程另一个实施例的流程图;
图10为本发明业务请求执行流程另一个实施例的流程图;
图11为本发明服务器一个实施例的结构示意图;
图12为本发明服务器另一个实施例的结构示意图;
图13为本发明计算机系统一个实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明业务执行方法一个实施例的流程图,如图1所示,该业务执行方法可以包括:
步骤101,接收客户端发送的业务请求。
步骤102,在匹配规则集合中查找到上述业务请求对应的匹配规则条件之后,根据该匹配规则条件获得与该匹配规则条件对应的业务规则脚本。
本实施例中,与上述匹配规则条件对应业务规则脚本包括至少两个业务逻辑子脚本,该至少两个业务逻辑子脚本分别对应不同的脚本类型,上述脚本类型表示实现业务逻辑子脚本的编程语言;其中,上述实现业务逻辑子脚本的编程语言可以包括javascrip、java、C或C++等。
上述至少两个业务逻辑子脚本分别用于对执行上述业务请求时的每个业务步骤进行逻辑控制。
步骤103,根据上述至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定上述待处理的业务逻辑子脚本的类型,将上述待处理的业务逻辑子脚本传递给至少两个脚本执行引擎中与待处理的业务逻辑子脚本的类型对应的脚本执行引擎,使得上述对应的脚本执行引擎执行待处理的业务逻辑子脚本得到需要调用的业务组件的API。
其中,待处理的业务逻辑子脚本中的脚本类型指示信息可以为待处理的业务逻辑子脚本中脚本类型字段的值,也可以为待处理的业务逻辑子脚本中的用于指示待处理的业务逻辑子脚本的类型的标识,本实施例对待处理的业务逻辑子脚本中的脚本类型指示信息的具体实现方式不作限定,只要可以指示待处理的业务逻辑子脚本的类型即可。
步骤104,接收上述对应的脚本执行引擎传递的需要调用的业务组件的API和需要调用的业务组件的类型,通过上述需要调用的业务组件的类型对应的执行引擎调用需要调用的业务组件的API,向上述对应的脚本执行引擎返回需要调用的业务组件的API的调用结果。
需要理解的是,步骤104中的“通过上述需要调用的业务组件的类型对应的执行引擎调用需要调用的业务组件的API”可以理解为:由与需要调用的业务组件的类型对应的执行引擎调用需要调用的业务组件的API。
具体地,接收到上述对应的脚本执行引擎传递的需要调用的业务组件的API和需要调用的业务组件的类型之后,可以将需要调用的业务组件的API传递给与需要调用的业务组件的类型对应的执行引擎,由与需要调用的业务组件的类型对应的执行引擎调用需要调用的业务组件的API,然后接收上述对应的执行引擎传递的上述业务组件的API的调用结果,将上述需要调用的业务组件的API的调用结果返回给上述对应的脚本执行引擎。
本实施例中,上述执行引擎包括脚本执行引擎,以及java、C/C++等二进制代码执行引擎以及其他类型的执行引擎;上述业务组件的API可以包括:支持JavaScript脚本、Python脚本、Ruby脚本、JVM脚本、PHP脚本、C动态、shell工具和/或Perl脚本等脚本的API,支持Java、C/C++等二进制代码的API,以及网络服务描述语言(Web Service Definition Language;以下简称:WSDL)、简单对象访问协议(Simple Object Access Protocol;以下简称:SOAP)、表述性状态转移(Representational State Transfer;以下简称:REST)等形式的接口。
需要说明的是,本实施例中,引擎控制器根据上述至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定上述待处理的业务逻辑子脚本的类型之后,将上述待处理的业务逻辑子脚本传递给至少两个脚本执行引擎中与待处理的业务逻辑子脚本的类型对应的脚本执行引擎,使得上述对应的脚本执行引擎执行待处理的业务逻辑子脚本得到需要调用的业务组件的API。然后,引擎控制器接收上述对应的脚本执行引擎传递的需要调用的业务组件的API和需要调用的业务组件的类型,再通过与上述需要调用的业务组件的类型对应的执行引擎(这里的执行引擎可以是脚本执行引擎,二进制代码执行引擎或其他类型的执行引擎,具体根据实际需要调用的业务组件的类型来决定)调用需要调用的业务组件的API。也就是说,本实施例中,业务逻辑子脚本的执行和业务组件的调用,均由引擎控制器进行调度,从而可以在异构的编程语言环境下提高集成性。
本实施例中,上述对应的脚本执行引擎执行待处理的业务逻辑子脚本得到需要调用的业务组件的API可以为:上述对应的脚本执行引擎执行上述待处理的业务逻辑子脚本从引擎控制器提供的API获取执行上述业务请求所需的请求参数;然后,对应的脚本执行引擎根据该请求参数进行业务逻辑控制,得到需要调用的业务组件的API。
本实施例中,进一步地,步骤101之前,还需要初始化规则引擎,确定上述规则引擎从规则脚本配置库中加载的业务规则脚本所包括的至少两个业务逻辑子脚本的类型,创建与上述至少两个业务逻辑子脚本的类型分别对应的脚本执行引擎;执行上述至少两个业务逻辑子脚本获得匹配规则条件,并根据上述匹配规则条件构建上述匹配规则集合。
另外,本实施例中,接收到上述需要调用的业务组件的类型对应的执行引擎传递的上述业务组件触发的事件之后,将上述事件传递给上述规则引擎进行业务逻辑控制。
上述实施例中,业务规则脚本中的至少两个业务逻辑子脚本由各自类型对应的脚本执行引擎执行,获得各自需要调用的业务组件的应用程序接口,再通过与上述需要调用的业务组件的类型对应的执行引擎调用该应用程序接口,使得每个业务组件都可以由各自类型对应的执行引擎来执行,从而可以实现业务的解耦、业务组件的独立发布和升级,进而可以实现在异构的编程语言环境下进行业务的快速集成,提高集成效率。
本发明图1所示实施例提供的方法可以应用于图2所示架构中,图2为本发明规则引擎架构一个实施例的示意图,图2所示的架构中,规则引擎初始化流程中支持多种规则脚本的加载,规则引擎获取规则脚本后,通过规则引擎控制器来解析规则脚本;业务请求执行流程中支持异构编程语言的业务组件的集成,通过业务执行引擎控制器来调度业务组件,并提供API给业务规则脚本使用,业务执行引擎控制器负责业务组件API的调用。并且上述架构的业务规则脚本中配置不同业务步骤的执行引擎,包含执行脚本或者执行二进制代码的服务接口。另外,上述架构中添加事件服务器,并提供API供业务组件使用,可以满足不同业务组件之间的事件通知功能,事件服务器接收到业务组件的事件广播请求后,将该事件广播请求转发给规则引擎进行业务逻辑控制。举例来说,图2中的组件1~组件5可以为实现安全、日志和告警等业务的组件。
下面对本发明图1所示实施例提供的方法在图2所示架构中的具体实现进行介绍。
图3为本发明规则引擎初始化一个实施例的流程图,如图3所示,可以包括:
步骤301,服务器初始化规则引擎。
具体地,服务器初始化规则引擎可以为:服务器使用规则引擎的初始化接口。
步骤302,规则引擎从规则脚本配置库中加载业务规则脚本。
本实施例中,规则脚本配置库用于存储业务规则脚本,规则脚本配置库使用的存储媒介可以包括文件系统、数据库服务、版本管理系统或云存储等多种形式的存储媒介。
步骤303,规则引擎将加载的业务规则脚本传递给规则引擎控制器。
步骤304,规则引擎控制器对规则引擎传递的业务规则脚本进行分析,确定上述业务规则脚本所包括的至少两个业务逻辑子脚本的类型。
其中,上述至少两个业务逻辑子脚本分别对应不同的脚本类型,上述脚本类型表示实现业务逻辑子脚本的编程语言;其中,上述实现业务逻辑子脚本的编程语言可以包括javascrip、java、C或C++等。
上述至少两个业务逻辑子脚本分别用于对执行上述业务请求时的每个业务步骤进行逻辑控制。
本实施例的一种实现方式中,规则引擎控制器可以根据业务逻辑子脚本中的脚本类型指示信息确定业务逻辑子脚本的类型。其中,上述脚本类型指示信息可以为业务逻辑子脚本中脚本类型字段的值,也可以为业务逻辑子脚本中的用于指示业务逻辑子脚本的类型的标识,本实施例对业务逻辑子脚本中的脚本类型指示信息的具体实现方式不作限定,只要可以指示业务逻辑子脚本的类型即可。
本实施例中,规则引擎控制器用于为规则引擎提供业务规则脚本的访问控制组件,完成脚本执行引擎的创建、销毁和规则脚本的执行调度等多种控制。该规则引擎控制器支持的脚本类型包括Python、JavaScript、PHP、Ruby、Perl和JSR94等,但本实施例并不仅限于此,本实施例对规则引擎控制器支持的脚本类型不作限定。
步骤305,规则引擎控制器创建与上述至少两个业务逻辑子脚本的类型对应的脚本执行引擎。
其中,创建的脚本执行引擎可以包括:Python脚本执行引擎,JavaScript引擎,PHP引擎,Ruby引擎,Perl引擎,以及符合JSR94规范的脚本执行引擎。
步骤306,规则引擎控制器执行上述至少两个业务逻辑子脚本获得匹配规则条件。
具体地,对于符合JSR94规范的业务逻辑子脚本以及脚本执行引擎,规则引擎控制器可以通过脚本执行引擎提供的API获得业务逻辑子脚本中的匹配规则;对于其他常用的脚本以及脚本执行引擎,规则引擎控制器可以通过在业务逻辑子脚本中指定匹配规则函数,脚本执行引擎执行该业务逻辑子脚本中的上述匹配规则函数,向规则引擎控制器发返回匹配规则,在返回的匹配规则中指定匹配规则以及该匹配规则对应的回调函数签名,规则引擎控制器在处理上述返回的匹配规则时,将其统一处理成规则引擎可以识别的匹配规则条件。
步骤307,规则引擎控制器向规则引擎传递匹配规则条件。
步骤308,规则引擎根据规则引擎控制器传递的匹配规则条件构建匹配规则集合。
上述实施例可以实现对规则引擎初始化,并且上述规则引擎初始化流程中支持多种规则脚本的加载。
图4为本发明业务请求匹配流程一个实施例的流程图,如图4所示,可以包括:
步骤401,服务器接收客户端发送的业务请求。
步骤402,服务器将业务请求传递给该服务器中的规则引擎。
步骤403,规则引擎在匹配规则集合中查找上述业务请求对应的匹配规则条件,根据该匹配规则条件获得与该匹配规则条件对应的业务规则脚本。
步骤404,规则引擎将上述业务规则脚本传递给规则引擎控制器。
其中,与上述匹配规则条件对应业务规则脚本包括至少两个业务逻辑子脚本,该至少两个业务逻辑子脚本分别对应不同的脚本类型,上述脚本类型表示实现业务逻辑子脚本的编程语言;其中,上述实现业务逻辑子脚本的编程语言可以包括javascrip、java、C或C++等。
上述至少两个业务逻辑子脚本分别用于对执行上述业务请求时的每个业务步骤进行逻辑控制。
步骤405,规则引擎控制器根据上述至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定上述待处理的业务逻辑子脚本的类型。
其中,待处理的业务逻辑子脚本中的脚本类型指示信息可以为待处理的业务逻辑子脚本中脚本类型字段的值,也可以为待处理的业务逻辑子脚本中的用于指示待处理的业务逻辑子脚本的类型的标识,本实施例对待处理的业务逻辑子脚本中的脚本类型指示信息的具体实现方式不作限定,只要可以指示待处理的业务逻辑子脚本的类型即可。
步骤406,规则引擎控制器将上述待处理的业务逻辑子脚本传递给至少两个脚本执行引擎中与上述待处理的业务逻辑子脚本的类型对应的脚本执行引擎。
本实施例中,如果与上述待处理的业务逻辑子脚本的类型对应的脚本执行引擎没有被创建,则规则引擎控制器先创建与上述待处理的业务逻辑子脚本的类型对应的脚本执行引擎再执行上述待处理的业务逻辑子脚本。
步骤407,脚本执行引擎执行上述待处理的业务逻辑子脚本,并将脚本运行结果信息发送给规则引擎控制器。
上述实施例可以实现业务请求匹配流程,本实施例中,规则引擎控制器作为规则引擎与脚本执行引擎的桥梁,使不同类型的脚本可以作为业务规则脚本为规则引擎所使用,使不同类型的业务逻辑子脚本可以由各自类型对应的脚本执行引擎执行,从而可以实现在异构的编程语言环境下进行业务的快速集成,提高集成效率,降低集成成本。
图5为本发明业务请求执行流程一个实施例的流程图,如图5所示,可以包括:
步骤501,脚本执行引擎执行待处理的业务逻辑子脚本,从规则引擎控制器提供的API中获取执行规则引擎接收的业务请求所需的请求参数。
步骤502,脚本执行引擎根据上述请求参数进行业务逻辑控制,获得需要调用的业务组件的API,将需要调用的业务组件的API和上述需要调用的业务组件的类型传递给业务执行引擎控制器。
步骤503,业务执行引擎控制器确定与上述需要调用的业务组件的类型对应的执行引擎。
步骤504,业务执行引擎控制器将需要调用的业务组件的API传递给该执行引擎。
步骤505,上述执行引擎调用上述业务组件的API,以执行上述业务组件。
本实施例中,上述执行引擎包括脚本执行引擎,以及java、C/C++等二进制代码执行引擎;上述业务组件的API可以包括:支持JavaScript脚本、Python脚本、Ruby脚本、JVM脚本、PHP脚本、C动态、shell工具和/或Perl脚本等脚本的API,支持Java、C/C++等二进制代码的API,以及WSDL、SOAP、REST等形式的接口。
步骤506,执行引擎向业务执行引擎控制器返回上述业务组件的API的调用结果。
步骤507,业务执行引擎控制器向脚本执行引擎返回上述业务组件的API的调用结果。
步骤508,脚本执行引擎根据上述业务组件的API的调用结果进行业务逻辑控制。
上述实施例可以实现业务请求执行流程,上述实施例中,业务执行引擎控制器通过需要调用的业务组件的类型对应的执行引擎进行业务组件API的调用,以执行业务组件,从而可以实现在异构的编程语言环境下进行业务的快速集成,提高集成效率,降低集成成本。
图6为本发明事件转发流程一个实施例的流程图,如图6所示,可以包括:
步骤601,执行引擎将业务组件触发的事件通过事件服务端的API传递给事件服务端。
具体地,业务组件触发的事件为该业务组件所触发的需要被处理的事件,但不是该业务组件所关心的事件。举例来说,用户在购物网站上购买鞋子,该业务由购买鞋子对应的业务组件处理,在用户购买鞋子的事件完成之后,购物网站可以根据用户注册时填写的电子邮箱地址,向该电子邮箱地址对应的电子邮箱传递一封电子邮件,以向上述用户告知该用户的订单信息,这个传递电子邮件的事件不是购买鞋子对应的业务组件所关心的事件,而是由购买鞋子对应的业务组件所触发的需要被处理的事件,所以购买鞋子对应的业务组件可以在用户购买鞋子的事件完成之后,将上述传递电子邮件的事件通过事件服务端的API传递给事件服务端。
步骤602,事件服务端将上述业务组件触发的事件转发给规则引擎,以便规则引擎对该事件进行业务逻辑控制。
具体地,规则引擎可以按照本发明图4和图5所示实施例提供的流程对该事件进行业务逻辑控制。
本发明图1所示实施例提供的方法也可以应用于图7所示架构中,图7为本发明规则引擎架构一个实施例的示意图,图7所示的架构中,规则引擎初始化流程中支持多种规则脚本的加载,规则引擎获取规则脚本后,通过引擎控制器来解析规则脚本。业务请求执行流程中支持异构编程语言的业务组件的集成,通过引擎控制器来调度业务组件,并提供API给业务规则脚本使用,引擎控制器负责业务组件API的调用。并且上述架构的业务规则脚本中配置不同的业务步骤的执行引擎,包含执行脚本或者执行二进制代码的服务接口。另外,上述架构中添加事件服务器,并提供API供脚本使用,满足不同业务组件之间的事件通知功能,事件服务器接收到业务组件的事件广播请求后,将该事件广播请求转发给规则引擎进行业务逻辑调度。举例来说,图7中的组件1~组件5可以为实现安全、日志和告警等业务的组件。
下面对本发明图1所示实施例提供的方法在图7所示架构中的具体实现进行介绍。
图8为本发明规则引擎初始化另一个实施例的流程图,如图8所示,可以包括:
步骤801,服务器初始化规则引擎。
具体地,服务器初始化规则引擎可以为:服务器使用规则引擎的初始化接口。
步骤802,规则引擎从规则脚本配置库中加载业务规则脚本。
本实施例中,规则脚本配置库用于存储业务规则脚本,规则脚本配置库使用的存储媒介可以包括文件系统、数据库服务、版本管理系统或云存储等多种形式的存储媒介。
步骤803,规则引擎将加载的业务规则脚本传递给引擎控制器。
步骤804,引擎控制器对规则引擎传递的业务规则脚本进行分析,确定上述业务规则脚本所包括的至少两个业务逻辑子脚本的类型。
其中,上述至少两个业务逻辑子脚本分别对应不同的脚本类型,上述脚本类型表示实现业务逻辑子脚本的编程语言;其中,上述实现业务逻辑子脚本的编程语言可以包括javascrip、java、C或C++等。
上述至少两个业务逻辑子脚本分别用于对执行上述业务请求时的每个业务步骤进行逻辑控制。
本实施例的一种实现方式中,规则引擎控制器可以根据业务逻辑子脚本中的脚本类型指示信息确定业务逻辑子脚本的类型。其中,上述脚本类型指示信息可以为业务逻辑子脚本中脚本类型字段的值,也可以为业务逻辑子脚本中的用于指示业务逻辑子脚本的类型的标识,本实施例对业务逻辑子脚本中的脚本类型指示信息的具体实现方式不作限定,只要可以指示业务逻辑子脚本的类型即可。
本实施例中,引擎控制器用于为规则引擎提供业务规则脚本的访问控制组件,完成脚本执行引擎的创建、销毁和规则脚本的执行调度等多种控制。该引擎控制器支持的脚本类型包括Python、JavaScript、PHP、Ruby、Perl和JSR94等,但本实施例并不仅限于此,本实施例对引擎控制器支持的脚本类型不作限定。
步骤805,引擎控制器创建与上述至少两个业务逻辑子脚本的类型对应的脚本执行引擎。
其中,创建的脚本执行引擎可以包括:Python脚本执行引擎,JavaScript引擎,PHP引擎,Ruby引擎,Perl引擎,以及符合JSR94规范的脚本执行引擎。
步骤806,引擎控制器执行上述至少两个业务逻辑子脚本获得匹配规则条件。
具体地,对于符合JSR94规范的业务逻辑子脚本以及脚本执行引擎,引擎控制器可以通过脚本执行引擎提供的API获得业务逻辑子脚本中的匹配规则;对于其他常用的脚本以及脚本执行引擎,引擎控制器可以通过在业务逻辑子脚本中指定匹配规则函数,脚本执行引擎执行该业务逻辑子脚本中的上述匹配规则函数,向引擎控制器发返回匹配规则,在返回的匹配规则中指定匹配规则以及该匹配规则对应的回调函数签名,引擎控制器在处理上述返回的匹配规则时,将其统一处理成规则引擎可以识别的匹配规则条件。
步骤807,引擎控制器向规则引擎传递匹配规则条件。
步骤808,规则引擎根据引擎控制器传递的匹配规则条件构建匹配规则集合。
上述实施例可以实现对规则引擎初始化,并且上述规则引擎初始化流程中支持多种规则脚本的加载。
图9为本发明业务请求匹配流程另一个实施例的流程图,如图9所示,可以包括:
步骤901,服务器接收客户端发送的业务请求。
步骤902,服务器将业务请求传递给该服务器中的规则引擎。
步骤903,规则引擎在匹配规则集合中查找上述业务请求对应的匹配规则条件,根据该匹配规则条件获得与该匹配规则条件对应的业务规则脚本。
步骤904,规则引擎将上述业务规则脚本传递给引擎控制器。
其中,与上述匹配规则条件对应业务规则脚本包括至少两个业务逻辑子脚本,该至少两个业务逻辑子脚本分别对应不同的脚本类型,上述脚本类型表示实现业务逻辑子脚本的编程语言;其中,上述实现业务逻辑子脚本的编程语言可以包括javascrip、java、C或C++等。
上述至少两个业务逻辑子脚本分别用于对执行上述业务请求时的每个业务步骤进行逻辑控制。
步骤905,引擎控制器根据上述至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定上述待处理的业务逻辑子脚本的类型。
其中,待处理的业务逻辑子脚本中的脚本类型指示信息可以为待处理的业务逻辑子脚本中脚本类型字段的值,也可以为待处理的业务逻辑子脚本中的用于指示待处理的业务逻辑子脚本的类型的标识,本实施例对待处理的业务逻辑子脚本中的脚本类型指示信息的具体实现方式不作限定,只要可以指示待处理的业务逻辑子脚本的类型即可。
步骤906,引擎控制器将上述待处理的业务逻辑子脚本传递给至少两个脚本执行引擎中与上述待处理的业务逻辑子脚本的类型对应的脚本执行引擎。
本实施例中,如果与上述待处理的业务逻辑子脚本的类型对应的脚本执行引擎没有被创建,则引擎控制器先创建与上述待处理的业务逻辑子脚本的类型对应的脚本执行引擎再执行上述待处理的业务逻辑子脚本。
步骤907,脚本执行引擎执行上述待处理的业务逻辑子脚本,并将脚本运行结果信息发送给引擎控制器。
上述实施例可以实现业务请求匹配流程,本实施例中,引擎控制器作为规则引擎与脚本执行引擎的桥梁,使不同类型的脚本可以作为业务规则脚本为规则引擎所使用,使不同类型的业务逻辑子脚本可以由各自类型对应的脚本执行引擎执行,从而可以实现在异构的编程语言环境下进行业务的快速集成,提高集成效率,降低集成成本。
图10为本发明业务请求执行流程另一个实施例的流程图,如图10所示,可以包括:
步骤1001,脚本执行引擎执行待处理的业务逻辑子脚本,从引擎控制器提供的API中获取执行规则引擎接收的业务请求所需的请求参数。
步骤1002,脚本执行引擎根据上述请求参数进行业务逻辑控制,获得需要调用的业务组件的API,将需要调用的业务组件的API和上述需要调用的业务组件的类型传递给引擎控制器。
步骤1003,引擎控制器确定与上述需要调用的业务组件的类型对应的执行引擎。
步骤1004,引擎控制器将需要调用的业务组件的API传递给该执行引擎。
步骤1005,上述执行引擎调用上述业务组件的API,以执行上述业务组件。
本实施例中,上述执行引擎包括脚本执行引擎,以及java、C/C++等二进制代码执行引擎以及其他类型的执行引擎;上述业务组件的API可以包括:支持JavaScript脚本、Python脚本、Ruby脚本、JVM脚本、PHP脚本、C动态、shell工具和/或Perl脚本等脚本的API,支持Java、C/C++等二进制代码的API,以及WSDL、SOAP、REST等形式的接口。
步骤1006,执行引擎向引擎控制器返回上述业务组件的API的调用结果。
步骤1007,引擎控制器向脚本执行引擎返回上述业务组件的API的调用结果。
步骤1008,脚本执行引擎根据上述业务组件的API的调用结果进行业务逻辑控制。
上述实施例可以实现业务请求执行流程,上述实施例中,引擎控制器通过需要调用的业务组件的类型对应的执行引擎进行业务组件API的调用,以执行业务组件,从而可以实现在异构的编程语言环境下进行业务的快速集成,提高集成效率,降低集成成本。
图7所示架构中,事件转发流程与本发明图6所示实施例提供的流程相同,在此不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图11为本发明服务器一个实施例的结构示意图,本实施例中的服务器11可以实现本发明图1所示实施例的流程,如图11所示,该服务器11可以包括:引擎控制器1101、规则引擎1102、脚本执行引擎1103和执行引擎1104;
其中,规则引擎1102,用于接收客户端发送的业务请求,在匹配规则集合中查找与上述业务请求对应的匹配规则条件,根据上述匹配规则条件获得与上述匹配规则条件对应的业务规则脚本,并将上述业务规则脚本传递给引擎控制器1101;其中,上述业务规则脚本包括至少两个业务逻辑子脚本,该至少两个业务逻辑子脚本分别对应不同的脚本类型,该脚本类型表示实现业务逻辑子脚本的编程语言。
其中,上述实现业务逻辑子脚本的编程语言可以包括javascrip、java、C或C++等。上述至少两个业务逻辑子脚本分别用于对执行上述业务请求时的每个业务步骤进行逻辑控制。
引擎控制器1101,用于根据上述至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定待处理的业务逻辑子脚本的类型,将上述待处理的业务逻辑子脚本传递给至少两个脚本执行引擎中与待处理的业务逻辑子脚本的类型对应的脚本执行引擎1103;以及接收上述对应的脚本执行引擎1103传递的需要调用的业务组件的API和需要调用的业务组件的类型,通过上述需要调用的业务组件的类型对应的执行引擎1104调用需要调用的业务组件的API,向上述对应的脚本执行引擎1103返回上述需要调用的业务组件的API的调用结果;
具体地,引擎控制器1101接收到上述对应的脚本执行引擎1103传递的需要调用的业务组件的API和需要调用的业务组件的类型之后,可以将需要调用的业务组件的API传递给与需要调用的业务组件的类型对应的执行引擎1104,由与需要调用的业务组件的类型对应的执行引擎1104调用需要调用的业务组件的API,然后上述对应的执行引擎1104将上述业务组件的API的调用结果传递给引擎控制器1101,再由引擎控制器1101向上述对应的脚本执行引擎1103返回上述需要调用的业务组件的API的调用结果。
至少两个脚本执行引擎中与待处理的业务逻辑子脚本的类型对应的脚本执行引擎1103,用于接收引擎控制器1101传递的待处理的业务逻辑子脚本,执行待处理的业务逻辑子脚本得到需要调用的业务组件的API,将上述需要调用的业务组件的API和需要调用的业务组件的类型传递给引擎控制器1101,以及接收引擎控制器1101返回的需要调用的业务组件的API的调用结果。
具体地,至少两个脚本执行引擎中与待处理的业务逻辑子脚本的类型对应的脚本执行引擎1103可以执行上述待处理的业务逻辑子脚本从引擎控制器1101提供的API获取执行上述业务请求所需的请求参数,并根据该请求参数进行业务逻辑控制,得到需要调用的业务组件的API。
进一步地,规则引擎1102还可以在服务器11初始化该规则引擎1102之后,从规则脚本配置库中加载业务规则脚本,将加载的业务规则脚本传递给引擎控制器1101;以及接收引擎控制器1101传递的匹配规则条件,根据该匹配规则条件构建上述匹配规则集合;
引擎控制器1101还可以接收规则引擎1102传递的业务规则脚本,确定上述业务规则脚本所包括的至少两个业务逻辑子脚本的类型,创建与上述至少两个业务逻辑子脚本的类型分别对应的脚本执行引擎1103;以及执行上述至少两个业务逻辑子脚本获得匹配规则条件,并将该匹配规则条件传递给规则引擎1102。
上述服务器中,引擎控制器1101作为规则引擎1102与脚本执行引擎1103的桥梁,使不同类型的脚本可以作为业务规则脚本为规则引擎1102所使用,使不同类型的业务逻辑子脚本可以由各自类型对应的脚本执行引擎1103执行,从而可以实现在异构的编程语言环境下进行业务的快速集成,提高集成效率,降低集成成本。
图12为本发明服务器另一个实施例的结构示意图,与图11所示的服务器11相比,不同之处在于,图12所示的服务器12中,引擎控制器1101可以包括规则引擎控制器1105和业务执行引擎控制器1106;也就是说,引擎控制器1101的功能可以通过规则引擎控制器1105和业务执行引擎控制器1106实现;
其中,规则引擎控制器1105,用于接收规则引擎1102传递的与上述匹配规则条件对应的业务规则脚本,根据该业务规则脚本包括的至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定待处理的业务逻辑子脚本的类型,将待处理的业务逻辑子脚本传递给至少两个脚本执行引擎中与上述待处理的业务逻辑子脚本的类型对应的脚本执行引擎1103。
业务执行引擎控制器1106,用于接收上述对应的脚本执行引擎1103传递的需要调用的业务组件的API和需要调用的业务组件的类型,通过需要调用的业务组件的类型对应的执行引擎1104调用需要调用的业务组件的API,向上述对应的脚本执行引擎1103返回需要调用的业务组件的API的调用结果。
具体地,业务执行引擎控制器1106接收到上述对应的脚本执行引擎1103传递的需要调用的业务组件的API和需要调用的业务组件的类型之后,可以将需要调用的业务组件的API传递给与需要调用的业务组件的类型对应的执行引擎1104,由与需要调用的业务组件的类型对应的执行引擎1104调用需要调用的业务组件的API,然后上述对应的执行引擎1104将上述业务组件的API的调用结果传递给业务执行引擎控制器1106,再由业务执行引擎控制器1106向上述对应的脚本执行引擎1103返回上述需要调用的业务组件的API的调用结果。
本实施例中,至少两个脚本执行引擎中与待处理的业务逻辑子脚本的类型对应的脚本执行引擎1103可以执行上述待处理的业务逻辑子脚本从规则引擎控制器1105提供的API获取执行上述业务请求所需的请求参数,根据该请求参数进行业务逻辑控制,得到需要调用的业务组件的API。
进一步地,规则引擎控制器1105还可以接收规则引擎1102传递的业务规则脚本,确定该业务规则脚本所包括的至少两个业务逻辑子脚本的类型,创建与上述至少两个业务逻辑子脚本的类型分别对应的脚本执行引擎;以及执行上述至少两个业务逻辑子脚本获得匹配规则条件,并将该匹配规则条件传递给规则引擎1102,以供规则引擎1102根据上述匹配规则条件构建上述匹配规则集合;上述业务规则脚本是服务器12初始化规则引擎1102之后,规则引擎1102从规则脚本配置库中加载的。
进一步地,上述服务器12还可以包括:
事件服务端1107,用于接收上述需要调用的业务组件的类型对应的执行引擎传递的业务组件触发的事件,将该事件传递给规则引擎1102进行业务逻辑控制。
上述服务器可以实现在异构的编程语言环境下进行业务的快速集成,提高集成效率,降低集成成本,进而可以保证异构的编程语言环境下的业务数据通信顺利进行。
图13为本发明计算机系统一个实施例的结构示意图,如图13所示,该计算机系统可以包括:至少一个处理器1301,以及存储器1302,该存储器1302用于存储可执行程序代码,其中,处理器1301通过读取存储器1302中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于:接收客户端发送的业务请求;在匹配规则集合中查找到上述业务请求对应的匹配规则条件之后,根据匹配规则条件获得与该匹配规则条件对应的业务规则脚本,上述业务规则脚本包括至少两个业务逻辑子脚本,上述至少两个业务逻辑子脚本分别对应不同的脚本类型,该脚本类型表示实现业务逻辑子脚本的编程语言;然后,根据至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定待处理的业务逻辑子脚本的类型,将待处理的业务逻辑子脚本传递给至少两个脚本执行引擎中与待处理的业务逻辑子脚本的类型对应的脚本执行引擎,使得上述对应的脚本执行引擎执行待处理的业务逻辑子脚本得到需要调用的业务组件的应用程序接口;最后,接收对应的脚本执行引擎传递的需要调用的业务组件的应用程序接口和需要调用的业务组件的类型,通过上述需要调用的业务组件的类型对应的执行引擎调用需要调用的业务组件的应用程序接口,向上述对应的脚本执行引擎返回上述需要调用的业务组件的应用程序接口的调用结果。
本实施例中,上述处理器1301通过读取存储器1302中存储的可执行程序代码来运行与上述可执行程序代码对应的程序,还用于:初始化规则引擎;确定上述规则引擎从规则脚本配置库中加载的业务规则脚本所包括的至少两个业务逻辑子脚本的类型,创建与上述至少两个业务逻辑子脚本的类型分别对应的脚本执行引擎;执行上述至少两个业务逻辑子脚本获得匹配规则条件,并根据该匹配规则条件构建上述匹配规则集合。
本实施例中,上述脚本执行引擎、上述执行引擎和上述规则引擎运行在至少一个处理器1301上。
在具体实现时,上述计算机系统还可以包括用户接口1303和总线1304。上述处理器1301、存储器1302和用户接口1303均连接到总线1304。
上述实施例中,业务规则脚本中的至少两个业务逻辑子脚本由各自类型对应的脚本执行引擎执行,获得各自需要调用的业务组件的应用程序接口,再通过与上述需要调用的业务组件的类型对应的执行引擎调用该应用程序接口,使得每个业务逻辑子脚本都可以由各自类型对应的脚本执行引擎来执行,使每个业务组件都可以由各自类型对应的执行引擎来执行,从而可以实现业务的解耦,进而可以实现在异构的编程语言环境下进行业务的快速集成,提高集成效率。
综上所述,本发明实施例提供的业务执行方法、服务器和计算机系统具有如下技术效果:业务规则脚本中的至少两个业务逻辑子脚本由各自类型对应的脚本执行引擎执行,获得各自需要调用的业务组件的API,再通过与上述需要调用的业务组件的类型对应的执行引擎调用该API,使得每个业务逻辑子脚本都可以由各自类型对应的脚本执行引擎来执行,使得每个业务组件都可以由各自类型对应的执行引擎来执行,从而可以实现业务的解耦;本发明实施例中,业务执行引擎控制器或引擎控制器通过业务组件的类型对应的执行引擎进行业务组件API的调用,使得每个业务步骤都可以使用不同类型的执行引擎来执行业务,实现真正的业务解耦、业务组件的独立发布和升级,进而可以实现灵活的业务集成,支持不同类型的开发语言实现的业务集成。
具体地,如果业务规则脚本包括多个业务逻辑子脚本(为了便于描述,下文称为业务步骤),换言之,如果该业务规则脚本中包括多个业务步骤,例如业务步骤一(js),业务步骤二(java),业务步骤三(c/c++),业务步骤四(shell工具)…,则通过本发明实施例的服务器中的引擎控制器来运行不同的执行引擎(包括但不限于脚本执行引擎,例如js,python,ruby,JVM,C动态库,shell工具等)来执行每个业务步骤,使得每个业务步骤都可以使用各自类型对应的执行引擎来执行,实现真正的业务解耦合和各种异构系统的集成。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (13)
1.一种业务执行方法,其特征在于,包括:
接收客户端发送的业务请求;
在匹配规则集合中查找到所述业务请求对应的匹配规则条件之后,根据所述匹配规则条件获得与所述匹配规则条件对应的业务规则脚本,所述业务规则脚本包括至少两个业务逻辑子脚本,所述至少两个业务逻辑子脚本分别对应不同的脚本类型,所述脚本类型表示实现业务逻辑子脚本的编程语言;
根据所述至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定所述待处理的业务逻辑子脚本的类型,将所述待处理的业务逻辑子脚本传递给至少两个脚本执行引擎中与所述待处理的业务逻辑子脚本的类型对应的脚本执行引擎,使得所述对应的脚本执行引擎执行所述待处理的业务逻辑子脚本得到需要调用的业务组件的应用程序接口;
接收所述对应的脚本执行引擎传递的所述需要调用的业务组件的应用程序接口和所述需要调用的业务组件的类型,通过所述需要调用的业务组件的类型对应的执行引擎调用所述需要调用的业务组件的应用程序接口,向所述对应的脚本执行引擎返回所述需要调用的业务组件的应用程序接口的调用结果。
2.根据权利要求1所述的方法,其特征在于,所述对应的脚本执行引擎执行所述待处理的业务逻辑子脚本得到需要调用的业务组件的应用程序接口包括:
所述对应的脚本执行引擎执行所述待处理的业务逻辑子脚本从引擎控制器提供的应用程序接口获取执行所述业务请求所需的请求参数;
所述对应的脚本执行引擎根据所述请求参数进行业务逻辑控制,得到所述需要调用的业务组件的应用程序接口。
3.根据权利要求1-2任意一项所述的方法,其特征在于,所述接收客户端发送的业务请求之前,还包括:
初始化规则引擎;
确定所述规则引擎从规则脚本配置库中加载的业务规则脚本所包括的至少两个业务逻辑子脚本的类型,创建与所述至少两个业务逻辑子脚本的类型分别对应的脚本执行引擎;
执行所述至少两个业务逻辑子脚本获得匹配规则条件,并根据所述匹配规则条件构建所述匹配规则集合。
4.根据权利要求3所述的方法,其特征在于,还包括:
接收所述需要调用的业务组件的类型对应的执行引擎传递的所述业务组件触发的事件,将所述事件传递给所述规则引擎进行业务逻辑控制。
5.一种服务器,其特征在于,包括:引擎控制器、规则引擎、至少两个脚本执行引擎和执行引擎;
所述规则引擎,用于接收客户端发送的业务请求,在匹配规则集合中查找与所述业务请求对应的匹配规则条件,根据所述匹配规则条件获得与所述匹配规则条件对应的业务规则脚本,并将所述业务规则脚本传递给所述引擎控制器;所述业务规则脚本包括至少两个业务逻辑子脚本,所述至少两个业务逻辑子脚本分别对应不同的脚本类型,所述脚本类型表示实现业务逻辑子脚本的编程语言;
所述引擎控制器,用于根据所述至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定所述待处理的业务逻辑子脚本的类型,将所述待处理的业务逻辑子脚本传递给所述至少两个脚本执行引擎中与所述待处理的业务逻辑子脚本的类型对应的脚本执行引擎;以及接收所述对应的脚本执行引擎传递的需要调用的业务组件的应用程序接口和所述需要调用的业务组件的类型,通过所述需要调用的业务组件的类型对应的执行引擎调用所述需要调用的业务组件的应用程序接口,向所述对应的脚本执行引擎返回所述需要调用的业务组件的应用程序接口的调用结果;
所述至少两个脚本执行引擎中与所述待处理的业务逻辑子脚本的类型对应的脚本执行引擎,用于接收所述引擎控制器传递的所述待处理的业务逻辑子脚本,执行所述待处理的业务逻辑子脚本得到需要调用的业务组件的应用程序接口,将所述需要调用的业务组件的应用程序接口和所述需要调用的业务组件的类型传递给所述引擎控制器,以及接收所述引擎控制器返回的所述需要调用的业务组件的应用程序接口的调用结果。
6.根据权利要求5所述的服务器,其特征在于,
所述至少两个脚本执行引擎中与所述待处理的业务逻辑子脚本的类型对应的脚本执行引擎,具体用于执行所述待处理的业务逻辑子脚本从所述引擎控制器提供的应用程序接口获取执行所述业务请求所需的请求参数,并根据所述请求参数进行业务逻辑控制,得到所述需要调用的业务组件的应用程序接口。
7.根据权利要求5-6任意一项所述的服务器,其特征在于,
所述规则引擎,还用于在所述服务器初始化所述规则引擎之后,从规则脚本配置库中加载业务规则脚本,将加载的业务规则脚本传递给所述引擎控制器;以及接收所述引擎控制器传递的匹配规则条件,根据所述匹配规则条件构建所述匹配规则集合;
所述引擎控制器,还用于接收所述规则引擎传递的业务规则脚本,确定所述业务规则脚本所包括的至少两个业务逻辑子脚本的类型,创建与所述至少两个业务逻辑子脚本的类型分别对应的脚本执行引擎;以及执行所述至少两个业务逻辑子脚本获得匹配规则条件,并将所述匹配规则条件传递给所述规则引擎。
8.根据权利要求5所述的服务器,其特征在于,所述引擎控制器包括规则引擎控制器和业务执行引擎控制器;
所述规则引擎控制器,用于接收所述规则引擎传递的与所述匹配规则条件对应的业务规则脚本,根据所述业务规则脚本包括的至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定所述待处理的业务逻辑子脚本的类型,将所述待处理的业务逻辑子脚本传递给所述至少两个脚本执行引擎中与所述待处理的业务逻辑子脚本的类型对应的脚本执行引擎;
所述业务执行引擎控制器,用于接收所述对应的脚本执行引擎传递的所述需要调用的业务组件的应用程序接口和所述需要调用的业务组件的类型,通过所述需要调用的业务组件的类型对应的执行引擎调用所述需要调用的业务组件的应用程序接口,向所述对应的脚本执行引擎返回所述需要调用的业务组件的应用程序接口的调用结果。
9.根据权利要求8所述的服务器,其特征在于,
所述至少两个脚本执行引擎中与所述待处理的业务逻辑子脚本的类型对应的脚本执行引擎,具体用于执行所述待处理的业务逻辑子脚本从所述规则引擎控制器提供的应用程序接口获取执行所述业务请求所需的请求参数,并根据所述请求参数进行业务逻辑控制,得到所述需要调用的业务组件的应用程序接口。
10.根据权利要求8-9任意一项所述的服务器,其特征在于,
所述规则引擎控制器,还用于接收所述规则引擎传递的业务规则脚本,确定所述业务规则脚本所包括的至少两个业务逻辑子脚本的类型,创建与所述至少两个业务逻辑子脚本的类型分别对应的脚本执行引擎;以及执行所述至少两个业务逻辑子脚本获得匹配规则条件,并将所述匹配规则条件传递给所述规则引擎,以供所述规则引擎根据所述匹配规则条件构建所述匹配规则集合;所述业务规则脚本是所述服务器初始化所述规则引擎之后,所述规则引擎从规则脚本配置库中加载的。
11.根据权利要求5或8所述的服务器,其特征在于,还包括:
事件服务端,用于接收所述需要调用的业务组件的类型对应的执行引擎传递的所述业务组件触发的事件,将所述事件传递给所述规则引擎进行业务逻辑控制。
12.一种计算机系统,其特征在于,包括:至少一个处理器,以及存储器,所述存储器用于存储可执行程序代码,其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于:
接收客户端发送的业务请求;
在匹配规则集合中查找到所述业务请求对应的匹配规则条件之后,根据所述匹配规则条件获得与所述匹配规则条件对应的业务规则脚本,所述业务规则脚本包括至少两个业务逻辑子脚本,所述至少两个业务逻辑子脚本分别对应不同的脚本类型,所述脚本类型表示实现业务逻辑子脚本的编程语言;
根据所述至少两个业务逻辑子脚本中待处理的业务逻辑子脚本中的脚本类型指示信息确定所述待处理的业务逻辑子脚本的类型,将所述待处理的业务逻辑子脚本传递给至少两个脚本执行引擎中与所述待处理的业务逻辑子脚本的类型对应的脚本执行引擎,使得所述对应的脚本执行引擎执行所述待处理的业务逻辑子脚本得到需要调用的业务组件的应用程序接口;
接收所述对应的脚本执行引擎传递的所述需要调用的业务组件的应用程序接口和所述需要调用的业务组件的类型,通过所述需要调用的业务组件的类型对应的执行引擎调用所述需要调用的业务组件的应用程序接口,向所述对应的脚本执行引擎返回所述需要调用的业务组件的应用程序接口的调用结果;
所述脚本执行引擎和所述执行引擎运行在所述至少一个处理器上。
13.根据权利要求12所述的计算机系统,其特征在于,
所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,还用于:
初始化规则引擎;
确定所述规则引擎从规则脚本配置库中加载的业务规则脚本所包括的至少两个业务逻辑子脚本的类型,创建与所述至少两个业务逻辑子脚本的类型分别对应的脚本执行引擎;
执行所述至少两个业务逻辑子脚本获得匹配规则条件,并根据所述匹配规则条件构建所述匹配规则集合;
所述规则引擎运行在所述至少一个处理器上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210156203.0A CN102681854B (zh) | 2012-05-18 | 2012-05-18 | 业务执行方法、服务器和计算机系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210156203.0A CN102681854B (zh) | 2012-05-18 | 2012-05-18 | 业务执行方法、服务器和计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102681854A true CN102681854A (zh) | 2012-09-19 |
CN102681854B CN102681854B (zh) | 2015-04-29 |
Family
ID=46813831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210156203.0A Active CN102681854B (zh) | 2012-05-18 | 2012-05-18 | 业务执行方法、服务器和计算机系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102681854B (zh) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104038356A (zh) * | 2013-03-04 | 2014-09-10 | 阿里巴巴集团控股有限公司 | 数据路由的执行方法、配置装置和处理装置 |
CN104572091A (zh) * | 2014-12-25 | 2015-04-29 | 百度在线网络技术(北京)有限公司 | 应用软件实现方法、装置以及计算机设备 |
CN105426165A (zh) * | 2014-09-18 | 2016-03-23 | 腾讯科技(深圳)有限公司 | 一种脚本工具的处理方法及装置 |
CN105844422A (zh) * | 2016-04-01 | 2016-08-10 | 阿里巴巴集团控股有限公司 | 一种业务流程执行方法及装置 |
CN106101090A (zh) * | 2016-06-07 | 2016-11-09 | 中国建设银行股份有限公司 | 用于规则引擎的操作方法以及规则引擎系统 |
CN106547896A (zh) * | 2016-11-04 | 2017-03-29 | 广州唯品会信息科技有限公司 | 规则引擎服务化处理系统及方法 |
CN106557342A (zh) * | 2015-09-30 | 2017-04-05 | 阿里巴巴集团控股有限公司 | 一种业务逻辑的实现方法及装置 |
CN106681781A (zh) * | 2015-11-05 | 2017-05-17 | 腾讯科技(深圳)有限公司 | 实时计算业务的实现方法和系统 |
CN107066275A (zh) * | 2017-04-13 | 2017-08-18 | 戴华敏 | 一种软件架构 |
CN107135188A (zh) * | 2016-02-29 | 2017-09-05 | 阿里巴巴集团控股有限公司 | 金融信息交换fix协议的业务实现方法、装置及系统 |
CN107180338A (zh) * | 2017-05-22 | 2017-09-19 | 深圳市小牛在线互联网信息咨询有限公司 | 业务执行方法、装置、存储介质及计算机设备 |
CN107390983A (zh) * | 2017-04-28 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 业务指令执行方法、客户端和存储介质 |
CN107656755A (zh) * | 2016-07-24 | 2018-02-02 | 平安科技(深圳)有限公司 | 规则引擎的编辑方法及装置 |
CN107832122A (zh) * | 2017-11-21 | 2018-03-23 | 中国银行股份有限公司 | 一种系统间通讯和事务控制方法及装置 |
CN108279866A (zh) * | 2018-01-24 | 2018-07-13 | 马上消费金融股份有限公司 | 一种业务流程的编排执行方法、装置及介质 |
CN109358842A (zh) * | 2018-09-25 | 2019-02-19 | 广州城市信息研究所有限公司 | 一种服务实现方法、电子设备及存储介质 |
CN109558186A (zh) * | 2017-09-27 | 2019-04-02 | 阿里巴巴集团控股有限公司 | 一种页面显示方法和装置 |
CN110162386A (zh) * | 2019-04-04 | 2019-08-23 | 口碑(上海)信息技术有限公司 | 一种任务下发方法及装置 |
CN110244990A (zh) * | 2019-04-29 | 2019-09-17 | 五八有限公司 | 应用组件调用方法、装置、电子设备及存储介质 |
CN110989990A (zh) * | 2019-12-11 | 2020-04-10 | 盈佳云创科技(深圳)有限公司 | 一种业务规则引擎执行系统及方法 |
CN111580892A (zh) * | 2019-02-19 | 2020-08-25 | 杭州海康威视系统技术有限公司 | 一种业务组件调用的方法、装置、终端和存储介质 |
CN111679828A (zh) * | 2020-05-25 | 2020-09-18 | 泰康保险集团股份有限公司 | 一种数据处理的方法及装置、电子设备、存储介质 |
CN112800741A (zh) * | 2021-01-29 | 2021-05-14 | 远光软件股份有限公司 | 任务执行方法、电子设备及存储介质 |
CN112965704A (zh) * | 2021-03-02 | 2021-06-15 | 上海星融汽车科技有限公司 | 业务应用执行方法、系统及电子设备 |
CN112988409A (zh) * | 2019-12-18 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 一种接口调用方法、装置、计算机设备及存储介质 |
CN113656291A (zh) * | 2021-08-04 | 2021-11-16 | 成都中科合迅科技有限公司 | 软件脚本引擎动态调用方法 |
CN113760341A (zh) * | 2020-06-11 | 2021-12-07 | 北京京东振世信息技术有限公司 | 数据处理方法、装置及设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239324B (zh) * | 2017-05-22 | 2020-12-11 | 创新先进技术有限公司 | 业务流转处理方法、装置及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1612582A (zh) * | 2003-10-30 | 2005-05-04 | 惠普开发有限公司 | 电信服务程序 |
CN1972296A (zh) * | 2006-12-05 | 2007-05-30 | 北京邮电大学 | 基于xpl的综合多种通信手段的业务生成方法及其系统 |
CN101877703A (zh) * | 2010-05-20 | 2010-11-03 | 中兴通讯股份有限公司 | 一种融合业务系统及其业务实现方法 |
-
2012
- 2012-05-18 CN CN201210156203.0A patent/CN102681854B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1612582A (zh) * | 2003-10-30 | 2005-05-04 | 惠普开发有限公司 | 电信服务程序 |
CN1972296A (zh) * | 2006-12-05 | 2007-05-30 | 北京邮电大学 | 基于xpl的综合多种通信手段的业务生成方法及其系统 |
CN101877703A (zh) * | 2010-05-20 | 2010-11-03 | 中兴通讯股份有限公司 | 一种融合业务系统及其业务实现方法 |
Cited By (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104038356A (zh) * | 2013-03-04 | 2014-09-10 | 阿里巴巴集团控股有限公司 | 数据路由的执行方法、配置装置和处理装置 |
CN105426165A (zh) * | 2014-09-18 | 2016-03-23 | 腾讯科技(深圳)有限公司 | 一种脚本工具的处理方法及装置 |
CN105426165B (zh) * | 2014-09-18 | 2019-02-22 | 腾讯科技(深圳)有限公司 | 一种脚本工具的处理方法及装置 |
CN104572091A (zh) * | 2014-12-25 | 2015-04-29 | 百度在线网络技术(北京)有限公司 | 应用软件实现方法、装置以及计算机设备 |
CN104572091B (zh) * | 2014-12-25 | 2017-11-03 | 百度在线网络技术(北京)有限公司 | 应用软件实现方法、装置以及计算机设备 |
CN106557342A (zh) * | 2015-09-30 | 2017-04-05 | 阿里巴巴集团控股有限公司 | 一种业务逻辑的实现方法及装置 |
CN106681781A (zh) * | 2015-11-05 | 2017-05-17 | 腾讯科技(深圳)有限公司 | 实时计算业务的实现方法和系统 |
TWI658418B (zh) * | 2016-02-29 | 2019-05-01 | 香港商阿里巴巴集團服務有限公司 | 金融資訊交換(fix)協議的業務實現方法、裝置及系統 |
US10791070B2 (en) | 2016-02-29 | 2020-09-29 | Alibaba Group Holding Limited | Service implementation method, apparatus, and system based on fix protocol |
CN107135188A (zh) * | 2016-02-29 | 2017-09-05 | 阿里巴巴集团控股有限公司 | 金融信息交换fix协议的业务实现方法、装置及系统 |
WO2017148278A1 (zh) * | 2016-02-29 | 2017-09-08 | 阿里巴巴集团控股有限公司 | Fix协议的业务实现方法、装置及系统 |
CN105844422A (zh) * | 2016-04-01 | 2016-08-10 | 阿里巴巴集团控股有限公司 | 一种业务流程执行方法及装置 |
CN106101090A (zh) * | 2016-06-07 | 2016-11-09 | 中国建设银行股份有限公司 | 用于规则引擎的操作方法以及规则引擎系统 |
CN107656755A (zh) * | 2016-07-24 | 2018-02-02 | 平安科技(深圳)有限公司 | 规则引擎的编辑方法及装置 |
CN106547896A (zh) * | 2016-11-04 | 2017-03-29 | 广州唯品会信息科技有限公司 | 规则引擎服务化处理系统及方法 |
CN107066275A (zh) * | 2017-04-13 | 2017-08-18 | 戴华敏 | 一种软件架构 |
CN107390983A (zh) * | 2017-04-28 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 业务指令执行方法、客户端和存储介质 |
CN107180338A (zh) * | 2017-05-22 | 2017-09-19 | 深圳市小牛在线互联网信息咨询有限公司 | 业务执行方法、装置、存储介质及计算机设备 |
CN109558186B (zh) * | 2017-09-27 | 2022-06-28 | 阿里巴巴集团控股有限公司 | 一种页面显示方法和装置 |
CN109558186A (zh) * | 2017-09-27 | 2019-04-02 | 阿里巴巴集团控股有限公司 | 一种页面显示方法和装置 |
CN107832122A (zh) * | 2017-11-21 | 2018-03-23 | 中国银行股份有限公司 | 一种系统间通讯和事务控制方法及装置 |
CN107832122B (zh) * | 2017-11-21 | 2021-10-08 | 中国银行股份有限公司 | 一种系统间通讯和事务控制方法及装置 |
CN108279866B (zh) * | 2018-01-24 | 2021-10-22 | 马上消费金融股份有限公司 | 一种业务流程的编排执行方法、装置及介质 |
CN108279866A (zh) * | 2018-01-24 | 2018-07-13 | 马上消费金融股份有限公司 | 一种业务流程的编排执行方法、装置及介质 |
CN109358842A (zh) * | 2018-09-25 | 2019-02-19 | 广州城市信息研究所有限公司 | 一种服务实现方法、电子设备及存储介质 |
CN111580892A (zh) * | 2019-02-19 | 2020-08-25 | 杭州海康威视系统技术有限公司 | 一种业务组件调用的方法、装置、终端和存储介质 |
CN111580892B (zh) * | 2019-02-19 | 2023-09-19 | 杭州海康威视系统技术有限公司 | 一种业务组件调用的方法、装置、终端和存储介质 |
CN110162386A (zh) * | 2019-04-04 | 2019-08-23 | 口碑(上海)信息技术有限公司 | 一种任务下发方法及装置 |
CN110162386B (zh) * | 2019-04-04 | 2021-05-18 | 口碑(上海)信息技术有限公司 | 一种任务下发方法及装置 |
CN110244990A (zh) * | 2019-04-29 | 2019-09-17 | 五八有限公司 | 应用组件调用方法、装置、电子设备及存储介质 |
CN110989990A (zh) * | 2019-12-11 | 2020-04-10 | 盈佳云创科技(深圳)有限公司 | 一种业务规则引擎执行系统及方法 |
CN112988409A (zh) * | 2019-12-18 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 一种接口调用方法、装置、计算机设备及存储介质 |
CN112988409B (zh) * | 2019-12-18 | 2024-01-30 | 腾讯科技(深圳)有限公司 | 一种接口调用方法、装置、计算机设备及存储介质 |
CN111679828B (zh) * | 2020-05-25 | 2023-08-15 | 泰康保险集团股份有限公司 | 一种数据处理的方法及装置、电子设备、存储介质 |
CN111679828A (zh) * | 2020-05-25 | 2020-09-18 | 泰康保险集团股份有限公司 | 一种数据处理的方法及装置、电子设备、存储介质 |
CN113760341A (zh) * | 2020-06-11 | 2021-12-07 | 北京京东振世信息技术有限公司 | 数据处理方法、装置及设备 |
CN113760341B (zh) * | 2020-06-11 | 2023-12-05 | 北京京东振世信息技术有限公司 | 数据处理方法、装置及设备 |
CN112800741A (zh) * | 2021-01-29 | 2021-05-14 | 远光软件股份有限公司 | 任务执行方法、电子设备及存储介质 |
CN112965704A (zh) * | 2021-03-02 | 2021-06-15 | 上海星融汽车科技有限公司 | 业务应用执行方法、系统及电子设备 |
CN113656291A (zh) * | 2021-08-04 | 2021-11-16 | 成都中科合迅科技有限公司 | 软件脚本引擎动态调用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102681854B (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102681854A (zh) | 业务执行方法、服务器和计算机系统 | |
CN109062563B (zh) | 用于生成页面的方法和装置 | |
CN107729139B (zh) | 一种并发获取资源的方法和装置 | |
US9497257B1 (en) | File level referrals | |
US8386636B2 (en) | Business process system management method | |
US10601871B2 (en) | Reconfiguration of security requirements for deployed components of applications | |
CN111400061A (zh) | 一种数据处理方法和系统 | |
US11036560B1 (en) | Determining isolation types for executing code portions | |
CN102081546A (zh) | 通过分隔额外信息来内存优化虚拟机代码的方法和系统 | |
US20040194111A1 (en) | Transfer of runtime-based application code | |
CN113703862B (zh) | 基于配置的接口调用方法、装置、设备及存储介质 | |
CN113076209B (zh) | 通信方法、装置、电子设备及存储介质 | |
CN110765187A (zh) | 一种数据源路由管理方法和装置 | |
CN100583043C (zh) | 提供共享Web模块的系统和方法 | |
CN110688096B (zh) | 包含插件的应用程序的构建方法、装置、介质及电子设备 | |
US20160150015A1 (en) | Methods for integrating applications with a data storage network and devices thereof | |
CN114138281A (zh) | 软件工程的编译方法、装置、设备及介质 | |
EP1128266A2 (en) | Cooperative software application architecture | |
US9239860B1 (en) | Augmenting virtual directories | |
CN111459497A (zh) | 基于webpack的资源包编译方法、系统、服务器和存储介质 | |
JP2022529707A (ja) | 返品タスクの生成方法、装置、機器及び記憶媒体 | |
US20130124611A1 (en) | Unified repository & tool infrastructure | |
US20180341475A1 (en) | Just In Time Deployment with Package Managers | |
US10853225B2 (en) | Control method, apparatus, and non-transitory computer-readable storage medium for generating data body adjusted to second program by converting data type of parameter of first program | |
CN113760262A (zh) | 任务处理方法、装置、计算机系统和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |