业务请求处理方法及装置、业务请求处理系统与流程

文档序号:16207159发布日期:2018-12-08 07:15阅读:155来源:国知局
业务请求处理方法及装置、业务请求处理系统与流程

本申请涉及软件开发技术领域,尤其涉及一种业务请求处理方法及装置、业务请求处理系统。

背景技术

流程引擎(processengine)作为应用系统的一部分,为之提供对各应用系统有决定作用的根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案。在相关技术中,流程引擎可部署在应用服务器上,在需要增加新的处理逻辑或功能时,通常需要针对新的处理逻辑开发新的实现代码,并将新的实现代码进行编译后再部署到应用服务器上进行更新升级。



技术实现要素:

有鉴于此,本申请提供一种业务请求处理方法及装置、业务请求处理系统。

为实现上述目的,本申请提供的技术方案如下:

根据本申请的第一方面,提出了一种业务请求处理方法,包括:

流程引擎接收请求端发送的携带请求参数值的业务请求;

流程引擎根据流程模板文件,确定与所述数据请求中携带的请求参数值对应的包含至少一个流程对象的目标流程模板,所述流程模板文件包含预先确定的流程模板和请求参数值的对应关系;

流程引擎从代码组件容器中获取与所述目标流程模板中的各流程对象对应的业务代码并加载,所述代码组件容器存放有预先抽取的通用代码组件和个性化代码组件,所述代码组件容器中的代码通过动态部署方式进行更新;

流程引擎按照所述目标流程模板中流程对象的顺序依次执行所述业务代码,获得执行结果并返回至所述请求端。

根据本申请的第二方面,提出了一种业务请求处理装置,应用于流程引擎中,该装置包括请求接收单元、流程模板确定单元、代码获取单元及代码执行单元,其中:

所述请求接收单元接收请求端发送的携带请求参数值的业务请求;

所述流程模板确定单元根据流程模板文件,确定与所述数据请求中携带的请求参数值对应的包含至少一个流程对象的目标流程模板,所述流程模板文件包含预先确定的流程模板和请求参数值的对应关系;

所述代码获取单元从代码组件容器中获取与所述目标流程模板中的各流程对象对应的业务代码并加载,所述代码组件容器存放有预先抽取的通用代码组件和个性化代码组件,所述代码组件容器中的代码通过动态部署方式进行更新;

所述代码执行单元按照所述目标流程模板中流程对象的顺序依次执行所述业务代码,获得执行结果并返回至所述请求端。

根据本申请的第三方面,提出了一种业务请求处理系统,包括流程引擎、代码更新服务器、静态组件容器及动态组件容器;

所述静态组件容器存放有通用代码组件,所述动态组件容器存放有个性化代码组件;

所述代码更新服务器用于通过动态部署的方式对所述动态组件容器中的代码进行更新;

所述流程引擎包括请求接收单元、流程模板确定单元、代码获取单元及代码执行单元,其中:

所述请求接收单元接收请求端发送的携带请求参数值的业务请求;

所述流程模板确定单元根据流程模板文件,确定与所述数据请求中携带的请求参数值对应的包含至少一个流程对象的目标流程模板,所述流程模板文件包含预先确定的流程模板和请求参数值的对应关系;

所述代码获取单元从静态组件容器及动态组件容器中,获取与所述目标流程模板中的各流程对象对应的业务代码并加载;

所述代码执行单元按照所述目标流程模板中流程对象的顺序依次执行所述业务代码,获得执行结果并返回至所述请求端。

