一种可编排的前端控制器实现方法、装置、设备及介质与流程

文档序号:26003645发布日期:2021-07-23 21:21阅读:131来源:国知局
一种可编排的前端控制器实现方法、装置、设备及介质与流程

本说明书涉及web应用技术领域,尤其涉及一种可编排的前端控制器实现方法、装置、设备及介质。



背景技术:

在web应用中,一般通过注册事件处理程序来响应用户事件,随着前端架构的不断发展,事件响应程序中的逻辑被抽离到前端控制器中,在前端控制器中进一步转调公共服务来实现具体功能。

现有技术在实现一个控制器方法时,需要按照业务逻辑,一步步去转调公共服务实现一个个子任务,同时通过控制逻辑中的判断、循环等,对这些任务进行控制,但这些控制逻辑一般都是通过代码固定写死的。当一些个性化定制的项目在处理逻辑不一致时,直接使用代码的控制逻辑容易造成代码执行中的错误,此时就需要重写公共控制器方法中的逻辑,造成了处理人员重复修改和编写公共控制器方法的问题。



技术实现要素:

本说明书一个或多个实施例提供了一种可编排的前端控制器实现方法、装置、设备及介质,用于解决如下技术问题:提供一种配置灵活、复用简单的前端控制器实现方法。

本说明书一个或多个实施例采用下述技术方案:

本说明书一个或多个实施例提供一种可编排的前端控制器实现方法,包括:

将用户事件转换为携带事件上下文的命令;

通过命令派发器将所述命令发送到对应的命令处理器工厂,以便所述命令处理器工厂根据命令名称查找对应的命令处理器;

通过命令处理器接口的编排方法,将所述对应的命令处理器的内部逻辑划分为多个任务节点;

定义所述多个任务节点的任务连接,以对所述多个任务节点进行编排控制;

将编排控制后的命令处理器返回所述命令,以实现前端控制器可编排的业务逻辑。

可选地,在本说明书的一个或多个实施例中,所述将用户事件转换为携带事件上下文的命令,具体包括:通过预先定义的命令接口,实现将用户事件转换为携带事件上下文的命令,其中,所述预先定义的命令接口包括命令名称、命令参数、命令上下文和命令关联的原生事件信息中的一项或多项的命令接口。

可选地,在本说明书的一个或多个实施例中,所述通过命令派发器将所述命令发送到对应的命令处理器工厂,以便所述命令处理器工厂根据命令名称查找对应的命令处理器之前,还包括:

所述命令处理器工厂根据所述命令名称创建命令处理器和命令处理扩展器;

将所述命令处理器通过注册方法注册于命令处理器注册器,以便所述命令处理器工厂在所述命令处理器注册器中根据所述命令名称查找所述对应的命令处理器;

将所述命令处理扩展器通过注册方法注册于命令处理器扩展器注册器,以便所述命令处理器扩展器注册器对所述命令处理器的扩展进行扩展;其中,所述命令处理器可以注册多个扩展。

可选地,在本说明书的一个或多个实施例中,所述编排方法为schedule方法;其中,所述schedule方法调用命令处理器基类中的addtask方法创建所述多个任务节点和addlink方法创建所述任务连接。

可选地,在本说明书的一个或多个实施例中,所述定义所述多个任务节点的任务连接,以对所述多个任务节点进行编排控制,具体包括:

在任务连接中定义前序任务节点、后续任务节点及预先设置的判断条件;

所述前序任务节点中的任务完成后,执行所述预先设置的判断条件;

根据所述预先设置的判断条件返回的结果,选择与所述结果对应的后续任务节点,以对所述多个任务节点进行编排控制。

可选地,在本说明书的一个或多个实施例中,所述定义所述多个任务节点的任务连接,以对所述多个任务节点进行编排控制之后,还包括:

通过扩展方法中的添加方法,在所述对应的命令处理器的任务节点之前或者任务节点之后,添加扩展业务;

