工作流生成方法、装置、计算机系统及计算机存储介质与流程

未命名 10-19 阅读:182 评论:0


1.本发明涉及工作流技术领域,尤其涉及一种工作流生成方法、装置、计算机系统及计算机存储介质。


背景技术:

2.云计算的虚拟化、高可靠性、高通用性、高可伸缩性等特性为基因测序和数据分析提供了超大规模且成本低廉的计算能力,通过横向扩展计算实例,并行计算任务,可以大大缩短计算时间。在基因测序分析领域,生物信息分析领域从业人员(生信人员)在进行基因分析通常使用权威的第三方工具,用户只要配置参数,运行第三方工具获取计算结果,一般从数据输入到获取最终的计算结果,整个分析流程包括很多步骤。利用云平台提供的计算实例和对象存储的基础服务,生信人员进行基因测序计算和分析时,只需要关注分析步骤,把分析工作转换成计算任务,整套分析流程就是计算任务的流程,即工作流(workflow)。
3.工作流是对工作流程及其各个操作步骤之间业务规则的抽象、概括描述。基于云平台实现整套分析过程,管理工作流成为主要工作。现有的工作流管理,主要采用两种比较成熟的方法:方法一是以网站形式提供服务,用户上传数据,通过网页界面选择已经存在的算法工具,输入算法参数,生成计算任务,用鼠标点选方式把任务串联成计算工作流。方法二是使用工作流描述语言(workflow description language,wdl)描述工作流,需要描述清楚一批计算任务和计算任务之间的串并行关系以及具体的计算实例等。采用方法一不能灵活插入自己编写的计算步骤,局限于计算步骤少,不适合批量的计算,由于计算工作流中每个计算任务的参数有很多,采用方法二描述工作流变得繁琐复杂,且wdl作为工作流领域定制的语言,增大生信人员的学习成本。


技术实现要素:

4.本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种工作流生成方法、装置、计算机系统及计算机存储介质,可以根据实际业务需求编写计算任务,充分发挥编程语言的灵活特性,使得工作流描述变得更加方便高效。
5.第一方面,本发明实施例提供一种工作流生成方法,包括:
6.获取用户定义的工作流,其中,所述工作流包括多个计算任务;
7.根据每个所述计算任务确定对应的任务对象;
8.为每个所述任务对象传递输入参数;
9.根据所述输入参数的引用关系确定具有依赖关系的任务对象;
10.根据所有所述任务对象及对应的输入参数生成可执行的工作流程序脚本;
11.根据所述工作流程序脚本的执行顺序计算所述计算任务。
12.根据本发明实施例提供的工作流生成方法,至少具有如下有益效果:通过获取用户定义的工作流,工作流中包括多个由编程语言描述的计算任务,根据每个计算任务确定对应的任务对象,并为每个任务对象传递输入参数,基于输入参数的引用关系即可确定具
有依赖关系的任务对象,根据所有的任务对象以及对应的输入参数生成可执行的工作流程序脚本,在编程语言环境下执行工作流程序脚本即可计算工作流中的计算任务,对于熟悉编程语言的研究人员可以根据实际业务需求编写计算任务,添加批量计算的处理步骤,充分发挥编程语言的灵活特性,无需另外学习完全不同的工作流描述语言,使得工作流描述变得更加方便高效。
13.在上述工作流生成方法中,在所述根据每个所述计算任务确定对应的任务对象之前,还包括:
14.获取用户定义的工作流类,其中,所述工作流类为所有所述计算任务的计算起点;
15.对所述工作流开始类进行初始化,生成工作流对象。
16.在上述工作流生成方法中,所述根据每个所述计算任务确定对应的任务对象,包括:
17.根据每个所述计算任务确定对应的执行算法;
18.根据所述工作流对象引用所述执行算法的名称,返回得到对应的任务对象。
19.在上述工作流生成方法中,还包括:
20.获取待处理的输入数据文件;
21.将所述输入数据文件与对应的任务对象的属性进行绑定,确定标记有输入数据文件的任务对象,其中,所述任务对象的属性为输入参数。
22.在上述工作流生成方法中,所述根据所述输入参数的引用关系确定具有依赖关系的任务对象,包括:
23.将标记有所述输入数据文件的任务对象定义为第一对象;
24.根据所述第一对象确定对应的引用变量,其中,所述引用变量为指向所述第一对象的变量;
25.将所述引用变量调用的输入参数传入第二对象,其中,所述第一对象和所述第二对象为具有串行关系的任务对象。
26.在上述工作流生成方法中,所述根据所述工作流程序脚本的执行顺序计算所述计算任务,包括:
27.对所述工作流程序脚本进行解释,生成任务关系表,其中,所述任务关系表包括多个计算任务以及计算任务之间的关系;
28.根据所述任务关系表生成任务调度,以使调度器将所述计算任务投递到计算节点计算。
29.在上述工作流生成方法中,所述对所述工作流程序脚本进行解释,包括:
30.将所述工作流程序脚本中的计算任务映射成系统执行命令。
31.第二方面,本发明实施例提供一种运行控制装置,包括至少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行如上第一方面实施例所述的工作流生成方法。
32.根据本发明实施例提供的运行控制装置,至少具有如下有益效果:通过获取用户定义的工作流,工作流中包括多个由编程语言描述的计算任务,根据每个计算任务确定对应的任务对象,并为每个任务对象传递输入参数,基于输入参数的引用关系即可确定具有
依赖关系的任务对象,根据所有的任务对象以及对应的输入参数生成可执行的工作流程序脚本,在编程语言环境下执行工作流程序脚本即可计算工作流中的计算任务,对于熟悉编程语言的研究人员可以根据实际业务需求编写计算任务,添加批量计算的处理步骤,充分发挥编程语言的灵活特性,无需另外学习完全不同的工作流描述语言,使得工作流描述变得更加方便高效。
33.第三方面,本发明实施例提供一种计算机系统,包括有如上第二方面实施例所述的运行控制装置。
34.根据本发明实施例提供的计算机系统,至少具有如下有益效果:通过获取用户定义的工作流,工作流中包括多个由编程语言描述的计算任务,根据每个计算任务确定对应的任务对象,并为每个任务对象传递输入参数,基于输入参数的引用关系即可确定具有依赖关系的任务对象,根据所有的任务对象以及对应的输入参数生成可执行的工作流程序脚本,在编程语言环境下执行工作流程序脚本即可计算工作流中的计算任务,对于熟悉编程语言的研究人员可以根据实际业务需求编写计算任务,添加批量计算的处理步骤,充分发挥编程语言的灵活特性,无需另外学习完全不同的工作流描述语言,使得工作流描述变得更加方便高效。
35.第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上第一方面实施例所述的工作流生成方法。
36.根据本发明实施例提供的计算机可读存储介质,至少具有如下有益效果:通过获取用户定义的工作流,工作流中包括多个由编程语言描述的计算任务,根据每个计算任务确定对应的任务对象,并为每个任务对象传递输入参数,基于输入参数的引用关系即可确定具有依赖关系的任务对象,根据所有的任务对象以及对应的输入参数生成可执行的工作流程序脚本,在编程语言环境下执行工作流程序脚本即可计算工作流中的计算任务,对于熟悉编程语言的研究人员可以根据实际业务需求编写计算任务,添加批量计算的处理步骤,充分发挥编程语言的灵活特性,无需另外学习完全不同的工作流描述语言,使得工作流描述变得更加方便高效。
37.本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
38.下面结合附图和实施例对本发明进一步地说明;
39.图1是本发明实施例一提供的工作流生成方法的流程图;
40.图2是本发明实施例二提供的工作流生成方法的流程图;
41.图3是本发明实施例三提供的工作流生成方法的流程图;
42.图4是本发明实施例四提供的工作流生成方法的流程图;
43.图5是本发明实施例五提供的工作流生成方法的流程图;
44.图6是本发明实施例六提供的工作流生成方法的流程图;
45.图7是本发明实施例七提供的计算工作流组件图;
46.图8是本发明实施例八提供的运行控制装置的结构示意图。
具体实施方式
47.本部分将详细描述本发明的具体实施例,本发明之较佳实施例在附图中示出,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本发明的每个技术特征和整体技术方案,但其不能理解为对本发明保护范围的限制。
48.应了解,在本发明实施例的描述中,如果有描述到“第一”、“第二”等只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。
49.此外,除非另有明确的规定和限定,术语“连接/相连”应做广义理解,例如,可以是固定连接或活动连接,也可以是可拆卸连接或不可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接或可以相互通讯;可以是直接相连,也可以通过中间媒介间接相连。
50.需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于流程图中的顺序执行所示出或描述的步骤。下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
51.现有的工作流管理,主要采用两种比较成熟的方法:
52.方法一是基于云平台服务的第三方公司为计算任务开发的在线计算服务,以网站形式提供服务,用户上传数据,通过网页界面选择已经存在的算法工具,输入算法参数,生成计算任务,用鼠标点选方式把计算任务串联成计算工作流,启动计算,将计算工作转交给后端完成计算。
53.基因计算通常是一些重型计算,对计算的cpu、内存、硬盘等硬件资源要求比较高,实际应用可能使用高性能的计算集群来做并行计算,生信人员在进行这些重型计算时,除了要了解计算流程,还要了解计算任务在集群中的并行处理。采用方法一只限于熟悉计算流程,不懂脚本语言的普通人员使用,不能灵活插入自己编写的计算步骤,局限于计算步骤少,不适合批量的计算,如果任务是成千上万的重复计算,计算任务只是文件参数名称变化了,通过网页去点击选择来生成计算任务,这个重复的工作量,显然是非常繁琐的。
54.方法二是使用工作流描述语言(workflow description language,wdl)描述工作流,wdl作为全球基因组与健康联盟(global alliance for genomics and health)支持的工作流描述语言,已经被越来越多的客户所采用。采用方法二描述工作流程,需要描述清楚一批计算任务和计算任务之间的串并行关系以及具体的计算实例等,每个计算任务的参数有很多,计算任务的参数名称、参数类型和参数值的内容描述冗长,使得工作流的描述变得繁琐复杂,另外,wdl作为一种为工作流领域定制的语言,和shell、perl、python等通用的脚本语言相比,使用语法和习惯完全不同,增大生信人员的学习成本,且与编程语言相比使用也不够灵活。
55.基于上述问题,本发明实施例提供一种工作流生成方法、装置、计算机系统及计算机存储介质,可以根据实际业务需求编写计算任务,充分发挥编程语言的灵活特性,使得工作流描述变得更加方便高效。
56.下面结合附图,对本发明实施例作进一步阐述。
57.如图1所示,本发明的第一方面的实施例提供一种工作流生成方法,包括但不限于步骤s110至步骤s150:
58.步骤s110:获取用户定义的工作流,其中,工作流包括多个计算任务;
59.需要说明的是,用户通过编程语言定义工作流,根据实际的业务目标编排计算任务,将多个计算任务串联成工作流。其中,编程语言可以单独或组合地包括下列各项:java、c、c++、c#、perl、shell、python等。
60.步骤s120:根据每个计算任务确定对应的任务对象;
61.在工作流的描述中,通过对象方法描述计算任务,以面向对象的编程概念,每个计算任务均有对应的任务对象,用于标记具体的业务。
62.步骤s130:为每个任务对象传递输入参数;
63.需要说明的是,通过为每个任务对象传递输入参数,以便于在后续调用函数时实现赋值。可以理解的是,由于通过对象方法描述计算任务,输入给对象方法的参数就是指定计算任务执行的参数。
64.步骤s140:根据输入参数的引用关系确定具有依赖关系的任务对象;
65.可以理解的是,由于通过编程语言描述计算任务,基于输入参数的引用关系即可确定具有依赖关系的任务对象,无需另外描述计算任务顺序和计算任务之间的关系,若两个任务对象之间均与其中一个输入参数有关联,存在输入输出关系,则表示这两个任务对象具有依赖关系。
66.步骤s150:根据所有任务对象及对应的输入参数生成可执行的工作流程序脚本;
67.需要说明的是,根据所有的任务对象以及每个任务对象的输入参数生成工作流程序脚本,由于工作流的描述本身是程序脚本,不需要另外特定的解释工具。
68.步骤s160:根据工作流程序脚本的执行顺序计算计算任务。
69.可以理解的是,直接通过系统解释器执行工作流程序脚本就可以计算到不同的计算任务,即生成工作流,工作流程序脚本的执行顺序就是计算任务的输入顺序。
70.需要说明的是,计算任务,是执行一连串的命令,有的是系统指令,有的是第三方权威工具,有的是生信人员自已编写的脚本,生信人员通常熟悉shell、perl、python等编程语言。通过采用编程语言描述计算任务,更加灵活方便,本发明实施例允许用户使用系统命令、第三方工具和自己编写的算法描述计算任务,方便用户在现有的工作流计算中添加自己的计算步骤,这种方式能够让用户灵活自主地掌据计算流程。
71.上述第一方面实施例提供的工作流生成方法,通过获取用户定义的工作流,工作流中包括多个由编程语言描述的计算任务,根据每个计算任务确定对应的任务对象,并为每个任务对象传递输入参数,基于输入参数的引用关系即可确定具有依赖关系的任务对象,根据所有的任务对象以及对应的输入参数生成可执行的工作流程序脚本,在编程语言环境下执行工作流程序脚本即可计算工作流中的计算任务,对于熟悉编程语言的研究人员可以根据实际业务需求编写计算任务,添加批量计算的处理步骤,充分发挥编程语言的灵活特性,无需另外学习完全不同的工作流描述语言,使得工作流描述变得更加方便高效。
72.如图2所示,在上述工作流生成方法中,在步骤s120中根据每个计算任务确定对应的任务对象之前,还包括但不限于步骤s210和步骤s220:
73.步骤s210:获取用户定义的工作流类,其中,工作流类为所有计算任务的计算起点;
74.步骤s220:对工作流开始类进行初始化,生成工作流对象。
75.为了实现工作流的描述,用户需要预先定义工作流类,通过获取用户定义的工作流类,所有的计算任务都从工作流类开始,并对工作流开始类进行初始化,生成工作流对象,即为工作流对象在内存中申请存储空间。
76.具体地,通过定义workflow为工作流类,引用工作流类,并初始化算法仓库对象(hub),将算法仓库对象作为描述计算任务的工作流对象,算法仓库不包含实际的算法,只是为了描述工作流中的计算任务,计算任务对应最终计算时使用的算法和参数。例如,hub=workflow()。
77.如图3所示,在上述工作流生成方法中,步骤s120中根据每个计算任务确定对应的执行算法及任务对象,包括但不限于步骤s310和步骤s320:
78.步骤s310:根据每个计算任务确定对应的执行算法;
79.步骤s320:根据工作流对象引用执行算法的名称,返回得到对应的任务对象。
80.在工作流的描述中,以面向对象的编程概念,指定工作流对象一个调用方法,相当于通过对象方法描述计算任务,因此根据每个计算任务可以确定对应的执行算法,即所使用的对象方法,通过工作流对象引用执行算法的名称,返回得到对应的任务对象,例如,对于ac=hub.algo.v1.cutadapt(o=5,j=1,a='agatc',a='agatc',o=p+'.cutadapt.gz'),算法仓库对象(hub)是一个工作流对象,引用工作流对象的对象方法相当于指定执行算法的名称(cutadapt),返回得到具体的任务对象为hub.algo.v1.cutadapt。
81.如图4所示,在上述工作流生成方法中,还包括但不限于步骤s410和步骤s420:
82.步骤s410:获取待处理的输入数据文件;
83.步骤s420:将输入数据文件与对应的任务对象的属性进行绑定,确定标记有输入数据文件的任务对象,其中,任务对象的属性为输入参数。
84.需要说明的是,一个具体的计算任务包括执行算法、输入参数和输入数据文件,通过获取待处理的输入数据文件,将输入数据文件与具体的任务对象的属性进行绑定,能够标记有输入数据文件的任务对象,计算任务即选择输入数据文件执行对应的执行算法。例如以下对于计算任务的描述:
85.path=’/file’;
86.for a in arr:
87.p=path+’/’+a;
88.ac=hub.algo.v1.cutadapt(o=5,j=1,a='agatc',a='agatc',o=p+'.cutadapt.gz');
89.其中,path=’/file’用于标记输入数据文件的地址,

o’为hub.algo.v1.cutadapt的输入参数(属性),具体的计算任务为选择相应的输入数据文件执行cutadapt计算。
90.如图5所示,在上述工作流生成方法中,步骤s140中根据输入参数的引用关系确定具有依赖关系的任务对象,包括但不限于步骤s510至步骤s530:
91.步骤s510:将标记有输入数据文件的任务对象定义为第一对象;
92.步骤s520:根据第一对象确定对应的引用变量,其中,引用变量为指向第一对象的变量;
93.步骤s530:将引用变量调用的输入参数传入第二对象,其中,第一对象和第二对象为具有串行关系的任务对象。
94.需要说明的是,通过指定任务对象的数据文件的流转关系可以描述计算任务之间的关系,具体地,参照下述计算任务的描述:
95.path=’/file’96.ac=hub.algo.v1.cutadapt(o=5,j=1,a='agatc',a='agatc',o=p+'.cutadapt.gz');
97.hub.cnvkit.batch(ac.o,{'
‑‑
processes':'5','
‑‑
output':'out'+a});
98.通过将标记有输入数据文件的任务对象定义为第一对象(hub.algo.v1.cutadapt),根据第一对象确定对应的引用变量(ac),将引用变量(ac)调用的输入参数(

o’)传入第二对象(hub.cnvkit.batch),由于batch计算中使用了ac.o,即使用了cutadapt计算的

o’参数,

o’参数用于计算输出数据文件,可以理解的是,在batch计算中使用了ac.o即确定了batch计算和cutadapt计算之间的输入输出关系,可见,第二对象(hub.cnvkit.batch)的输入是第一对象(hub.algo.v1.cutadapt)的输出,即表示第一对象和第二对象具有串行关系,第一对象对应计算任务a,第二对象对应计算任务b,表示计算任务b串行计算任务a。
99.可以理解的是,本发明实施例的工作流生成方法通过关注数据文件的输入输出关系,就能确定计算任务的前后依赖关系,即确定计算任务之间的串行关系。
100.如图6所示,在上述工作流生成方法中,步骤s160中根据工作流程序脚本的执行顺序计算计算任务,包括但不限于步骤s610和步骤s620:
101.步骤s610:对工作流程序脚本进行解释,生成任务关系表,其中,任务关系表包括多个计算任务以及计算任务之间的关系;
102.步骤s620:根据任务关系表生成任务调度,以使调度器将计算任务投递到计算节点计算。
103.需要说明的是,本发明实施例不需要像wdl一样描述所有计算任务的顺序和计算任务之间的关联关系,由于工作流程序脚本使用编程语言描述工作流,描述的顺序就是计算任务执行的一般顺序,标记带有输入数据文件的计算,一个计算任务的数据文件的输出是另一个计算任务的数据文件输入,计算任务之间存在串行关系,通过对工作流程序脚本进行解释,执行工作流,即可生成任务关系表,任务关系表包括多个计算任务以及计算任务之间的关系,计算任务有数据流输入输出关系表示存在串行关系,没有串行关系的计算任务可以并行,根据任务关系表生成任务调度,调度器把计算任务投递到计算节点完成计算,以获得计算结果。本发明实施例不在工作流中描述每个计算任务的硬件环境和计算条件,调度系统可以根据可用的计算资源,在时间轴上把串行任务排好,将并行任务填充到时间空隙,根据计算任务的串并行关系择优分批调度计算任务,区别于使用wdl对每个命令指定计算实例的方式更加简单方便高效。
104.在上述工作流生成方法中,步骤s510中对工作流程序脚本进行解释,包括:
105.将工作流程序脚本中的计算任务映射成系统执行命令。
106.需要说明的是,在工作流的描述中,通过对象方法描述计算任务,对象方法可以是系统命令、shell、perl、python、java或者其它可执行程序,例如,系统执行命令为shell命令,将每个计算任务统一映射成系统执行命令,就是将对象方法映射为shell命令,主要将对象方法对应的执行算法名称和参数映射成shell命令,便于计算机系统识别到对应的计算任务,引用对象方法的前后顺序就是计算任务执行顺序。
107.以下将用python编程语言生成的工作流程序脚本为例,描述一段简单的计算任务。
108.hub=workflow();
109.arr=list('abcde');
110.path=’/file’;
111.for a in arr:
112.p=path+’/’+a;
113.ac=hub.algo.v1.cutadapt(o=5,j=1,a='agatc',a='agatc',o=p+'.cutadapt.gz');
114.hub.cnvkit.batch(ac.o,{'
‑‑
processes':'5','
‑‑
output':'out'+a});
115.如图7所示,以workflow类创建工作流,workflow类用于描述计算任务的入口,为所有计算任务的计算起点,使用for循环批量启动一批计算任务,描述工作流的主要任务是描述清楚每个计算任务的执行算法(对象方法)、输入参数、输入数据文件,通过任务对象的数据文件的数据流可以确定计算任务之间的关系,即确定串并行关系,batch计算中使用了ac.o,是使用了cutadapt计算的

o’参数,参数是用于计算输出数据文件,当batch使用ac.o就是确定batch计算和cutadapt计算之间的输入输出关系,并且能获得cutadapt中的输入数据文件的值,当首次循环a等于字符

a’时,输出文件是

/file/a.cutadapt.gz’。
116.如图8所示,本发明的第二方面实施例提供一种运行控制装置800,包括至少一个控制处理器810和用于与至少一个控制处理器810通信连接的存储器820;控制处理器810和存储器820可以通过总线或者其他方式连接,图8中示出通过总线连接的例子,存储器820存储有可被至少一个控制处理器810执行的指令,指令被至少一个控制处理器810执行,以使至少一个控制处理器810能够执行如上第一方面实施例的工作流生成方法,例如,执行以上描述的图1中的方法步骤s110至s160、图2中的方法步骤s210和s220、图3中的方法步骤s310和s320、图4中的方法步骤s410和s420、图5中的方法步骤s510至s530、图6中的方法步骤s610和s620。通过获取用户定义的工作流,工作流中包括多个由编程语言描述的计算任务,根据每个计算任务确定对应的任务对象,并为每个任务对象传递输入参数,基于输入参数的引用关系即可确定具有依赖关系的任务对象,根据所有的任务对象以及对应的输入参数生成可执行的工作流程序脚本,在编程语言环境下执行工作流程序脚本即可计算工作流中的计算任务,对于熟悉编程语言的研究人员可以根据实际业务需求编写计算任务,添加批量计算的处理步骤,充分发挥编程语言的灵活特性,无需另外学习完全不同的工作流描述语言,使得工作流描述变得更加方便高效。
117.本发明的第三方面实施例提供一种计算机系统,包括有如上第二方面实施例的运行控制装置。通过获取用户定义的工作流,工作流中包括多个由编程语言描述的计算任务,根据每个计算任务确定对应的任务对象,并为每个任务对象传递输入参数,基于输入参数
的引用关系即可确定具有依赖关系的任务对象,根据所有的任务对象以及对应的输入参数生成可执行的工作流程序脚本,在编程语言环境下执行工作流程序脚本即可计算工作流中的计算任务,对于熟悉编程语言的研究人员可以根据实际业务需求编写计算任务,添加批量计算的处理步骤,充分发挥编程语言的灵活特性,无需另外学习完全不同的工作流描述语言,使得工作流描述变得更加方便高效。
118.本发明的第四方面实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令可以用于使计算机执行如上第一方面实施例的工作流生成方法,例如,执行以上描述的图1中的方法步骤s110至s160、图2中的方法步骤s210和s220、图3中的方法步骤s310和s320、图4中的方法步骤s410和s420、图5中的方法步骤s510至s530、图6中的方法步骤s610和s620。通过获取用户定义的工作流,工作流中包括多个由编程语言描述的计算任务,根据每个计算任务确定对应的任务对象,并为每个任务对象传递输入参数,基于输入参数的引用关系即可确定具有依赖关系的任务对象,根据所有的任务对象以及对应的输入参数生成可执行的工作流程序脚本,在编程语言环境下执行工作流程序脚本即可计算工作流中的计算任务,对于熟悉编程语言的研究人员可以根据实际业务需求编写计算任务,添加批量计算的处理步骤,充分发挥编程语言的灵活特性,无需另外学习完全不同的工作流描述语言,使得工作流描述变得更加方便高效。
119.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质或非暂时性介质和通信介质或暂时性介质。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息诸如计算机可读指令、数据结构、程序模块或其他数据的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘dvd或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
120.上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

技术特征:
1.一种工作流生成方法,其特征在于,包括:获取用户定义的工作流,其中,所述工作流包括多个计算任务;根据每个所述计算任务确定对应的任务对象;为每个所述任务对象传递输入参数;根据所述输入参数的引用关系确定具有依赖关系的任务对象;根据所有所述任务对象及对应的输入参数生成可执行的工作流程序脚本;根据所述工作流程序脚本的执行顺序计算所述计算任务。2.根据权利要求1所述的工作流生成方法,其特征在于,在所述根据每个所述计算任务确定对应的任务对象之前,还包括:获取用户定义的工作流类,其中,所述工作流类为所有所述计算任务的计算起点;对所述工作流开始类进行初始化,生成工作流对象。3.根据权利要求2所述的工作流生成方法,其特征在于,所述根据每个所述计算任务确定对应的任务对象,包括:根据每个所述计算任务确定对应的执行算法;根据所述工作流对象引用所述执行算法的名称,返回得到对应的任务对象。4.根据权利要求1所述的工作流生成方法,其特征在于,还包括:获取待处理的输入数据文件;将所述输入数据文件与对应的任务对象的属性进行绑定,确定标记有输入数据文件的任务对象,其中,所述任务对象的属性为输入参数。5.根据权利要求4所述的工作流生成方法,其特征在于,所述根据所述输入参数的引用关系确定具有依赖关系的任务对象,包括:将标记有所述输入数据文件的任务对象定义为第一对象;根据所述第一对象确定对应的引用变量,其中,所述引用变量为指向所述第一对象的变量;将所述引用变量调用的输入参数传入第二对象,其中,所述第一对象和所述第二对象为具有串行关系的任务对象。6.根据权利要求1所述的工作流生成方法,其特征在于,所述根据所述工作流程序脚本的执行顺序计算所述计算任务,包括:对所述工作流程序脚本进行解释,生成任务关系表,其中,所述任务关系表包括多个计算任务以及计算任务之间的关系;根据所述任务关系表生成任务调度,以使调度器将所述计算任务投递到计算节点计算。7.根据权利要求6所述的工作流生成方法,其特征在于,所述对所述工作流程序脚本进行解释,包括:将所述工作流程序脚本中的计算任务映射成系统执行命令。8.一种运行控制装置,其特征在于,包括至少一个控制处理器和用于与所述至少一个控制处理器通信连接的存储器;所述存储器存储有可被所述至少一个控制处理器执行的指令,所述指令被所述至少一个控制处理器执行,以使所述至少一个控制处理器能够执行如权利要求1至7任一项所述的工作流生成方法。
9.一种计算机系统,包括有如权利要求8所述的运行控制装置。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1至7任一项所述的工作流生成方法。

技术总结
本发明提出一种工作流生成方法、装置、计算机系统及计算机存储介质,工作流生成方法包括:获取用户定义的工作流,其中,所述工作流包括多个计算任务;根据每个所述计算任务确定对应的任务对象;为每个所述任务对象传递输入参数;根据所述输入参数的引用关系确定具有依赖关系的任务对象;根据所有所述任务对象及对应的输入参数生成可执行的工作流程序脚本;根据所述工作流程序脚本的执行顺序计算所述计算任务,可以根据实际业务需求编写计算任务,充分发挥编程语言的灵活特性,使得工作流描述变得更加方便高效。得更加方便高效。得更加方便高效。


技术研发人员:蒋艳凰 孙朝辉 万斌 赵丽霞 彭厘旻 康佳琪 熊亚辉 杨淼
受保护的技术使用者:人和未来生物科技(长沙)有限公司
技术研发日:2022.03.28
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