通过以上技术方案可以看出,本申请实施例通过抽象出不同业务场景能够通用的代码(通用代码组件)以及各业务场景不能通用的个性化代码组件,并将这些代码组件存放于代码组件容器中。在业务请求处理的过程中,可以根据业务请求中携带的请求参数值,确定与之对应的包含至少一个流程对象的目标流程模板,随后,从上述代码组件容器中获取所需要的业务代码并加载,最终,按照所述目标流程模板中流程对象的顺序依次执行所述业务代码,获得执行结果并返回至所述请求端。本申请实施例可有效提升流程引擎的可维护性、可扩展性。此外,在本申请实施例中,所述代码组件容器中的代码可通过动态部署方式进行更新,从而通过将流程引擎技术和动态部署技术相结合,提高代码部署的灵活性,实现在不重启应用服务器的情况下完成新的实现逻辑的更新升级,降低代码开发成本。

附图说明

图1是根据一示例性实施例示出的一种系统架构;

图2是根据一示例性实施例示出的一种业务请求处理方法的流程;

图3是根据一示例性实施例示出的一种电子设备的硬件架构;

图4是根据一示例性实施例示出的一种业务请求处理装置的框图。

具体实施方式

图1是根据一示例性实施例示出的一种系统架构,该系统可以包括:应用服务器、代码更新服务器、静态组件容器以及动态组件容器。其中,应用服务器上部署有流程引擎,静态组件容器以及动态组件容器可以持久化在特定数据库(database)中,代码更新服务器上部署有后台管理程序,用以对数据库中存储的代码组件进行更新,其中,可以通过sql语句来访问上述数据库来实现增、删、改、查的操作。应用服务器用于接收请求端发来的业务请求并执行相应的处理动作,并返回相应的处理结果。例如,上述请求端可以为外部系统或用户使用的客户端设备。上述应用服务器需要满足不同的业务场景的需求,针对不同的业务场景,可以通过包含不同的请求参数值的业务请求来实现。一般地,对于不同的业务场景,流程引擎所需处理的业务流程也是不一样的。这就决定了在不同业务场景下,流程引擎所需执行的代码的不同。为此,本申请实施例中,可以预先抽象出至少两种不同的业务场景所能通用的代码组件(称为“通用代码组件”)以及不同业务场景不能通用的代码组件(称为“个性化代码组件”),为了便于代码的管理,提高执行效率,上述静态组件容器可以用于存放上述通用代码组件,上述动态组件容器可以用于存放上述个性化代码组件。流程引擎在接收到业务请求后,则可以从上述静态组件容器、动态组件容器中分别获取到所需要的代码组件并执行。以下将结合图2来具体叙述实现过程。

如图2所示,该方法可应用于流程引擎,该流程引擎可以部署于应用服务器上,例如,该应用服务器的作用可以是为外部提供数据服务。在一实施例中,该方法包括下述步骤101~104,其中:

在步骤101中,接收请求端发送的携带请求参数值的业务请求。

例如,每一来自请求端的业务请求中的请求参数如下:

"servicetype"、"tradetype"及"scenetype";

其中,"servicetype"可代表服务类型,"tradetype"可代表交易类型,"scenetype"可代表场景类型。

每个业务请求中都需要包含与上述每一请求参数对应的值,例如,"servicetype"="trans_in","tradetype"="pkg_buy","scenetype"="qianbao01"。

在步骤102中,根据流程模板文件,确定与所述数据请求中携带的请求参数值对应的包含至少一个流程对象的目标流程模板,其中,所述流程模板文件包含预先确定的流程模板和请求参数值的对应关系。

由于不同的业务场景对应于不同的业务流程,需要通过不同的业务请求来实现。在本申请实施例中,可以通过包含至少一个流程对象的流程模板来描述某个业务场景所需要执行的业务流程(包含哪几个流程,各个流程之间的次序等)。为此,需要预先确定流程模板和请求参数值的对应关系,从而在收到一个业务请求之后,即可快速确定出与之对应的目标流程模板。

举例而言,用于描述流程模板和请求参数值的对应关系的一种示例性流程模板文件中的代码内容如下:

其中,通过上述代码内容,当业务请求中的请求参数"servicetype"、"tradetype"、"scenetype"的值分别为"trans_in"、"pkg_buy"、"qianbao01"时,所匹配到的目标流程模板由如下流程对象组成(按照先后次序):

"pro-trans-in-pkg-buy-init"(流程一);

"pro-trans-in-pkg-buy-precheck"(流程二);

"pro-trans-in-pkg-buy-apply"(流程三);

"pro-trans-in-pkg-buy-confirm"(流程四);

"pro-trans-in-success-result-return"或

"pro-trans-in-fail-result-return"(流程五)。

在步骤102之后,流程引擎需要实例化所述目标流程模板中包含的各流程对象。在面向对象的编程中,通常把用类创建对象的过程称为实例化。

上述示例性代码仅列举了一种业务场景下的流程模板,实际运行过程中,开发者可以根据实际需求,预先为其他业务场景相应设定与之对应的流程模板,并以代码的形式添加到上述流程模板文件中,在此不再一一列举。需说明的是,根据业务的发展,开发者也可以动态调整上述流程模板文件中的对应关系,所谓动态调整是指在不重启应用服务器的情况下进行调整。开发者可以将修改后的流程模板文件上传到可被流程引擎访问的数据库中,流程引擎在感知到变更时,可以按照变更后的流程模板文件来路由业务流程。

在步骤103中,从代码组件容器中获取与所述目标流程模板中的各流程对象对应的业务代码并加载,其中,所述代码组件容器存放有预先抽取的通用代码组件和个性化代码组件,所述代码组件容器中的代码通过动态部署方式进行更新。

在一可选实施例中,所述代码组件容器可以包括存放有通用代码组件的静态组件容器和存放有个性化代码组件的动态组件容器;其中,所述动态组件容器中的代码通过动态部署方式进行更新。“动态部署”也可称为“热部署(hotswap)”,热部署是在不重启业务服务器的前提下,能自动侦测到代码文件的变化,更新运行时代码的行为。本申请实施例中,相较于静态组件容器,动态组件容器中的代码由于需要经常性的变更,往往随着业务复杂度的增加,后期对于动态组件容器的维护成本较大,扩展性也一般。为此,本申请实施例通过静态组件容器和动态组件容器相结合的方式,定期或不定期地将动态组件容器中的某些可被至少两种业务场景复用的代码组件转移到静态组件容器中进行持久化存储,从而尽可能地减少在动态组件容器中存放的代码组件,尽可能多地在静态组件容器中存放供流程引擎加载的代码组件,降低维护成本。在其他实施例中,当某一目标代码组件在一段较长时间内没有变更时,也可以将该目标代码从所述动态组件容器转移至所述静态组件容器中。对于需要新增的一些业务场景或实现逻辑的个性化代码,可以先通过动态部署的方式存放到上述动态组件容器中,从而避免应用服务器的重启,保证业务运行的不中断。在一实施例中,所述通用代码组件为打包的java代码(编译后的java代码),所述个性化代码组件为需要动态加载的java类、和/或动态脚本(如groovy脚本)、和/或el表达式等。

基于以上内容,在一可选实施例中,步骤103可具体包括:

步骤1031:流程引擎根据所述目标流程模板中包含的各流程对象,确定实现该目标流程模板所需要的通用代码组件及个性化代码组件;

步骤1032:流程引擎从所述静态组件容器中获取所述通用代码组件;

步骤1033:流程引擎从所述动态组件容器中获取所述个性化代码组件。

举例而言,一种目标流程模板中的各流程对象的具体实现代码如下:

其中,上述各种流程对象可由一个或多个“action”来实现。每个“action”的实现代码可以采用java语句、和/或el(expressionlanguage)表达式、和/或groovy脚本等来编写。以上述“action”中为例,可分为能够被不同业务场景所通用的“action”(即通用组件),以及不能被不同业务场景通用的“action”(即个性化组件)。开发者可以预先为抽象出的每个代码组件定义相应的标签,用以指示其属于通用组件还是个性化组件。

在本申请实施例中,在从静态组件容器及动态组件容器中分别获取到所需要的通用组件及个性化组件之后,便可以加载获得的业务代码。其中,将代码从数据库中读取到应用服务器的内存中的过程即为加载过程。

在步骤104中,按照所述目标流程模板中流程对象的顺序依次执行所述业务代码,获得执行结果并返回至所述请求端。

根据实际业务需求,可以循环执行上述所加载的业务代码,直至获得所需要的执行结果。当然,若无法获得执行结果(执行异常),则也可以向请求端返回相应的异常信息。

通过上述业务请求处理方法,由于抽象出不同业务场景可通用的代码以及不能通用的个性化代码,并分别持久化到静态组件容器及动态组件容器中,可有效提升流程引擎的可维护性、可扩展性,有效降低维护成本,并且在一定程度上提高流程引擎的执行效率。此外,可通过动态部署方式来对动态组件容器中的代码组件进行更新,从而通过将流程引擎技术和动态部署技术相结合,提高代码部署的灵活性,实现在不重启应用服务器的情况下完成新的实现逻辑的更新升级,降低代码开发成本。

图3是根据一示例性实施例示出的一种电子设备的硬件结构。请参考图3,在硬件层面,该电子设备可为部署有流程引擎的应用服务器,该应用服务器可以包括处理器、内部总线、网络接口、存储器(包括内存以及非易失性存储器),当然还可能包括其他业务所需要的硬件。其中,在存储器内可以存储有用以实现上述业务请求处理方法的相关逻辑(即计算机程序),处理器可从非易失性存储器中读取对应的计算机程序到内存中然后运行。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

如图4所示,在一实施例中,一种业务请求处理装置200,可应用于流程引擎中,该装置200可以包括请求接收单元201、流程模板确定单元202、代码获取单元203及代码执行单元204,其中:

所述请求接收单元201接收请求端发送的携带请求参数值的业务请求。

所述流程模板确定单元202根据流程模板文件,确定与所述数据请求中携带的请求参数值对应的包含至少一个流程对象的目标流程模板,所述流程模板文件包含预先确定的流程模板和请求参数值的对应关系。

所述代码获取单元203从代码组件容器中获取与所述目标流程模板中的各流程对象对应的业务代码并加载,所述代码组件容器存放有预先抽取的通用代码组件和个性化代码组件,所述代码组件容器中的代码通过动态部署方式进行更新。

所述代码执行单元204按照所述目标流程模板中流程对象的顺序依次执行所述业务代码,获得执行结果并返回至所述请求端。

在一可选的实施例中,所述代码组件容器包括存放有通用代码组件的静态组件容器和存放有个性化代码组件的动态组件容器。

其中,所述代码获取单元203可具体包括:

确定子单元,根据所述目标流程模板中包含的各流程对象,确定实现该目标流程模板所需要的通用代码组件及个性化代码组件;

第一获取子单元,从所述静态组件容器中获取所述通用代码组件;

第二获取子单元,从所述动态组件容器中获取所述个性化代码组件。

在一可选的实施例中,所述动态组件容器中的代码可通过动态部署方式进行更新。

在一可选的实施例中,所述装置还包括:

代码转移单元,当所述动态组件容器中的目标代码被至少两个业务场景复用时,将该目标代码从所述动态组件容器转移至所述静态组件容器中。

在一可选的实施例中,所述装置还包括:

实例化单元,实例化所述目标流程模板中包含的各流程对象。

在一可选的实施例中,所述通用代码组件为打包的java代码,所述个性化代码组件为需要动态加载的java类、和/或动态脚本、和/或el表达式。

以上计算机程序被处理器执行时实现的步骤可以参照上文对方法实施例的描述,并且,在不相冲突的前提下,上述装置实施例的内容和上述方法实施例的内容可以互为补充,对此不再予以赘述。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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