通过所述扩展方法中的替换方法,将所述对应的命令处理器中的指定任务进行替换。

可选地,在本说明书的一个或多个实施例中,所述将编排控制后的命令处理器返回命令,以实现前端控制器可编排的业务逻辑之后,还包括:

通过执行任务处理函数,执行所述对应的命令处理器以及所述对应的命令处理扩展器的编排逻辑。

本说明书一个或多个实施例提供一种可编排的前端控制器实现装置,包括:

转换单元,用于将用户事件转换为携带事件上下文的命令;

发送单元,用于通过命令派发器将所述命令发送到对应的命令处理器工厂,以便所述命令处理器工厂根据命令名称查找对应的命令处理器;

编排扩展单元,用于通过命令处理器接口的编排方法,将所述对应的命令处理器的内部逻辑划分为多个任务节点;定义所述多个任务节点的任务连接,以对所述多个任务节点进行编排控制;

反馈单元,用于将编排控制后的命令处理器返回所述命令,以实现前端控制器可编排的业务逻辑。

本说明书一个或多个实施例提供一种可编排的前端控制器实现设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:

将用户事件转换为携带事件上下文的命令;

通过命令派发器将所述命令发送到对应的命令处理器工厂,以便所述命令处理器工厂根据命令名称查找对应的命令处理器;

通过命令处理器接口的编排方法,将所述对应的命令处理器的内部逻辑划分为多个任务节点;

定义所述多个任务节点的任务连接,以对所述多个任务节点进行编排控制;

将编排控制后的命令处理器返回所述命令,以实现前端控制器可编排的业务逻辑。

本说明书一个或多个实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:

将用户事件转换为携带事件上下文的命令;

通过命令派发器将所述命令发送到对应的命令处理器工厂,以便所述命令处理器工厂根据命令名称查找对应的命令处理器;

通过命令处理器接口的编排方法,将所述对应的命令处理器的内部逻辑划分为多个任务节点;

定义所述多个任务节点的任务连接,以对所述多个任务节点进行编排控制;

将编排控制后的命令处理器返回所述命令,以实现前端控制器可编排的业务逻辑。

本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:通过对命令处理器内部逻辑的编排使得命令处理器的内部逻辑被拆解为多个子任务,对子任务进行编排后,可以直接复用代码的编排,避免了固定代码复用时出现的一系列问题。同时通过复用代码的编排逻辑,简化了对参数和扩展点的维护,增加了控制器逻辑层的流程控制。通过命令处理扩展器在不改变原有编排框架的前提下,对控制器方法的内部逻辑进行个性化定制和扩展,达到了灵活配置且逻辑稳定的效果。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

在附图中:

图1为本说明书一个或多个实施例提供的一种可编排的前端控制器实现方法的流程示意图;

图2为本说明书一个或多个实施例提供的一种应用场景下,内部程序实现的类图;

图3为本说明书一个或多个实施例提供的一种可编排的前端控制器实现装置的内部结构示意图;

图4为本说明书一个或多个实施例提供的一种可编排的前端控制器实现设备的内部结构示意图;

图5为本说明书一个或多个实施例提供的一种可编排的前端控制器实现介质的内部结构示意图。

具体实施方式

本说明书实施例提供一种可编排的前端控制器实现方法、装置、设备及介质。

为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。

现有技术中通过提取控制器,转调公共服务的方式实现代码的复用,但此时的代码复用仅限于公共服务的复用。在实际的开发中,很多典型场景的交互逻辑非常类似,此时仅仅将公共服务进行复用是达不到场景需求的。虽然,现有技术中有针对典型的业务场景封装对应的公共控制器,以达到复用目的的技术。但是,当面对不同的产品线和不同项目的个性化需求时,封装公共服务器的方式会使得程序中的基类变得繁杂,难以对其进行维护。并且当基类中的关键逻辑和应用的具体场景与公共服务器基类的内部逻辑有出入时,只能重新实现基类中的逻辑。所以,现有技术中的代码复用无法适应场景的变换,容易出现错误和逻辑出入,使用的基类繁杂难以进行维护。

