CN114661373A - 多种工程化工具的融合方法及装置 - Google Patents
多种工程化工具的融合方法及装置 Download PDFInfo
- Publication number
- CN114661373A CN114661373A CN202210233452.9A CN202210233452A CN114661373A CN 114661373 A CN114661373 A CN 114661373A CN 202210233452 A CN202210233452 A CN 202210233452A CN 114661373 A CN114661373 A CN 114661373A
- Authority
- CN
- China
- Prior art keywords
- task
- plug
- task flow
- name
- function
- 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.)
- Pending
Links
- 238000007500 overflow downdraw method Methods 0.000 title abstract description 11
- 230000006870 function Effects 0.000 claims abstract description 120
- 238000000034 method Methods 0.000 claims abstract description 73
- 238000013507 mapping Methods 0.000 claims abstract description 20
- 238000004806 packaging method and process Methods 0.000 claims abstract description 13
- 230000004927 fusion Effects 0.000 claims description 12
- 238000011161 development Methods 0.000 abstract description 6
- 230000009466 transformation Effects 0.000 abstract description 5
- 238000012217 deletion Methods 0.000 description 13
- 230000037430 deletion Effects 0.000 description 13
- 238000001514 detection method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000011423 initialization method Methods 0.000 description 8
- 238000003780 insertion Methods 0.000 description 6
- 230000037431 insertion Effects 0.000 description 6
- 238000012827 research and development Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 235000020289 caffè mocha Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开是关于多种工程化工具的融合方法及装置。该方法包括:添加项目中配置的插件;插件是将工程化工具封装后形成的;初始化插件;获取任务流名称;任务流包括多个任务,其中,将工程化工具实现的每项功能称为任务;根据任务流名称从任务流队列中获取任务流对应的所有任务函数;任务函数用于实现任务;任务流队列包括:任务流名称与任务流对应的所有任务函数的映射关系;按照预设执行方式执行任务函数。其中,可以将工程化工具封装为插件,融合和标准化了多种不同的工程化工具,可实现不同项目之间无缝复用工具,无需进行二次改造和开发,灵活性高。
Description
技术领域
本公开涉及项目开发技术领域,尤其涉及多种工程化工具的融合方法及装置。
背景技术
前端项目研发过程存在许多环节,例如项目构建、检测、测试、发布等等,每个环节需使用多种不同的工程化工具,例如构建环节使用webapack工具、检测环节使用eslint工具、测试环节使用jest工具、样式编码环节使用less工具等等,工程化工具是用于处理各环节的对应功能需求,用工具的方式解决研发过程中的需求,提升项目研发效率。
目前一般采用的方案是当实现研发环节功能需求时使用工程化工具提供的调用方式分别去执行,调用方式为工具提供的接口或者命令行方式,例如当使用eslint检测代码时,可调用eslint提供的命令行命令“eslint--fix”。相同环节由于功能需求不同需使用不同的工具,例如构建环节时会选择webpack或者rollup,测试时会选择jest或者mocha,目前是通过修改调用方式将工具替换为其他工具,此时依赖原工具的代码均需要改造,相同的工具存在复用到其他项目的需求,目前是通过拷贝调用代码到另外一个项目,然后改造对应环节的调用方式来实现。
上述方案中存在不同项目之间无法很好的复用相同工具,需要复制代码逻辑到另外一个项目中,同时修改对应环节的调用方式和代码,浪费人力,增加项目研发周期。
发明内容
为克服相关技术中存在的问题,本公开实施例提供多种工程化工具的融合方法及装置。所述技术方案如下:
根据本公开实施例的第一方面,提供一种多种工程化工具的融合方法,包括:
添加项目中配置的插件;所述插件是将工程化工具封装后形成的;
初始化所述插件;
获取任务流名称;所述任务流包括多个任务,其中,将所述工程化工具实现的每项功能称为所述任务;
根据所述任务流名称从任务流队列中获取所述任务流对应的所有任务函数;所述任务函数用于实现所述任务;所述任务流队列包括:所述任务流名称与所述任务流对应的所有任务函数的映射关系;
按照预设执行方式执行所述任务函数。
本公开的实施例提供的技术方案可以包括以下有益效果:本公开提供一种多种工程化工具的融合方法,包括:添加项目中配置的插件;插件是将工程化工具封装后形成的;初始化插件;获取任务流名称;任务流包括多个任务,其中,将工程化工具实现的每项功能称为任务;根据任务流名称从任务流队列中获取任务流对应的所有任务函数;任务函数用于实现任务;任务流队列包括:任务流名称与任务流对应的所有任务函数的映射关系;按照预设执行方式执行任务函数。其中,可以将工程化工具封装为插件,融合和标准化了多种不同的工程化工具,可实现不同项目之间无缝复用工具,无需进行二次改造和开发,灵活性高。
在一个实施例中,所述添加项目中配置的插件,包括:
加载插件配置文件,所述配置文件用于配置项目注册的所述插件以及所述插件对应配置项;
序列化所述配置文件,得到注册的所述插件以及所述插件对应的参数;
根据所述插件对应的参数和预设的添加方法,将所述插件插入到插件数组中。
在一个实施例中,所述方法还包括:
接收任务注册指令,所述任务注册指令中包括:待注册的任务流名称和待注册的任务函数;
检测所述待注册的任务流名称对应的任务流队列是否已经存在;
若不存在,创建新任务流队列;
建立所述待注册的任务流名称与所述新任务流队列的映射关系;
将所述待注册的任务函数插入到所述新任务流队列中;
若存在,将所述待注册的任务函数插入到与所述待注册的任务流名称对应的任务流队列中。
在一个实施例中,所述方法还包括:
接收任务删除指令,所述任务删除指令中包括:待删除的任务流名称和待删除的任务函数;
在已注册的任务流队列中删除所述待删除的任务流名称和所述待删除的任务函数。
在一个实施例中,所述方法还包括:
接收插件删除指令,所述插件删除指令中包括:待删除的插件名称;
在插件数组中删除所述待删除的插件名称对应的插件。
在一个实施例中,所述预设执行方式包括:
并行执行,或,串行执行,或,瀑布流执行。
在一个实施例中,所述创建新任务流队列,包括:
在已有任务流队列的头部创建;
或者,
在已有任务流队列的尾部创建;
或者,
在预设任务流队列前创建;
或者,
在预设任务流队列后创建。
根据本公开实施例的第二方面,提供一种多种工程化工具的融合装置,包括:
添加模块,用于添加项目中配置的插件;所述插件是将工程化工具封装后形成的;
初始化模块,用于初始化所述插件;
名称获取模块,用于获取任务流名称;所述任务流包括多个任务,其中,将所述工程化工具实现的每项功能称为所述任务;
函数获取模块,用于根据所述任务流名称从任务流队列中获取所述任务流对应的所有任务函数;所述任务函数用于实现所述任务;所述任务流队列包括:所述任务流名称与所述任务流对应的所有任务函数的映射关系;
执行模块,用于按照预设执行方式执行所述任务函数。
在一个实施例中,所述添加模块包括:
加载子模块,用于加载插件配置文件,所述配置文件用于配置项目注册的所述插件以及所述插件对应配置项;
序列化子模块,用于序列化所述配置文件,得到注册的所述插件以及所述插件对应的参数;
插件插入子模块,用于根据所述插件对应的参数和预设的添加方法,将所述插件插入到插件数组中。
在一个实施例中,所述装置还包括:
任务注册指令接收模块,用于接收任务注册指令,所述任务注册指令中包括:待注册的任务流名称和待注册的任务函数;
检测模块,用于检测所述待注册的任务流名称对应的任务流队列是否已经存在;
创建模块,用于在所述检测模块检测到所述待注册的任务流名称对应的任务流队列不存在时,创建新任务流队列;
建立模块,用于建立所述待注册的任务流名称与所述新任务流队列的映射关系;
第一函数插入模块,用于将所述待注册的任务函数插入到所述新任务流队列中;
第二函数插入模块,用于在所述检测模块检测到所述待注册的任务流名称对应的任务流队列存在时,将所述待注册的任务函数插入到与所述待注册的任务流名称对应的任务流队列中。
在一个实施例中,所述装置还包括:
任务删除指令接收模块,用于接收任务删除指令,所述任务删除指令中包括:待删除的任务流名称和待删除的任务函数;
删除模块,用于在已注册的任务流队列中删除所述待删除的任务流名称和所述待删除的任务函数。
在一个实施例中,所述装置还包括:
插件删除指令接收模块,用于接收插件删除指令,所述插件删除指令中包括:待删除的插件名称;
插件删除模块,用于在插件数组中删除所述待删除的插件名称对应的插件。
在一个实施例中,所述预设执行方式包括:
并行执行,或,串行执行,或,瀑布流执行。
在一个实施例中,所述创建模块,包括:第一创建子模块;
所述第一创建子模块,用于在已有任务流队列的头部创建;
或者,
所述第一创建子模块,用于在已有任务流队列的尾部创建;
或者,
所述第一创建子模块,用于在预设任务流队列前创建;
或者,
所述第一创建子模块,用于在预设任务流队列后创建。
根据本公开实施例的第三方面,提供一种多种工程化工具的融合装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
添加项目中配置的插件;所述插件是将工程化工具封装后形成的;
初始化所述插件;
获取任务流名称;所述任务流包括多个任务,其中,将所述工程化工具实现的每项功能称为所述任务;
根据所述任务流名称从任务流队列中获取所述任务流对应的所有任务函数;所述任务函数用于实现所述任务;所述任务流队列包括:所述任务流名称与所述任务流对应的所有任务函数的映射关系;
按照预设执行方式执行所述任务函数。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现第一方面中任一项所述方法的步骤。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的多种工程化工具的融合方法的流程图。
图2是根据一示例性实施例示出的多种工程化工具的融合方法中步骤S101的流程图。
图3是根据一示例性实施例示出的本公开实施例应用的模块图。
图4是根据一示例性实施例示出的注册任务的流程图。
图5是根据一示例性实施例示出的执行任务的流程图。
图6是根据一示例性实施例示出的注册部分的流程图。
图7是根据一示例性实施例示出的初始化部分的流程图。
图8是根据一示例性实施例示出的执行部分的流程图。
图9是根据一示例性实施例示出的一种多种工程化工具的融合装置的框图。
图10是根据一示例性实施例示出的一种多种工程化工具的融合装置中添加模块的框图。
图11是根据一示例性实施例示出的一种用于多种工程化工具的融合90的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的多种工程化工具的融合方法的流程图,如图1所示,包括以下步骤S101-S105:
在步骤S101中,添加项目中配置的插件;插件是将工程化工具封装后形成的;
本公开中可以通过不同的模块(服务模块、任务流模块和插件与插件管理模块)实现本公开中的方法,以下实施例中详细说明。
本步骤中,服务模块可以添加项目中配置的插件。
在一个实施例中,如图2所示,上述步骤S101包括以下子步骤S1011-1013:
在步骤S1011中,加载插件配置文件,配置文件用于配置项目注册的插件以及插件对应配置项;
在步骤S1012中,序列化配置文件,得到注册的插件以及插件对应的参数;
在步骤S1013中,根据插件对应的参数和预设的添加方法,将插件插入到插件数组中。
具体的,服务模块首先加载插件配置文件,配置文件用于配置项目注册的插件以及插件对应配置项。服务模块序列化配置文件后,得到注册的插件以及对应参数。服务模块依次初始化任务流模块与插件管理模块,将服务模块实例作为初始化参数注入到两个模块中。服务模块将两个模块实例绑定到服务模块实例上。服务模块遍历注册的插件依次调用插件管理模块的添加方法,添加插件到插件管理器的插件数组中。
具体的,插件管理模块会传入插件配置参数与服务模块实例,实例化插件,得到插件实例,插件管理模块将插件实例插入到插件数组中。
在步骤S102中,初始化插件;
继续按照上述的例子,服务模块调用插件管理模块的初始化方法初始化所有插件。
具体的,服务模块遍历注册的插件依次调用插件管理模块的初始化方法,插件管理模块遍历插件数组中的所有实例,依次执行插件实例的初始化方法,然后,插件通过服务模块实例获取到任务流模块实例,调用注册方法,注册任务。
在步骤S103中,获取任务流名称;任务流包括多个任务,其中,将工程化工具实现的每项功能称为任务;
服务模块,根据开发者调用的命令行参数得到需执行的任务流名称。
在步骤S104中,根据任务流名称从任务流队列中获取任务流对应的所有任务函数;任务函数用于实现任务;任务流队列包括:任务流名称与任务流对应的所有任务函数的映射关系。
服务模块根据任务流名称调用任务流模块的任务函数。
在步骤S105中,按照预设执行方式执行任务函数。
在一种可实现方式中,可以按照并行执行,或,串行执行,或,瀑布流执行任务函数。
在相关技术中,同一个环节也存在执行多个工具的需求,例如检测环节需同时执行eslint、stylelint,目前是采取依次执行命令行或者调用代码依次执行的方式,而本公开可以实现一套任务流机制,提供并发和串行等执行方式,工程化工具订阅相应任务流,即可实现同一任务流可并发或串行执行多个工程化工具,解决了原来同一个环节执行多个任务需改造代码、改变调用方式的问题,同时提供了多种执行方式,满足不同环节执行方式不同的需求。
本公开提供一种多种工程化工具的融合方法,包括:添加项目中配置的插件;插件是将工程化工具封装后形成的;初始化插件;获取任务流名称;任务流包括多个任务,其中,将工程化工具实现的每项功能称为任务;根据任务流名称从任务流队列中获取任务流对应的所有任务函数;任务函数用于实现任务;任务流队列包括:任务流名称与任务流对应的所有任务函数的映射关系;按照预设执行方式执行任务函数。其中,可以将工程化工具封装为插件,融合和标准化了多种不同的工程化工具,可实现不同项目之间无缝复用工具,无需进行二次改造和开发,灵活性高。
在本公开中,还需要进行任务的注册,在注册任务时,是给每一个任务流定义唯一名称和任务队列,注册任务时传入任务流名称和任务函数,任务函数放入任务队列中,具体的,注册任务包括以下步骤A1-A6:
A1、接收任务注册指令,任务注册指令中包括:待注册的任务流名称和待注册的任务函数;
A2、检测待注册的任务流名称对应的任务流队列是否已经存在;
A3、若不存在,创建新任务流队列;
A4、建立待注册的任务流名称与新任务流队列的映射关系;
A5、将待注册的任务函数插入到新任务流队列中;
A6、若存在,将待注册的任务函数插入到与待注册的任务流名称对应的任务流队列中。
其中,创建新任务流队列,包括:
在已有任务流队列的头部创建;
或者,
在已有任务流队列的尾部创建;
或者,
在预设任务流队列前创建;
或者,
在预设任务流队列后创建。
不需要注册某一任务流时,可调用删除任务方法,传入任务流名称和任务函数,则可删除已注册的任务。在一个实施例中,删除任务包括以下步骤B1-B2:
B1、接收任务删除指令,任务删除指令中包括:待删除的任务流名称和待删除的任务函数;
B2、在已注册的任务流队列中删除待删除的任务流名称和待删除的任务函数。
在一个实施例中,上述方法还包括C1-C2:
C1、接收插件删除指令,插件删除指令中包括:待删除的插件名称;
C2、在插件数组中删除待删除的插件名称对应的插件。
传入插件名称,根据插件名称查找到对应插件实例,从插件数组中删除该插件实例。
下面通过几个实施例详细介绍实现过程。
图3是根据一示例性实施例示出的本公开实施例应用的模块图,如图3所示,该技术方案从功能模块共分为三个模块,任务流模块、插件与插件管理模块、服务模块,其中任务流模块负责任务的注册与执行;插件与插件管理模块负责定义插件的规范与管理插件的添加、删除与执行;服务模块负责衔接任务流模块和插件管理模块以及控制插件的执行时机等,下面依次为三个模块的详细描述::
1.任务流模块
研发环节的各项工程化工具依次执行,将工程化工具实现的每项功能称为任务,在代码实现中对应函数,多个任务依次执行称为任务流,给各任务流定义一个名称,例如构建任务流为build,检测任务流为lint,任务流中可并发或者串行执行多个任务,例如检测任务流可串行依次执行eslint、stylelint等检测任务。
任务流模块则负责管理任务的添加、执行等流程,任务流模块定义了注册任务、删除任务、执行任务三个方法,服务模块负责实例化该模块和执行任务,实例化后将任务流模块实例挂载在服务模块的当前实例中,最终服务模块实例将注入到插件中,插件可调用注册任务方法注册相应任务流,下面是对三个方法的详细描述:
1.注册任务:给每一个任务流定义唯一名称和任务队列,注册任务时传入任务流名称和任务函数,任务函数放入任务队列中,其中注册方式包含队列头部注册、队列尾部注册、某一个任务前注册、某一个任务后注册四种方式,如图4所示。
2.删除任务:当不需要注册到某一任务流时,可调用删除任务方法,传入任务流名称和任务函数,则可删除已注册的任务。
3.执行任务:传入任务流名称可执行任务流的所有任务函数,执行方式包含并行执行、串行执行、瀑布流执行(后一个任务依赖前一个任务的返回结果)三种方式,如图5所示。
2.插件与插件管理模块
插件模块定义了一个抽象插件类,将各类工程化工具封装为插件,例如eslint工具,则封装为eslint插件,抽象插件类标准化了插件规范,定义了初始化抽象方法,服务模块实例作为参数注入到插件类中,则插件内部可调用服务模块实例上的相关方法,插件必须继承抽象插件类和实现初始化抽象方法,插件在初始化方法中可通过服务模块实例获取到任务流模块实例上的注册方法注册任务。
插件管理模块包含添加插件方法、删除插件方法、初始化插件方法,插件管理模块在服务模块中被实例化,实例化时服务模块当前实例将被注入到插件管理模块中,插件管理模块最终将服务模块实例注入到插件中,下面为三个方法的详细描述:
1.添加插件方法:传入插件模块与对应配置参数,将服务模块实例作为参数注入到插件中,实例化插件得到插件实例,并将其插入到插件数组中。
2.删除插件方法:传入插件名称,根据名称查找到对应实例,从插件数组中删除该实例。
3.初始化插件方法:初始化所有插件,该方法被服务模块调用,具体步骤如下:
a)遍历插件数组中的所有实例,依次执行插件实例的初始化方法。
b)在插件初始化方法可通过服务模块实例获取到任务流模块实例上的注册方法注册任务。
3.服务模块
服务模块用于初始化任务流模块与插件管理模块以及执行插件等,从功能上划分主要为注册、初始化、执行三个部分,下面依次对三个部分详细介绍:
1.注册部分用于添加项目中配置的插件,具体步骤如下,整体流程如图6所示:
a)首先加载插件配置文件,配置文件用于配置项目注册的插件以及插件对应配置项。
b)序列化配置文件后,得到注册的插件以及对应参数。
c)依次初始化任务流模块与插件管理模块,将服务模块实例作为初始化参数注入到两个模块中。
d)将两个模块实例绑定到服务模块实例上。
e)遍历注册的插件依次调用插件管理模块的添加方法,添加插件到插件管理器中。
2.初始化部分调用插件管理模块的初始化方法初始化所有插件,整体流程如图7所示。
3.执行部分用于执行任务流,具体步骤如下,整体流程如图8所示:
a)根据开发者调用的命令行参数得到需执行的任务流名称;
b)根据任务流名称调用任务流模块的执行方法。
本公开定义一种抽象插件,标准化了多种不同的工程化工具,可实现融合不同的工程化工具,实现不同项目之间无缝复用工具,无需进行二次改造和开发,灵活性高。进一步的,本公开实现一套任务流机制,各个环节依次对应不同任务流,工程化工具注册相应任务流,同一任务流下可并发或串行执行多个工程化工具,同一任务流中的相同功能也可采用不同的工具实现,可实现工程化工具的可插拔。
本发明的主要优点如下:
1.定义一种插件模型,将工程化工具封装为对应插件,融合和标准化了多种不同的工程化工具,可实现不同项目之间无缝复用工具,无需进行二次改造和开发,灵活性高。
2.通过插件配置文件可方便的定义项目需使用的工程化工具,新增、删除、调整执行顺序只需改动配置文件即可,改造成本小。
3.实现一套任务流机制,提供并发和串行等执行方式,工程化工具订阅相应任务流,即可实现同一任务流可并发或串行执行多个工程化工具,解决了原来同一个环节执行多个任务需改造代码、改变调用方式的问题,同时提供了多种执行方式,满足不同环节执行方式不同的需求。
下述为本公开装置实施例,可以用于执行本公开方法实施例。
图9是根据一示例性实施例示出的一种多种工程化工具的融合装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图9所示,该多种工程化工具的融合装置包括:
添加模块11,用于添加项目中配置的插件;所述插件是将工程化工具封装后形成的;
初始化模块12,用于初始化所述插件;
名称获取模块13,用于获取任务流名称;所述任务流包括多个任务,其中,将所述工程化工具实现的每项功能称为所述任务;
函数获取模块14,用于根据所述任务流名称从任务流队列中获取所述任务流对应的所有任务函数;所述任务函数用于实现所述任务;所述任务流队列包括:所述任务流名称与所述任务流对应的所有任务函数的映射关系;
执行模块15,用于按照预设执行方式执行所述任务函数。
在一个实施例中,如图10所示,所述添加模块11包括:
加载子模块111,用于加载插件配置文件,所述配置文件用于配置项目注册的所述插件以及所述插件对应配置项;
序列化子模块112,用于序列化所述配置文件,得到注册的所述插件以及所述插件对应的参数;
插件插入子模块113,用于根据所述插件对应的参数和预设的添加方法,将所述插件插入到插件数组中。
在一个实施例中,所述装置还包括:
任务注册指令接收模块,用于接收任务注册指令,所述任务注册指令中包括:待注册的任务流名称和待注册的任务函数;
检测模块,用于检测所述待注册的任务流名称对应的任务流队列是否已经存在;
创建模块,用于在所述检测模块检测到所述待注册的任务流名称对应的任务流队列不存在时,创建新任务流队列;
建立模块,用于建立所述待注册的任务流名称与所述新任务流队列的映射关系;
第一函数插入模块,用于将所述待注册的任务函数插入到所述新任务流队列中;
第二函数插入模块,用于在所述检测模块检测到所述待注册的任务流名称对应的任务流队列存在时,将所述待注册的任务函数插入到与所述待注册的任务流名称对应的任务流队列中。
在一个实施例中,所述装置还包括:
任务删除指令接收模块,用于接收任务删除指令,所述任务删除指令中包括:待删除的任务流名称和待删除的任务函数;
删除模块,用于在已注册的任务流队列中删除所述待删除的任务流名称和所述待删除的任务函数。
在一个实施例中,所述装置还包括:
插件删除指令接收模块,用于接收插件删除指令,所述插件删除指令中包括:待删除的插件名称;
插件删除模块,用于在插件数组中删除所述待删除的插件名称对应的插件。
在一个实施例中,所述预设执行方式包括:
并行执行,或,串行执行,或,瀑布流执行。
在一个实施例中,所述创建模块,包括:第一创建子模块;
所述第一创建子模块,用于在已有任务流队列的头部创建;
或者,
所述第一创建子模块,用于在已有任务流队列的尾部创建;
或者,
所述第一创建子模块,用于在预设任务流队列前创建;
或者,
所述第一创建子模块,用于在预设任务流队列后创建。
根据本公开实施例的第三方面,提供一种多种工程化工具的融合装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器被配置为:
添加项目中配置的插件;所述插件是将工程化工具封装后形成的;
初始化所述插件;
获取任务流名称;所述任务流包括多个任务,其中,将所述工程化工具实现的每项功能称为所述任务;
根据所述任务流名称从任务流队列中获取所述任务流对应的所有任务函数;所述任务函数用于实现所述任务;所述任务流队列包括:所述任务流名称与所述任务流对应的所有任务函数的映射关系;
按照预设执行方式执行所述任务函数。
上述处理器还可被配置为:
所述添加项目中配置的插件,包括:
加载插件配置文件,所述配置文件用于配置项目注册的所述插件以及所述插件对应配置项;
序列化所述配置文件,得到注册的所述插件以及所述插件对应的参数;
根据所述插件对应的参数和预设的添加方法,将所述插件插入到插件数组中。
在一个实施例中,上述处理器还可被配置为:
接收任务注册指令,所述任务注册指令中包括:待注册的任务流名称和待注册的任务函数;
检测所述待注册的任务流名称对应的任务流队列是否已经存在;
若不存在,创建新任务流队列;
建立所述待注册的任务流名称与所述新任务流队列的映射关系;
将所述待注册的任务函数插入到所述新任务流队列中;
若存在,将所述待注册的任务函数插入到与所述待注册的任务流名称对应的任务流队列中。
在一个实施例中,上述处理器还可被配置为:
接收任务删除指令,所述任务删除指令中包括:待删除的任务流名称和待删除的任务函数;
在已注册的任务流队列中删除所述待删除的任务流名称和所述待删除的任务函数。
在一个实施例中,上述处理器还可被配置为:
接收插件删除指令,所述插件删除指令中包括:待删除的插件名称;
在插件数组中删除所述待删除的插件名称对应的插件。
在一个实施例中,所述预设执行方式包括:
并行执行,或,串行执行,或,瀑布流执行。
在一个实施例中,所述创建新任务流队列,包括:
在已有任务流队列的头部创建;
或者,
在已有任务流队列的尾部创建;
或者,
在预设任务流队列前创建;
或者,
在预设任务流队列后创建。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图11是根据一示例性实施例示出的一种用于多种工程化工具的融合90的框图。例如,装置90可以被提供为一服务器。装置90包括处理组件902,其进一步包括一个或多个处理器,以及由存储器903所代表的存储器资源,用于存储可由处理组件902的执行的指令,例如应用程序。存储器903中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件902被配置为执行指令,以执行上述方法。
装置90还可以包括一个电源组件906被配置为执行装置90的电源管理,一个有线或无线网络接口905被配置为将装置90连接到网络,和一个输入输出(I/O)接口908。装置90可以操作基于存储在存储器903的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置90的处理器执行时,使得装置90能够执行上述多种工程化工具的融合的方法,所述方法包括:
添加项目中配置的插件;所述插件是将工程化工具封装后形成的;
初始化所述插件;
获取任务流名称;所述任务流包括多个任务,其中,将所述工程化工具实现的每项功能称为所述任务;
根据所述任务流名称从任务流队列中获取所述任务流对应的所有任务函数;所述任务函数用于实现所述任务;所述任务流队列包括:所述任务流名称与所述任务流对应的所有任务函数的映射关系;
按照预设执行方式执行所述任务函数。
在一个实施例中,所述添加项目中配置的插件,包括:
加载插件配置文件,所述配置文件用于配置项目注册的所述插件以及所述插件对应配置项;
序列化所述配置文件,得到注册的所述插件以及所述插件对应的参数;
根据所述插件对应的参数和预设的添加方法,将所述插件插入到插件数组中。
在一个实施例中,所述方法还包括:
接收任务注册指令,所述任务注册指令中包括:待注册的任务流名称和待注册的任务函数;
检测所述待注册的任务流名称对应的任务流队列是否已经存在;
若不存在,创建新任务流队列;
建立所述待注册的任务流名称与所述新任务流队列的映射关系;
将所述待注册的任务函数插入到所述新任务流队列中;
若存在,将所述待注册的任务函数插入到与所述待注册的任务流名称对应的任务流队列中。
在一个实施例中,所述方法还包括:
接收任务删除指令,所述任务删除指令中包括:待删除的任务流名称和待删除的任务函数;
在已注册的任务流队列中删除所述待删除的任务流名称和所述待删除的任务函数。
在一个实施例中,所述方法还包括:
接收插件删除指令,所述插件删除指令中包括:待删除的插件名称;
在插件数组中删除所述待删除的插件名称对应的插件。
在一个实施例中,所述预设执行方式包括:
并行执行,或,串行执行,或,瀑布流执行。
在一个实施例中,所述创建新任务流队列,包括:
在已有任务流队列的头部创建;
或者,
在已有任务流队列的尾部创建;
或者,
在预设任务流队列前创建;
或者,
在预设任务流队列后创建。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种多种工程化工具的融合方法,其特征在于,包括:
添加项目中配置的插件;所述插件是将工程化工具封装后形成的;
初始化所述插件;
获取任务流名称;所述任务流包括多个任务,其中,将所述工程化工具实现的每项功能称为所述任务;
根据所述任务流名称从任务流队列中获取所述任务流对应的所有任务函数;所述任务函数用于实现所述任务;所述任务流队列包括:所述任务流名称与所述任务流对应的所有任务函数的映射关系;
按照预设执行方式执行所述任务函数。
2.根据权利要求1所述的方法,其特征在于,所述添加项目中配置的插件,包括:
加载插件配置文件,所述配置文件用于配置项目注册的所述插件以及所述插件对应配置项;
序列化所述配置文件,得到注册的所述插件以及所述插件对应的参数;
根据所述插件对应的参数和预设的添加方法,将所述插件插入到插件数组中。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收任务注册指令,所述任务注册指令中包括:待注册的任务流名称和待注册的任务函数;
检测所述待注册的任务流名称对应的任务流队列是否已经存在;
若不存在,创建新任务流队列;
建立所述待注册的任务流名称与所述新任务流队列的映射关系;
将所述待注册的任务函数插入到所述新任务流队列中;
若存在,将所述待注册的任务函数插入到与所述待注册的任务流名称对应的任务流队列中。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
接收任务删除指令,所述任务删除指令中包括:待删除的任务流名称和待删除的任务函数;
在已注册的任务流队列中删除所述待删除的任务流名称和所述待删除的任务函数。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
接收插件删除指令,所述插件删除指令中包括:待删除的插件名称;
在插件数组中删除所述待删除的插件名称对应的插件。
6.根据权利要求1所述的方法,其特征在于,所述预设执行方式包括:
并行执行,或,串行执行,或,瀑布流执行。
7.根据权利要求3所述的方法,其特征在于,所述创建新任务流队列,包括:
在已有任务流队列的头部创建;
或者,
在已有任务流队列的尾部创建;
或者,
在预设任务流队列前创建;
或者,
在预设任务流队列后创建。
8.一种多种工程化工具的融合装置,其特征在于,包括:
添加模块,用于添加项目中配置的插件;所述插件是将工程化工具封装后形成的;
初始化模块,用于初始化所述插件;
名称获取模块,用于获取任务流名称;所述任务流包括多个任务,其中,将所述工程化工具实现的每项功能称为所述任务;
函数获取模块,用于根据所述任务流名称从任务流队列中获取所述任务流对应的所有任务函数;所述任务函数用于实现所述任务;所述任务流队列包括:所述任务流名称与所述任务流对应的所有任务函数的映射关系;
执行模块,用于按照预设执行方式执行所述任务函数。
9.一种多种工程化工具的融合装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
添加项目中配置的插件;所述插件是将工程化工具封装后形成的;
初始化所述插件;
获取任务流名称;所述任务流包括多个任务,其中,将所述工程化工具实现的每项功能称为所述任务;
根据所述任务流名称从任务流队列中获取所述任务流对应的所有任务函数;所述任务函数用于实现所述任务;所述任务流队列包括:所述任务流名称与所述任务流对应的所有任务函数的映射关系;
按照预设执行方式执行所述任务函数。
10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210233452.9A CN114661373A (zh) | 2022-03-10 | 2022-03-10 | 多种工程化工具的融合方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210233452.9A CN114661373A (zh) | 2022-03-10 | 2022-03-10 | 多种工程化工具的融合方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114661373A true CN114661373A (zh) | 2022-06-24 |
Family
ID=82028644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210233452.9A Pending CN114661373A (zh) | 2022-03-10 | 2022-03-10 | 多种工程化工具的融合方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114661373A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107992537A (zh) * | 2017-11-24 | 2018-05-04 | 金蝶软件(中国)有限公司 | 业务属性传递方法、装置、计算机设备及存储介质 |
CN110069247A (zh) * | 2019-04-28 | 2019-07-30 | 山东浪潮商用系统有限公司 | 一种应用程序的开发方法及装置、使用方法及装置 |
CN111736826A (zh) * | 2020-06-16 | 2020-10-02 | 中国科学院空天信息创新研究院 | 多源遥感数据工程工具集系统及集成方法 |
CN113050985A (zh) * | 2021-04-19 | 2021-06-29 | 中国工商银行股份有限公司 | 前端工程依赖自动注册方法及装置 |
-
2022
- 2022-03-10 CN CN202210233452.9A patent/CN114661373A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107992537A (zh) * | 2017-11-24 | 2018-05-04 | 金蝶软件(中国)有限公司 | 业务属性传递方法、装置、计算机设备及存储介质 |
CN110069247A (zh) * | 2019-04-28 | 2019-07-30 | 山东浪潮商用系统有限公司 | 一种应用程序的开发方法及装置、使用方法及装置 |
CN111736826A (zh) * | 2020-06-16 | 2020-10-02 | 中国科学院空天信息创新研究院 | 多源遥感数据工程工具集系统及集成方法 |
CN113050985A (zh) * | 2021-04-19 | 2021-06-29 | 中国工商银行股份有限公司 | 前端工程依赖自动注册方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10795660B1 (en) | Live code updates | |
EP0938701B1 (en) | Generic software state machine and method of constructing dynamic objects for an application program | |
US6463565B1 (en) | Method for designing object-oriented table driven state machines | |
AU732374B2 (en) | A management interworking unit and a method for producing such a unit | |
WO2003065171A2 (en) | A system and method for managing dataflows | |
CN102541996B (zh) | 一种基于jdbc的数据访问层构建方法及装置 | |
WO2011137672A1 (zh) | 基于数据库的任务执行方法及装置 | |
US20060225042A1 (en) | Virtual threads in business process programs | |
Bellissard et al. | Component-based programming and application management with Olan | |
US7739660B2 (en) | Code management in a distributed software development environment | |
CN114489585A (zh) | 一种治理功能插件化的微服务开发框架及实现方法 | |
CN101986282A (zh) | 拓扑适配方法及装置 | |
CN114661373A (zh) | 多种工程化工具的融合方法及装置 | |
US20010042138A1 (en) | Method and system for parallel and procedural computing | |
CN113064737B (zh) | 使软件通信体系结构的组件在多核处理器并行运行的方法 | |
CN101246421A (zh) | 一种基于工作流引擎实现的通用框架 | |
US6922834B1 (en) | Data processing apparatus, data processing method, and program providing medium | |
CN110908665A (zh) | jenkins构建插件开发优化方法及系统 | |
Lienhardt et al. | An object group-based component model | |
CN115237386B (zh) | 用于大型复杂Windows原生桌面开发的方法及系统 | |
Goldsack et al. | Ada for distributed systems-a library of virtual nodes | |
CN113992941B (zh) | 基于无服务器函数计算的云边协同视频分析系统与方法 | |
CN114327398A (zh) | 一种用于多租户业务流转的方法及系统 | |
CN105022653A (zh) | 一种关于模板库编程约定的检查方法 | |
CN113157352A (zh) | 一种可编排的前端控制器实现方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |