一种多个CLI程序自动衔接为任务流程的方法与流程

文档序号:27923988发布日期:2021-12-11 11:34阅读:106来源:国知局
一种多个CLI程序自动衔接为任务流程的方法与流程
一种多个cli程序自动衔接为任务流程的方法
技术领域
1.本发明属于任务自动化技术领域,具体涉及一种多个cli程序自动衔接为任务流程的方法。


背景技术:

2.即使相同的技术栈,每个项目最终在执行标准上都会存在一些差异,然而其大体的业务流程又都基本一致。现有技术中,由于各项目执行标准不同,导致每个项目都需要完全重新定制业务自动化流程,具有业务流程复用性低,以及项目的业务自动化流程实现成本高的问题。


技术实现要素:

3.针对现有技术存在的缺陷,本发明提供一种多个cli程序自动衔接为任务流程的方法,可有效解决上述问题。
4.本发明采用的技术方案如下:
5.本发明提供一种多个cli程序自动衔接为任务流程的方法,包括以下步骤:
6.步骤1,构建通用任务数据库;所述通用任务数据库用于存储多个通用任务;每个通用任务具有通用任务id、任务参数接收接口和任务参数输出接口;
7.步骤2,构建衔接脚本池;所述衔接脚本池用于存储多个衔接脚本;每个所述衔接脚本对应一个通用任务id以及执行顺序,所述执行顺序是指:在对应的通用任务执行前,执行所述衔接脚本,即为前置衔接脚本;或者,在对应的通用任务执行后,执行所述衔接脚本,即为后置衔接脚本;每个所述衔接脚本具有脚本参数接收接口和脚本参数输出接口;
8.步骤3,根据项目实际业务流程需求,定制业务流程节点图;所述业务流程节点图包括多个节点;每个所述节点绑定对应的一个通用任务;其中,所述通用任务是指从所述通用任务数据库中查询到的通用任务;
9.步骤4,令i=1;
10.步骤5,主进程在所述业务流程节点图中定位到第i个节点node
i
,从而获取第i个节点node
i
绑定的通用任务task
i

11.步骤6,主进程查找所述衔接脚本池,判断是否存在与所述通用任务task
i
对应的前置衔接脚本,如果有,将与所述通用任务task
i
对应的前置衔接脚本表示为前置衔接脚本bs
i
,执行步骤7

步骤9;否则,执行步骤10;
12.步骤7,主进程确定是否有向前置衔接脚本bs
i
传递的第一传递参数,如果有,则获取所述第一传递参数,并将所述第一传递参数传递给第一子进程,然后通知第一子进程执行前置衔接脚本bs
i
;如果没有,则直接通知第一子进程执行前置衔接脚本bs
i

13.步骤8,第一子进程在接收到执行前置衔接脚本bs
i
的通知消息后,首先判断是否接收到来自于主进程的第一传递参数,如果没有,则直接执行所述前置衔接脚本bs
i
;如果有,则将所述第一传递参数传递给所述前置衔接脚本bs
i
,再执行所述前置衔接脚本bs
i

14.第一子进程执行所述前置衔接脚本bs
i
完毕后,向所述主进程发送执行完毕的通知消息;
15.步骤9,主进程在接收到第一子进程的执行完毕通知消息后,捕获第一子进程的标准输出流,判断第一子进程是否有需要向下传递的第二传递参数;如果有,则主进程捕获该第二传递参数,并执行步骤10;否则,直接执行步骤10;
16.步骤10,主进程确定是否有向第二子进程传递的第二传递参数,如果有,则将所述第二传递参数传递给第二子进程,然后通知第二子进程执行通用任务task
i
;如果没有,则直接通知第二子进程执行通用任务task
i

17.步骤11,第二子进程在接收到执行通用任务task
i
的通知消息后,首先判断是否接收到来自于主进程的第二传递参数,如果没有,则直接执行所述通用任务task
i
;如果有,则将所述第二传递参数传递给所述通用任务task
i
,再执行所述通用任务task
i

18.第二子进程执行所述通用任务task
i
完毕后,向所述主进程发送执行完毕的通知消息;
19.步骤12,主进程在接收到第二子进程的执行完毕通知消息后,捕获第二子进程的标准输出流,判断第二子进程是否有需要向下传递的第三传递参数;如果有,则主进程捕获该第三传递参数,并执行步骤13;否则,直接执行步骤13;
20.步骤13,主进程查找所述衔接脚本池,判断是否存在与所述通用任务task
i
对应的后置衔接脚本,如果有,将与所述通用任务task
i
对应的后置衔接脚本表示为后置衔接脚本as
i
,执行步骤14

步骤16;否则,执行步骤17;
21.步骤14,主进程确定是否有向后置衔接脚本as
i
传递的第三传递参数,如果有,则获取所述第三传递参数,并将所述第三传递参数传递给第三子进程,然后通知第三子进程执行后置衔接脚本as
i
;如果没有,则直接通知第三子进程执行后置衔接脚本as
i

22.步骤15,第三子进程在接收到执行后置衔接脚本as
i
的通知消息后,首先判断是否接收到来自于主进程的第三传递参数,如果没有,则直接执行所述后置衔接脚本as
i
;如果有,则将所述第三传递参数传递给所述后置衔接脚本as
i
,再执行所述后置衔接脚本as
i

23.第三子进程执行所述后置衔接脚本as
i
完毕后,向所述主进程发送执行完毕的通知消息;
24.步骤16,主进程在接收到第三子进程的执行完毕通知消息后,捕获第三子进程的标准输出流,判断第三子进程是否有需要向下传递的第四传递参数;如果有,则主进程捕获该第四传递参数,并将第四传递参数赋值给第一传递参数,执行步骤17;否则,直接执行步骤17;
25.步骤17,判断第i个节点node
i
是否为所述业务流程节点图中的最后一个节点,如果是,则完成多个cli程序自动衔接为任务流程的过程,结束流程;如果不是,则令i=i+1,返回步骤5。
26.优选的,所述通用任务为允许在命令行界面cli中执行的计算机应用程序或可执行脚本。
27.本发明提供的一种多个cli程序自动衔接为任务流程的方法具有以下优点:
28.本发明提供一种多个cli程序自动衔接为任务流程的方法,可完全复用业务流中已形成的通用任务,通过衔接脚本将各个通用任务串联为完整的业务流程,因此,能以较低
的成本实现业务流程自动化,从而极大提升生产效率。
附图说明
29.图1为本发明提供的一种多个cli程序自动衔接为任务流程的方法的流程示意图。
具体实施方式
30.为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
31.本发明提供一种多个cli程序自动衔接为任务流程的方法,可完全复用业务流中已形成的通用任务,通过衔接脚本将各个通用任务串联为完整的业务流程,因此,能以较低的成本实现业务流程自动化,从而极大提升生产效率。
32.本发明提供一种多个cli程序自动衔接为任务流程的方法,通过衔接脚本将不同业务线上每个环节的差异调整为一致,以满足自动化执行标准需要。衔接脚本起到钩子作用,可一个或多个,在每个通用任务运行前/后执行。
33.任务执行流程中,每个通用任务以子进程方式执行。主进程在运行每个通用任务前后,从衔接脚本池中寻找是否有需要执行的衔接脚本。有则执行,无则忽略跳至任务流程中下一个通用任务,直至整个任务流程执行结束。
34.参考图1,本发明提供一种多个cli程序自动衔接为任务流程的方法,包括以下步骤:
35.步骤1,构建通用任务数据库;所述通用任务数据库用于存储多个通用任务;每个通用任务具有通用任务id、任务参数接收接口和任务参数输出接口;
36.其中,通用任务指业务流程中都要经历的共同作业流程。以手机应用为例,其开发通用的流程可能包括(不限):设置应用信息、编译、打包、程序签名、发布等。那么,每个步骤都可以作为一个单独的通用任务。
37.通用任务无需考虑每个项目间的特殊情况,例如:应用信息是文本格式或是其它文档格式、不同项目的之间的打包编译参数如何设置等。
38.本发明中,通用任务不限于具体的计算机编程语言限制,允许在命令行界面(cli)中执行的计算机应用程序或可执行脚本均可。
39.通用任务可向下一个任务(可以是通用任务或衔接脚本)传递参数。其传递参数的方式为使用stdout(标准输出流)的形式。
40.具体的,主进程通过捕获子进程的标准输出流内容以截取需要传递的具体内容(即传递参数)。截取的方式可以是位数截取(例如:截取内容的后100位),也可以是通过格式规则来截取(例如:“@next path=dir\\childdir、@next name=game”)。在当前子进程运行结束后,主进程在调度执行下一个任务时,以命令参数的形式传递给下一个子进程,例如:“run(nexttask
‑‑
path=dir\\childdir
‑‑
name=game)”。
41.通用任务参数的接收:在通用任务执行之前,通过获取前一子进程的值以获取上一个任务传递进来的参数,从而进行通用任务的具体逻辑处理。
42.步骤2,构建衔接脚本池;所述衔接脚本池用于存储多个衔接脚本;每个所述衔接
脚本对应一个通用任务id以及执行顺序,所述执行顺序是指:在对应的通用任务执行前,执行所述衔接脚本,即为前置衔接脚本;或者,在对应的通用任务执行后,执行所述衔接脚本,即为后置衔接脚本;每个所述衔接脚本具有脚本参数接收接口和脚本参数输出接口;
43.衔接脚本用于处理各项目的自动化流程差异,例如上一步列举的设置应用信息、设置项目编译参数等。甚至打包完成需要对结果进行备份等额外操作也都可以在此通过衔接脚本处理。衔接脚本技术实现细节如下:
44.衔接脚本存放于统一的衔接脚本池中,这样在每个任务执行完成后,需要从衔接脚本池中寻找是否有下一个衔接脚本需要执行。为实现与通用任务节点自动关联,衔接脚本需要遵循一定命名规范。其命名规则为“任务名__before/after
‑‑
执行顺序.脚本扩展名”。以编译任务(build)为例,其前置衔接脚本可以命名为:build__before
‑‑
0.py、build__before
‑‑
1.sh等,后置衔接脚本可命名为:build__after
‑‑
0.py、build__after
‑‑
1.bat等。
45.衔接脚本的参数传递与接收规则,与通用任务处理规则相同。
46.步骤3,根据项目实际业务流程需求,定制业务流程节点图;所述业务流程节点图包括多个节点;每个所述节点绑定对应的一个通用任务;其中,所述通用任务是指从所述通用任务数据库中查询到的通用任务;
47.步骤4,令i=1;
48.步骤5,主进程在所述业务流程节点图中定位到第i个节点node
i
,从而获取第i个节点node
i
绑定的通用任务task
i

49.步骤6,主进程查找所述衔接脚本池,判断是否存在与所述通用任务task
i
对应的前置衔接脚本,如果有,将与所述通用任务task
i
对应的前置衔接脚本表示为前置衔接脚本bs
i
,执行步骤7

步骤9;否则,执行步骤10;
50.步骤7,主进程确定是否有向前置衔接脚本bs
i
传递的第一传递参数,如果有,则获取所述第一传递参数,并将所述第一传递参数传递给第一子进程,然后通知第一子进程执行前置衔接脚本bs
i
;如果没有,则直接通知第一子进程执行前置衔接脚本bs
i

51.步骤8,第一子进程在接收到执行前置衔接脚本bs
i
的通知消息后,首先判断是否接收到来自于主进程的第一传递参数,如果没有,则直接执行所述前置衔接脚本bs
i
;如果有,则将所述第一传递参数传递给所述前置衔接脚本bs
i
,再执行所述前置衔接脚本bs
i

52.第一子进程执行所述前置衔接脚本bs
i
完毕后,向所述主进程发送执行完毕的通知消息;
53.步骤9,主进程在接收到第一子进程的执行完毕通知消息后,捕获第一子进程的标准输出流,判断第一子进程是否有需要向下传递的第二传递参数;如果有,则主进程捕获该第二传递参数,并执行步骤10;否则,直接执行步骤10;
54.步骤10,主进程确定是否有向第二子进程传递的第二传递参数,如果有,则将所述第二传递参数传递给第二子进程,然后通知第二子进程执行通用任务task
i
;如果没有,则直接通知第二子进程执行通用任务task
i

55.步骤11,第二子进程在接收到执行通用任务task
i
的通知消息后,首先判断是否接收到来自于主进程的第二传递参数,如果没有,则直接执行所述通用任务task
i
;如果有,则将所述第二传递参数传递给所述通用任务task
i
,再执行所述通用任务task
i

56.第二子进程执行所述通用任务task
i
完毕后,向所述主进程发送执行完毕的通知消息;
57.步骤12,主进程在接收到第二子进程的执行完毕通知消息后,捕获第二子进程的标准输出流,判断第二子进程是否有需要向下传递的第三传递参数;如果有,则主进程捕获该第三传递参数,并执行步骤13;否则,直接执行步骤13;
58.步骤13,主进程查找所述衔接脚本池,判断是否存在与所述通用任务task
i
对应的后置衔接脚本,如果有,将与所述通用任务task
i
对应的后置衔接脚本表示为后置衔接脚本as
i
,执行步骤14

步骤16;否则,执行步骤17;
59.步骤14,主进程确定是否有向后置衔接脚本as
i
传递的第三传递参数,如果有,则获取所述第三传递参数,并将所述第三传递参数传递给第三子进程,然后通知第三子进程执行后置衔接脚本as
i
;如果没有,则直接通知第三子进程执行后置衔接脚本as
i

60.步骤15,第三子进程在接收到执行后置衔接脚本as
i
的通知消息后,首先判断是否接收到来自于主进程的第三传递参数,如果没有,则直接执行所述后置衔接脚本as
i
;如果有,则将所述第三传递参数传递给所述后置衔接脚本as
i
,再执行所述后置衔接脚本as
i

61.第三子进程执行所述后置衔接脚本as
i
完毕后,向所述主进程发送执行完毕的通知消息;
62.步骤16,主进程在接收到第三子进程的执行完毕通知消息后,捕获第三子进程的标准输出流,判断第三子进程是否有需要向下传递的第四传递参数;如果有,则主进程捕获该第四传递参数,并将第四传递参数赋值给第一传递参数,执行步骤17;否则,直接执行步骤17;
63.步骤17,判断第i个节点node
i
是否为所述业务流程节点图中的最后一个节点,如果是,则完成多个cli程序自动衔接为任务流程的过程,结束流程;如果不是,则令i=i+1,返回步骤5。
64.本发明提供的一种多个cli程序自动衔接为任务流程的方法具有以下优点:
65.本发明提供一种多个cli程序自动衔接为任务流程的方法,可完全复用业务流中已形成的通用任务,通过衔接脚本将各个通用任务串联为完整的业务流程,因此,能以较低的成本实现业务流程自动化,从而极大提升生产效率。
66.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1