并且,现有技术中实现一个控制器方法时,需要按照业务逻辑,一步步去转调公共服务实现一个个子任务,通过控制逻辑对这些子任务进行控制。这些控制逻辑都是通过代码写死的,无法进行灵活的配置,一旦项目上的处理逻辑不一致,就需要重写公共控制器方法,无法实现复用。

本说明书通过将控制器内部的处理逻辑,拆解为一个个的任务节点即子任务,并根据任务连接来对这些任务节点进行控制逻辑的编排,将控制器方法内部的固定代码变为编排,实现了代码编排的复用。避免了典型场景中无法复用代码且难以维护的问题。同时通过对编排逻辑的扩展,实现了项目个性化定制时的灵活配置,提升了控制器方法的扩展性。

以下结合附图,详细说明本说明书提供的技术方案。

图1为本说明书一个或多个实施例提供的方法流程示意图,如图1所示一种可编排的前端控制器实现方法包括以下步骤:

s101:前端控制器将用户事件转换为携带事件上下文的命令。

在本说明书的一个或多个实施例中,所述将用户事件转换为携带事件上下文的命令,具体包括:通过预先定义的命令接口,实现将用户事件转换为携带上下文的命令,其中,所述预先定义的命令接口包括命令名称、命令参数、命令上下文和命令关联的原生事件信息中的一项或者多项的命令接口。

通过命令接口中的name方法定义命令的名称,以便通过命令的名称查找对应的命令处理器。通过params方法声明命令的参数,比如:当删除一条数据时,需要传递要删除的设备id,此时该设备id即为命令的参数;当命令处理器处理命令需要依赖外部的上下文信息时,通过context标明命令的上下文信息。其中,上下文信息可以是当前界面的数据状态、控件状态等需要依赖的信息。

其中,在本说明书的一个或多个实施例中,声明命令接口的定义如下所示:

s102:前端控制器通过命令派发器将所述命令发送到对应的命令处理器工厂,以便所述命令处理器工厂根据命令名称查找对应的命令处理器。

在本说明书的一个或多个实施例中,所述通过命令派发器将所述命令发送到对应的命令处理器工厂,以便所述命令处理器工厂根据命令名称查找对应的命令处理器之前,还包括:

所述命令处理器工厂根据所述命令名称创建命令处理器和命令处理扩展器;

将所述命令处理器通过注册方法注册于命令处理器注册器,以便所述命令处理器工厂在所述命令处理器注册器中根据所述命令处理器的逻辑进行扩展;其中,所述命令处理器可以注册多个扩展。

命令处理器工厂基于create方法通过命令名称创建对应的命令处理器,创建程序如下所示:

interfacecommandhandlerfactory{

create(commandname:string):icommandhandler;

}

命令处理器在创建了命令处理器后,通过命令处理器注册器中的set方法将创建的命令处理器的名称,注册在命令处理注册器中的注册表中,同时通过命令处理器扩展器注册器的set方法,将命令处理器的扩展也进行相应的注册。以便命令处理器工厂在接收了命令后,可以根据命令名称通过get方法查找和调用对应的命令处理器编排及其扩展。

其中,需要说明的是,一个命令处理器可以通过命令处理器扩展器注册器注册多个扩展,丰富控制器的内部控制逻辑。

在本说明书的一个或多个实施例中,命令处理器注册器的接口定义程序如下:

s103:前端控制器通过命令处理器接口的编排方法,将所述对应的命令处理器的内部逻辑划分为多个任务节点。

在本说明书的一个或多个实施例中,所述编排方法为schedule方法;其中,所述schedule方法调用命令处理器基类中的addtask方法创建所述多个任务节点和addlink方法创建所述任务连接。

在本说明书的一个或多个实施例中,可以对典型场景的控制器方法发布标准编排模板,以该编排模板为蓝本快速创建出具体的编排。

为了解决传统控制器方法的业务逻辑处理难以复用,无法适应变化的问题,对控制器方法内部的处理逻辑拆解为一个个的任务节点即子任务,并对这些任务节点进行编排控制,使得控制器的内部不再是固定的代码而是一组编排。

s104:前端控制器定义所述多个任务节点的任务连接,以对所述多个任务节点进行编排控制。

在本说明书的一个或多个实施例中,所述定义所述多个任务节点的任务连接,以对所述多个任务节点进行编排控制,具体包括:

在任务连接中定义前序任务节点、后续任务节点及预先设置的判断条件;

所述前序任务节点中的任务完成后,执行所述预先设置的判断条件;

根据所述预先设置的判断条件返回的结果,选择与所述结果对应的后续任务节点,以对所述多个任务节点进行编排控制。

在本说明书的一个或多个实施例中,所述任务节点通过tasknode进行定义,所述任务连接通过tasklink定义,其中,任务节点的接口定义如下所示:

通过name方法定义了任务节点的任务名称,func方法定义了任务处理函数,该任务处理函数的内部可以是对公共服务的调用,也可以是自定义的代码,通过execute方法执行任务处理函数实现任务,并通过提供上下文以供任务连接判断后序任务是否执行。

其中,任务连接的接口定义如下所示:

通过任务连接返回的布尔值判断前序任务完成后是否要执行后序任务,以进行任务逻辑的编排控制。

命令处理器的编排通过命令处理器接口的schedule方法,调用命令处理器基类中的addtask和addlink来实现。例如:在一个保存的场景中,要执行的事件为,首先对表单进行数据校验,当校验成功时,执行数据保存;当校验失败时,在界面上显示表单校验错误信息。那么可以通过以下程序实现:

其中,schedule方法使用命令处理器基类中的addtask方法,分别创建了任务名称为“validataform”即表单验证的任务节点,“save”即保存的任务节点,“showformerror”即显示错误信息的任务节点。使用addlink方法创建任务连接,将“validataform”作为前序节点,“save”作为后序节点,若执行判断条件返回“true”则执行表单验证后进行后序节点任务的数据保存工作。同样的使用addlink方法创建任务连接,将“validataform”作为前序节点,“showformerror”作为后序节点,若执行判断条件后返回“false”则执行后续节点任务的显示错误信息工作。

在本说明书的一个或多个实施例中,所述定义所述多个任务节点的任务连接,以对所述多个任务节点进行编排控制,还包括:

通过扩展方法中的添加方法,在所述对应的命令处理器的任务节点之前或者任务节点之后,添加扩展任务;

通过所述扩展方法中的替换方法,将所述对应的命令处理器中的指定任务进行替换。

本说明书一个或多个实施例中,当需要对控制器方法进行定制扩展时,命令处理器扩展器中的扩展方法即extend方法,在不改变原有实现框架的情况下,可以为一个命令处理器在不同的层次、不同的时机添加多个扩展,对原有的命令处理器编排进行扩展。避免了重写代码所造成的意想不到的错误,也避免了对原有实现方法的稳定性的影响。

例如:上述保存场景中,如果需要在保存前和保存后添加扩展处理,并且替换掉默认的表单验证错误的显示逻辑。那么,可以选用insertbefore方法和insertafter方法作为添加方法,用来添加扩展,选用replace方法作为替换方法用来替换掉某个任务的实现。具体地,通过insertbefore方法在保存任务节点前添加一个扩展任务;通过insertafter方法在保存任务节点后添加一个扩展任务;通过replace方法替换掉默认的表单验证错误的显示逻辑。该场景的实现程序如下所示:

s105:前端控制器将编排控制后的命令处理器返回所述命令,以实现前端控制器可编排的业务逻辑。

在本说明书的一个或多个实施例中,所述将编排控制后的命令处理器返回所述命令之后,还包括:

通过执行任务处理函数,执行所述对应的命令处理器以及所述对应的命令处理扩展器的编排逻辑。

本发明中一个或多个实施例中,通过派发器执行命令的具体代码如下:

“constcommandname=command.name;

consthandler=this.handlerfactory.create(commandname);

constlasttaskresult$=handler.execute(command);”

本说明书一个或多个实施例中,通过逻辑编排的复用,避免了复用代码时出现不可预料的错误的问题,也避免了控制器基类过于繁杂难以维护的问题。同时,在不改变原有框架的基础上实现了对逻辑的扩展,保证了逻辑的稳定性也增加了扩展性,实现了逻辑控制的灵活配置。

如图2所示为本说明书一个或多个实施例中的内部程序的实现类图。

在本说明书的一个或多个实施例中,控制器的应用进行初始化时,命令处理器工厂根据命令名称创建多个命令处理器,并将命令处理器的命令名称注册于命令处理器注册器,将命令处理器的扩展注册于命令处理器扩展器注册器中。如图2所示,当命令触发后,命令派发器将命令发送到对应的命令处理器工厂中,命令处理器工厂根据该命令的命令名称,分别在命令处理器注册器和命令处理器扩展器注册器中查找和所述命令的命令名称对应的命令处理器以及命令处理扩展器。当查找到对应的命令处理器及命令处理扩展器后,将对应的命令处理器及命令处理扩展器返回所述命令,以执行相应的处理逻辑和扩展逻辑。

图3为本说明书一个或多个实例提供的一种可编排的前端控制器实现装置的内部结构示意图;如图3所示,装置包括:转换单元301、发送单元302、编排扩展单元303和反馈单元304;

转换单元301,用于将用户事件转换为携带事件上下文的命令;

发送单元302,用于通过命令派发器将所述命令发送到对应的命令处理器工厂,以便所述命令处理器工厂根据命令名称查找对应的命令处理器;

编排扩展单元303,用于通过命令处理器接口的编排方法,将所述对应的命令处理器的内部逻辑划分为多个任务节点;定义所述多个任务节点的任务连接,以对所述任务节点进行编排控制;根据扩展方法对所述命令处理器添加扩展任务;

反馈单元304,用于将编排控制后的命令处理器返回所述命令,以实现前端控制器可编排的业务逻辑。

图4为本说明书一个或多个实施例提供的一种可编排的前端控制器实现设备的内部结构示意图。如图4所示,所述设备包括:

至少一个处理器401;以及,

与所述至少一个处理器401通信连接的存储器402;其中,

所述存储器402存储有可被所述至少一个处理器401执行的指令,所述指令被所述至少一个处理器401执行,以使至少一个处理器401能够:

将用户事件转换为携带事件上下文的命令;

通过命令派发器将所述命令发送到对应的命令处理器工厂,以便所述命令处理器工厂根据命令名称查找对应的命令处理器;

通过命令处理器接口的编排方法,将所述对应的命令处理器的内部逻辑划分为多个任务节点;

定义所述多个任务节点的任务连接,以对所述任务节点进行编排控制;

根据扩展方法对所述命令处理器添加扩展任务;

将编排控制后的命令处理器返回所述命令,以实现前端控制器可编排的业务逻辑。

图5为本说明书一个或多个实施例提供的一种非易失性计算机存储介质的内部结构示意图。

如图5所示,本说明书的一个或多个实施例中,一种非易失性计算机存储介质,存储有计算机可执行指令501,所述计算机可执行指令501设置为:

将用户事件转换为携带事件上下文的命令;

通过命令派发器将所述命令发送到对应的命令处理器工厂,以便所述命令处理器工厂根据命令名称查找对应的命令处理器;

通过命令处理器接口的编排方法,将所述对应的命令处理器的内部逻辑划分为多个任务节点;

定义所述多个任务节点的任务连接,以对所述任务节点进行编排控制;

根据扩展方法对所述命令处理器添加扩展任务;

将编排控制后的命令处理器返回所述命令,以实现前端控制器可编排的业务逻辑。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

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

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