CN115564190A - 一种执行工作流的方法、装置、电子设备及存储介质 - Google Patents
一种执行工作流的方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115564190A CN115564190A CN202211132107.2A CN202211132107A CN115564190A CN 115564190 A CN115564190 A CN 115564190A CN 202211132107 A CN202211132107 A CN 202211132107A CN 115564190 A CN115564190 A CN 115564190A
- Authority
- CN
- China
- Prior art keywords
- node
- task
- type
- target
- flow chart
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0633—Workflow analysis
Landscapes
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Economics (AREA)
- Operations Research (AREA)
- Game Theory and Decision Science (AREA)
- Development Economics (AREA)
- Marketing (AREA)
- Educational Administration (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提供了一种执行工作流的方法、装置、电子设备及存储介质,涉及计算机数据处理技术领域。该方法包括:获取待执行工作流的流程内容对应的目标流程图;解析所述目标流程图,得到节点信息;基于所述节点信息中的每一节点的节点类型,判断所述目标流程图是否符合预设格式规则;在所述目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。应用本发明实施例提供的方案,可以有效执行包含有各种执行次序的任务的工作流。
Description
技术领域
本发明实施例涉及计算机数据处理技术领域,特别是涉及一种执行工作流的方法、装置、电子设备及存储介质。
背景技术
不同行业的业务都有其特定的流程,而一个完整的流程中可能包含多个任务,这些任务的执行次序可以是串行逻辑、并行逻辑、排它逻辑的执行次序。为了提高办公效率,行业内相关人员将流程中各个任务的执行次序进行抽象化概括处理,并描述为工作流。当工作流的概念应用到需要计算机做数据处理的行业时,行业内相关人员可以应用一种基于BPMN(Business Process Modeling Notation,业务流程模型注解)标准的装置,也就是工作流引擎,来定义流程如何开始、流程中的任务怎样执行、流程如何结束等环节。
相关技术中,开源的工作流引擎activiti就是一种基于BPMN标准的工作流引擎,使用工作流引擎activiti可以控制一个完整的工作流的执行。当一个工作流中包含多个任务时,可以使用activiti的命令模式,将执行任务的动作定义为命令,在命令模式下,将这多个任务一个接一个地分配至线程中执行。
然而,由于在命令模式下,activiti默认将任务分配至一个单线程中执行,在上一个任务执行完毕后,activiti才会执行下一个任务,也就是说,activiti只按照串行逻辑执行流程。因此,当工作流流程中的任务为多个并行任务时,activiti很难实现多个并行任务的异步执行,具有极大的局限性。
可见,亟需提供一种执行工作流的方法,以有效执行包含有各种执行次序的任务的工作流。
发明内容
本发明实施例的目的在于提供一种执行工作流的方法、装置、电子设备及存储介质,以实现有效执行包含有各种执行次序的任务的工作流。
具体技术方案如下:
第一方面,本发明实施例提供了一种执行工作流的方法,应用于自定义工作流引擎,其中,所述自定义工作流引擎为预先设置的工作流引擎,所述方法包括:获取待执行工作流的流程内容对应的目标流程图;其中,所述目标流程图用于表征所述流程内容中待执行的各个目标任务的执行顺序,且所述目标流程图中包含有多个节点,每一节点的节点类型为开始类型、结束类型、任务类型、并行网关类型以及排他网关类型中的一种;属于所述任务类型的每一节点为表征一目标任务的节点,属于所述任务类型以外的节点类型的每一节点为用于表征各个目标任务间的顺序关系的节点;
解析所述目标流程图,得到节点信息;其中,所述节点信息至少包括每一节点的节点类型和节点内容;每一节点内容包括该节点的顺序关系内容和任务内容;每一节点的顺序关系内容包括位于该节点之前且相邻的前置节点,和/或,位于该节点之后且相邻的后置节点;属于所述任务类型的每一节点的任务内容为该节点所表征的目标任务,属于所述任务类型以外的节点类型的每一节点的任务内容为该节点所表征的关于顺序关系的功能内容;
基于所述节点信息中的每一节点的节点类型,判断所述目标流程图是否符合预设格式规则;
在所述目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。
可选的,基于所述节点信息中的每一节点的节点类型,判断所述目标流程图是否符合预设格式规则,包括:基于所述节点信息中的每一节点的节点类型,判断所述目标流程图中属于开始类型的节点和属于结束类型的节点的数量是否为一个,以及,属于并行网关类型的节点的个数是否为偶数;
若判断结果均为是,判定所述目标流程图符合预设格式规则。
可选的,在所述基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务之前,所述方法还包括:对预先设定的上下文变量信息进行初始化处理;其中,所述上下文变量信息包括用于记录表征任务执行状态的hash表和任务执行过程中产生的变量;
所述方法还包括:在利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务的过程中,在所述上下文变量信息中,记录当前所执行的目标任务的任务执行状态和产生的变量。
可选的,属于所述并行网关类型的节点设置有定时器,所述定时器设置有定时信息;
所述方法还包括:针对属于所述并行网关类型的每一节点,在该节点对应的至少一指定任务的执行过程中,按照所述定时器所给定的定时信息,定时从所述上下文变量信息中,查询所述至少一指定任务的任务执行状态;其中,所述该节点对应的至少一指定任务为:该节点对应的属于任务类型的前置节点所表征的目标任务;
属于并行网关类型的每一节点对应的后置节点的任务内容的触发执行条件为:
该节点对应的至少一指定任务的任务执行状态均为执行完毕。
可选的,所述方法还包括:针对属于所述排他网关类型的每一节点,在该节点对应的指定任务的执行过程中,从所述上下文变量信息中,查询所述指定任务的任务执行状态和所述指定任务的任务执行过程中产生的变量;其中,所述该节点对应的指定任务为:该节点对应的属于任务类型的前置节点所表征的目标任务;其中,属于排他网关类型的每一节点对应的后置节点的任务内容由所述指定任务的任务执行状态和所述指定任务的任务执行过程中产生的变量确定。
第二方面,本发明实施例提供了一种执行工作流的装置,所述装置包括:
获取模块,用于获取待执行工作流的流程内容对应的目标流程图;其中,所述目标流程图用于表征所述流程内容中待执行的各个目标任务的执行顺序,且所述目标流程图中包含有多个节点,每一节点的节点类型为开始类型、结束类型、任务类型、并行网关类型以及排他网关类型中的一种;属于所述任务类型的每一节点为表征一目标任务的节点,属于所述任务类型以外的节点类型的每一节点为用于表征各个目标任务间的顺序关系的节点;
解析模块,用于解析所述目标流程图,得到节点信息;其中,所述节点信息至少包括每一节点的节点类型和节点内容;每一节点内容包括该节点的顺序关系内容和任务内容;每一节点的顺序关系内容包括位于该节点之前且相邻的前置节点,和/或,位于该节点之后且相邻的后置节点;属于所述任务类型的每一节点的任务内容为该节点所表征的目标任务,属于所述任务类型以外的节点类型的每一节点的任务内容为该节点所表征的关于顺序关系的功能内容;
判断模块,用于基于所述节点信息中的每一节点的节点类型,判断所述目标流程图是否符合预设格式规则;
执行模块,用于在所述目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。
可选的,所述判断模块,包括:判断单元,用于基于所述节点信息中的每一节点的节点类型,判断所述目标流程图中属于开始类型的节点和属于结束类型的节点的数量是否为一个,以及,属于并行网关类型的节点的个数是否为偶数;
若判断结果均为是,判定所述目标流程图符合预设格式规则。
可选的,所述执行模块,还用于在基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务之前,对预先设定的上下文变量信息进行初始化处理;其中,所述上下文变量信息包括用于记录表征任务执行状态的hash表和任务执行过程中产生的变量;
所述装置还包括:记录模块,用于在利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务的过程中,在所述上下文变量信息中,记录当前所执行的目标任务的任务执行状态和产生的变量。
本发明实施例还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现所述执行工作流的方法步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现所述执行工作流的方法步骤。
本发明实施例有益效果:
基于上述方案可知,在执行工作流过程中,待执行工作流的流程内容可以以目标流程图的形式体现;进而,对目标流程图进行解析,得到节点信息;在基于节点信息中的每一节点的节点类型,判定出目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。可见,基于本方案,针对包含有任一种执行次序的任务的工作流而言,无论各个任务是并行逻辑、串行逻辑还是排他逻辑,首先均可以采用流程图的形式来体现工作流的流程内容,然后通过流程图的解析以及借助指定线程池中的线程,实现该任一种执行次序的各个任务的执行。可见,本方案可以有效执行包含有各种执行次序的任务的工作流。
基于此,应用本发明实施例提供的方案,便可以有效执行包含有各种执行次序的任务的工作流。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为本发明实施例提供的一种执行工作流的方法的流程示意图;
图2为本发明实施例提供的另一种执行工作流的方法的流程示意图;
图3为本发明实施例提供的执行属于排他网关类型的节点的相关操作的流程示意图;
图4为本发明实施例提供的又一种执行工作流的方法的流程示意图;
图5为本发明实施例提供的工作流流程图;
图6为本发明实施例提供的一种执行工作流的装置的结构示意图;
图7为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
为了有效执行包含有各种执行次序的任务的工作流,本发明实施例提供了一种执行工作流的方法、装置、电子设备及存储介质。
下面首先对本发明实施例所提供的一种执行工作流的方法进行介绍。
其中,本发明实施例所提供一种执行工作流的方法,可以应用于自定义工作流引擎,所述自定义工作流引擎为预先设置的工作流引擎。在具体的应用中,该自定义工作流引擎可以为基于BPMN标准、预先定义好节点和线条的工作流引擎;其中,通过预先定义好的节点和线条,可以将待执行工作流的流程内容中的各个目标任务以流程图形式进行体现。
其中,本发明实施例提供一种执行工作流的方法,可以包括如下步骤:
获取待执行工作流的流程内容对应的目标流程图;其中,所述目标流程图用于表征所述流程内容中待执行的各个目标任务的执行顺序,且所述目标流程图中包含有多个节点,每一节点的节点类型为开始类型、结束类型、任务类型、并行网关类型以及排他网关类型中的一种;属于所述任务类型的每一节点为表征一目标任务的节点,属于所述任务类型以外的节点类型的每一节点为用于表征各个目标任务间的顺序关系的节点;
解析所述目标流程图,得到节点信息;其中,所述节点信息至少包括每一节点的节点类型和节点内容;每一节点内容包括该节点的顺序关系内容和任务内容;每一节点的顺序关系内容包括位于该节点之前且相邻的前置节点,和/或,位于该节点之后且相邻的后置节点;属于所述任务类型的每一节点的任务内容为该节点所表征的目标任务,属于所述任务类型以外的节点类型的每一节点的任务内容为该节点所表征的关于顺序关系的功能内容;
基于所述节点信息中的每一节点的节点类型,判断所述目标流程图是否符合预设格式规则;
在所述目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。
基于上述方案可知,在执行工作流过程中,待执行工作流的流程内容可以以目标流程图的形式体现;进而,对目标流程图进行解析,得到节点信息;在基于节点信息中的每一节点的节点类型,判定出目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。可见,基于本方案,针对包含有任一种执行次序的任务的工作流而言,无论各个任务是并行逻辑、串行逻辑还是排他逻辑,首先均可以采用流程图的形式来体现工作流的流程内容,然后通过流程图的解析以及借助指定线程池中的线程,实现该任一种执行次序的各个任务的执行。可见,本方案可以有效执行包含有各种执行次序的任务的工作流。
基于此,应用本发明实施例提供的方案,便可以有效执行包含有各种执行次序的任务的工作流。
下面结合附图介绍本发明实施例所提供的一种执行工作流的方法。
图1为本发明实施例提供的一种执行工作流的方法的流程示意图,如图1所示,该方法可以包括如下步骤:
S101:获取待执行工作流的流程内容对应的目标流程图;其中,所述目标流程图用于表征所述流程内容中待执行的各个目标任务的执行顺序,且所述目标流程图中包含有多个节点,每一节点的节点类型为开始类型、结束类型、任务类型、并行网关类型以及排他网关类型中的一种;属于所述任务类型的每一节点为表征一目标任务的节点,属于所述任务类型以外的节点类型的每一节点为用于表征各个目标任务间的顺序关系的节点。
可以理解的是,相关技术中,工作流引擎可以具有可视化的操作功能,例如,工作流引擎可以具有可视化工作流设计器,以便用户基于具体工作流流程需求,通过拖拉拽工作流引擎中的线条和节点,来构建流程图。其中,流程图可以表征具体工作流流程需求所要求的执行顺序,且具体需要执行的任务的内容也可以被定义在流程图内的相关节点中。而被执行的工作流流程中可以包括各种执行次序的任务,例如,工作流流程中可以包括多个需要被异步执行的任务,或,多个需要被并行执行的任务,或,多个需要被异步执行的任务和并行执行的任务。
本实施例中,自定义工作流引擎具有可视化的操作功能,使得用户可以针对待执行工作流的流程内容,来构建目标流程图。并且,在用户构建好目标流程图后,在自定义工作流引擎内的工作流设计器中,可以具象地看到待执行工作流的流程内容对应的目标流程图。其中,目标流程图中的各个节点都是基于BPMN标准和具体需求所定义的。需要说明的是,目标流程图中不同类型的节点具有不同的功能。属于任务类型的节点,也就是,任务节点,可以表征在目标流程图中此节点所在处有一目标任务需要被执行。而属于任务类型以外的节点可以用于表征各个目标任务的执行顺序关系,例如,属于开始类型的节点和属于结束类型的节点,也就是开始节点和结束节点可以表征工作流的流程执行顺序中的起始与结束;基于功能划分,属于并行网关类型的节点,也就是并行网关节点,可以有分支网关和汇聚网关,并行网关节点中的分支网关可以表征工作流的流程执行顺序中,由该并行网关节点向后会有若干并行的分支任务需要被执行,相应的,并行网关节点中的汇聚网关可以表征工作流的流程执行顺序中,由该并行网关节点向前会有若干并行的分支任务执行后在此汇聚。
需要说明的是,在现实中,具体的工作流的流程内容可能会随需求更改,因此,如果相关人员想要对已经上线运行的自定义工作流引擎中的目标流程图进行修改,只需要在工作流设计器中,依据需求对目标流程图中的节点和线条进行拖拉拽的操作,得到更新流程后的流程图。可以理解的是,在使用本发明提供的方法时,自定义工作流引擎总能获取更新流程后的目标流程图。
S102:解析所述目标流程图,得到节点信息;其中,所述节点信息至少包括每一节点的节点类型和节点内容;每一节点内容包括该节点的顺序关系内容和任务内容;每一节点的顺序关系内容包括位于该节点之前且相邻的前置节点,和/或,位于该节点之后且相邻的后置节点;属于所述任务类型的每一节点的任务内容为该节点所表征的目标任务,属于所述任务类型以外的节点类型的每一节点的任务内容为该节点所表征的关于顺序关系的功能内容。
可以理解的是,在自定义工作流引擎中的目标流程图可以是以可读文件的形式保存,例如,xml文档形式。因此,解析目标流程图,也就是,解析存有目标流程图的可读文件。例如,在解析存有目标流程图的xml文档时,由于xml文档中的内容是由各个元素组成的,因此,解析xml文档时,可以解析到元素信息,其中,元素信息可以包括元素、元素属性和元素值;而元素、元素属性和元素值可以表征节点,由此可以得到节点信息。
需要说明的是,节点信息可以包括目标流程图中各个节点的节点类型和节点内容。其中,具体的节点类型,可以如步骤S101中所描述的,分为开始类型、结束类型、任务类型、并行网关类型和排他网关类型。而各个节点的节点类型,是由基于元素信息得到的节点信息所表现出来的。例如,在解析目标流程图的xml文档后,可以获取到元素属性的名称,而元素属性的名称可以直观表现出节点类型,比如元素属性名称“startnode”可以表明该元素代表的节点类型为开始类型。
其中,每一节点内容可以分为包括该节点的顺序关系内容和任务内容。具体而言,针对节点类型为开始类型、结束类型、并行网关类型和排他网关类型中任一类型的节点的节点内容,可以是关于顺序关系的功能内容,也就是表征该节点所起到的作用,例如是开始、还是结束,是用于分支还是汇聚。而针对节点类型为任务类型的节点的节点内容可以是该节点中具体的任务内容,且可以表征目标任务。那么,为了解析后得到任务内容,可以对存有目标流程图的可读文件进行解析。例如,在解析存有目标流程图的xml文档后,可以得到元素信息,元素信息包括元素、元素属性和元素值,元素属性是任务属性的元素的元素值即为任务内容,可以用于表征目标任务。
并且,在目标流程图中除了节点还包括线条,而线条可以表征目标流程图的执行顺序,以及表征出任一节点的前一节点和/或后一节点,因此,在存有目标流程图的可读文件中,线条也可以以可读文件中的数据的形式被保存。例如,在解析存有目标流程图的xml文档后,解析得到的元素信息可以包括元素值,而元素属性是线条属性的元素的元素值可以表征顺序关系内容;因此,由解析得到的元素信息可以获取包含顺序关系内容的节点信息。其中,每一节点的顺序关系内容包括位于该节点之前且相邻的前置节点,和/或,位于该节点之后且相邻的后置节点,这些前置节点和后置节点都是基于BPMN标准对目标流程图中的执行工作流流程的抽象定义。需要说明的是,针对任一节点而言,该节点、该节点的前置节点与后置节点,在目标流程图所表示的执行顺序可以理解为,该节点的前置节点、该节点、该节点的后置节点这样的顺序。例如,任务类型节点甲、乙、丙三个节点按先后顺序依次执行,那么节点甲的后置节点就是乙,节点乙的前置节点就是甲,节点乙的后置节点就是丙,节点丙的前置任务就是乙。
S103:基于所述节点信息中的每一节点的节点类型,判断所述目标流程图是否符合预设格式规则。
可以理解的是,在得到节点信息后,可以获知目标流程图中各个节点的节点类型,由此可以判断目标流程图是否符合预设格式规则。需要说明的是,预设格式规则可以是为了保证在自定义工作流引擎执行目标流程图所表征流程的过程中不会出错的一些自定义规则及常规工作流引擎运行所需的规则。
可选的,在一种实现方式中,步骤S103可以包括步骤A1和步骤A2:
步骤A1,基于所述节点信息中的每一节点的节点类型,判断所述目标流程图中属于开始类型的节点和属于结束类型的节点的数量是否为一个,以及,属于并行网关类型的节点的个数是否为偶数。
可以理解的是,基于步骤S102中得到的节点信息,可以知悉目标流程图中各个节点的节点类型,因此,可以判断属于开始类型的节点、属于结束类型的节点和属于并行网关类型的节点的个数。需要说明的是,针对本发明提供的方法,自定义工作流引擎可以检验目标流程图是否只有一个属于开始类型的节点和一个属于结束类型的节点,这样可以确保目标流程图的完整性;以及,自定义工作流引擎可以检验目标流程图中属于并行网关类型的节点的个数是否为偶数,这样可以确保并行网关的所有分支的目标任务都被执行完毕后,然后进行汇聚,也就是,分支网关以及汇聚网关是成对出现的。
步骤A2,若判断结果均为是,判定所述目标流程图符合预设格式规则。
可以理解的是,符合预设格式规则的目标流程图执行过程中不会出错。需要说明的是,预设格式规则是针对自定义工作流引擎的规则,在对自定义工作流引擎进行不同的自定义处理后,预设格式规则也会适应性调整,也就是,预设格式规则可以根据实际需求进行调整,并不局限于本发明实施例所示出的规则内容。
S104:在所述目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。
可以理解的是,当判定目标流程图中的工作流流程可以被无误执行后,即符合预设格式规则后,就可以依据目标流程图中的执行顺序来执行各个目标任务。需要说明的是,自定义工作流引擎可以采用通过线程池中的线程执行任务的方式,对属于任务类型的节点所表征的目标任务进行执行。具体的,当目标流程图的执行流程来到属于任务类型的节点时,属于任务类型的节点可以直接将该节点的任务内容表征的目标任务分配到指定线程池中的线程中执行。例如,当有多个属于任务类型的节点分别位于同一个属于并行网关类型的节点后面的不同并行分支中时,也就是,当有多个目标任务需要被并行执行时,可以将各个属于任务类型的节点表征的各个目标任务分配至指定线程池中,指定线程池中会启动多个线程,将各个目标任务分别分配到各个线程中并行执行。又例如,当有多个属于任务类型的节点分别位于同一个属于并行网关类型的节点后面的不同并行分支中时,也就是,当有多个目标任务需要被并行执行时,可以将各个属于任务类型的节点表征的各个目标任务分配至指定线程池中,指定线程池中有核心线程和等待队列,由于核心线程数量有限,部分目标任务可以先被分配至核心线程中执行,另一部分可以先被存至等待队列中,在核心线程中的部分目标任务执行完毕后,再将等待队列中的目标任务分配至核心线程中执行,以实现在指定线程池中将各个目标任务异步执行。
另外,需要说明的是,每一节点内容包括的该节点的顺序关系内容,可以表示出在执行过程,各个节点的先后流转顺序;在流转到每一节点后,可以基于该节点的任务内容决定是继续流转到后置节点,还是分配目标任务给线程池中的线程。
基于上述方案可知,在执行工作流过程中,待执行工作流的流程内容可以以目标流程图的形式体现;进而,对目标流程图进行解析,得到节点信息;在基于节点信息中的每一节点的节点类型,判定出目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。可见,基于本方案,针对包含有任一种执行次序的任务的工作流而言,无论各个任务是并行逻辑、串行逻辑还是排他逻辑,首先均可以采用流程图的形式来体现工作流的流程内容,然后通过流程图的解析以及借助指定线程池中的线程,实现该任一种执行次序的各个任务的执行。可见,本方案可以有效执行包含有各种执行次序的任务的工作流。
基于此,应用本发明实施例提供的方案,便可以有效执行包含有各种执行次序的任务的工作流。
另外,需要说明的是,本发明以程序任务编排场景为思考点,通过异步多线程为底层驱动,结合上层任务的统一抽象,解决了程序任务自由编排的问题,这里的程序任务即为上述的待执行工作流的流程内容中的目标任务。本发明模型较为简单,不区分节点和线条,节点和线条全部抽象为任务对象,通过面向对象继承方式,区分不同的节点和线条的方法和属性;并且,本发明采用并发执行的思路,通过线程池驱动的方式,天然支持任务并发执行,减少工作流整体执行时间;另外,传统的工作流都是后台预先定义好工作流定义,然后发布到前台展示,而本发明支持前台动态编辑工作流内容,然后动态发布到后台以执行工作流,这样大大提高了可执行的工作流的内容的灵活性。
可选的,在另一实施例中,如图2所示,在图1所示的执行工作流的方法基础上,在步骤S104,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务之前,还包括步骤S201:
S201:在所述目标流程图符合所述预设格式规则的情况下,对预先设定的上下文变量信息进行初始化处理;其中,所述上下文变量信息包括用于记录表征任务执行状态的hash表和任务执行过程中产生的变量。
可以理解的是,上下文(context)可以用于存储任务执行过程中表征任务执行状态的hash表和任务执行过程中产生的变量,被存储至上下文的hash表和变量可以被称为上下文变量信息。需要说明的是,hash表,也叫散列表或哈希表,是根据关键码值(key value)而直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录。而目标流程图在被执行的过程中,hash表可以记录任务的执行状态,比如任务执行成功或任务执行失败。同样的,在执行目标流程图的过程中,也会产生一些变量,例如:目标任务的中间结果,或者,任务的最终结果内容,这些变量可以被存在上下文变量信息中。其中,为了清除与本次目标流程图执行过程无关的内容,可以对上下文变量信息进行初始化处理,所谓的初始处理可以为置空处理。
在图1所示的执行工作流的方法基础上,还包括步骤S202,
S202:在利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务的过程中,在所述上下文变量信息中,记录当前所执行的目标任务的任务执行状态和产生的变量。
可以理解的是,目标任务的任务执行状态可以有执行成功和执行失败这两种,目标任务在执行过程中也会产生一些变量,而这些都可以被存放到上下文变量信息中,以供需要调用任务执行状态或变量的节点使用。例如,在项目资金申报流程中,目标任务A是查询申报资金数额,目标任务B是小于500元的资金数额申报会被自动批准,那么目标任务A查询到的资金数额的值可以被存放到上下文变量信息中,以供在目标任务B的执行过程中被调取使用。
需要说明的是,在执行属于并行网关类型的节点和属于排他网关类型的节点的前置节点和后置节点的任务内容的过程中,可以查询上下文变量信息并使用;针对上下文变量信息的使用,执行属于并行网关类型的节点的相关操作和执行属于排他网关类型的节点的相关操作的有不同的过程。
需要强调的是,为了方案清楚以及布局清晰,后续结合另一实施例,对执行属于并行网关类型的节点的相关操作的过程的具体实现方式进行介绍;并且,后续结合又一实施例,对执行属于排他网关类型的节点的相关操作的过程的具体实现方式进行介绍。
本实施例中,在执行待执行工作流的流程内容之前,先将上下文变量信息进行初始化处理,以便在执行待执行工作流的流程内容的过程中,可以将目标任务的任务执行状态和任务执行过程中产生的变量存在上下文变量信息中,有利于在整个任务执行过程中,使各个目标任务的任务执行状态清晰以及任务执行过程中产生的变量查询方便。
可选的,在另一实施例中,属于所述并行网关类型的节点设置有定时器,所述定时器设置有定时信息,所述方法还可以包括如下步骤B1:
步骤B1,针对属于所述并行网关类型的每一节点,在该节点对应的至少一指定任务的执行过程中,按照所述定时器所给定的定时信息,定时从所述上下文变量信息中,查询所述至少一指定任务的任务执行状态;其中,所述该节点对应的至少一指定任务为:该节点对应的属于任务类型的前置节点所表征的目标任务;
属于并行网关类型的每一节点对应的后置节点的任务内容的触发执行条件为:
该节点对应的至少一指定任务的任务执行状态均为执行完毕。
可以理解的是,由于属于并行网关类型的节点设置有定时器,所以属于并行网关类型的节点可以定时周期性地查询上下文变量信息;具体的,可以查询属于并行网关类型的节点的前置节点的任务内容所表征的目标任务的任务执行状态。需要说明的是,属于并行网关类型的节点的前置节点可以为一个或多个。例如,一属于并向网关类型的节点前有三个并行分支的属于任务类型的节点,当查询到该属于并行网关类型的节点的三个并行分支的前置节点的任务内容所表征的目标任务的任务都执行成功,那么可以执行该属于并行网关类型的节点的后置节点的任务内容。
其中,定时器还可以设置有最大等待时长,如果在达到最大等待时长时,自定义工作流引擎查询到的任务执行状态为未执行完毕的状态,则停止工作流执行的过程,直接执行目标流程图中结束类型节点的任务内容。
本实施例中,基于定时器的定时信息,定时查询属于并行网关类型的节点的前置节点所表征的目标任务的任务执行状态可以保障在两个属于并行网关类型的节点之间的所有分支上的节点所表征的目标任务都执行完毕。
可选的,在又一实施例中,如图3所示,上述的执行属于排他网关类型的节点的相关操作的过程,可以包括步骤S3010和步骤S3011,
S3010:针对属于所述排他网关类型的每一节点,在该节点对应的指定任务的执行过程中,从所述上下文变量信息中,查询所述指定任务的任务执行状态和所述指定任务的任务执行过程中产生的变量;其中,所述该节点对应的指定任务为:该节点对应的属于任务类型的前置节点所表征的目标任务。
可以理解的是,自定义工作流引擎可以从上下文变量信息中,查询属于排他网关类型的节点对应的指定任务的任务执行状态和任务执行过程中产生的变量。
S3011:基于所述指定任务的任务执行状态和所述指定任务的任务执行过程中产生的变量确定属于排他网关类型的每一节点对应的后置节点的任务内容。
可以理解的是,属于排他网关类型的节点的后置节点可以为多个,具体执行这多个后置节点中的哪一个的任务内容,需要依据属于排他网关类型的节点的前置节点所表征的任务执行状态或前置节点所表征的任务执行中产生的变量来决定。例如,属于排他网关类型的节点的前置节点所表征的目标任务的任务执行状态为执行成功,则可以选择对应前置节点所表征的目标任务执行成功的后置节点的任务内容来执行。又例如,在项目资金申报流程中,属于排他网关类型的节点的前置节点所表征的目标任务是获取资金数额,获取到的资金数额的值可以作为目标任务的任务执行过程中产生的变量存在上下文变量信息中,对应的后置节点有三个;当资金数额大于10000元时,确定属于排他网关类型的节点的后置节点为第一后置节点,对应第一后置节点所表征的目标任务为向经理提交申报请求;当资金数额小于等于10000元且大于5000元时,确定属于排他网关类型的节点的后置节点为第二后置节点,对应第二后置节点所表征的目标任务为向主管提交申报请求;当资金数额小于等于5000元时,确定属于排他网关类型的节点的后置节点为第三后置节点,对应第三后置节点所表征的目标任务为向组长提交申报请求。
本实施例中,查询属于排他网关类型的节点的前置节点所表征的目标任务的任务执行状态和任务执行过程中产生的变量可以保障在属于排他网关类型的节点的后置节点所表征的目标任务不会执行错误。
为了更好地理解本发明实施例所提供的一种执行工作流的方法,下面结合另一示例进行介绍。
图4为本发明实施例提供的又一种执行工作流的方法的流程示意图,如图4所示,该方法可以包括如下步骤:
S401:获取待执行工作流的流程内容对应的目标流程图。
S402:解析所述目标流程图,得到节点信息。
S403:基于所述节点信息,判断所述目标流程图是否符合预设格式规则。如果是,执行S404;如果否,结束执行。
S404,以属于开始类型的节点作为当前节点。
可以理解的是,执行工作流也就是执行目标流程图中各个节点的流程内容,因此,在执行流程内容的过程中,可以将目标流程图中的、属于开始类型的节点作为起点,按照节点信息中包含的节点执行顺序内容,依次执行各个节点的任务内容;在上述过程中,可以将当前待执行的任务内容所属的节点作为当前节点,而在启动目标流程图的执行之初,可以将属于开始类型的节点作为当前节点。
S405,基于所述节点信息,利用预先设定的hasNext函数判断属于当前节点是否有后置节点;其中,所述预先设定的hasNext函数用于分析节点信息,得到当前节点是否存在后置节点。如果是,执行S406;否则,结束执行。
可以理解的是,在步骤S402中,解析得到的节点信息包括各个节点的节点内容,每一节点内容都是一个包含对应节点的顺序关系内容和任务内容的对象,在执行目标流程图的流程内容的过程中,可以使用一个统一的hasNext函数对各个对象进行判断。需要说明的是,hasNext函数可以判断出当前节点是否有后置节点,如果当前节点有后置节点,那么hasNext函数可以输出的布尔值是“true”;如果当前节点没有后置节点,那么hasNext函数可以输出的布尔值是“false”。
S406,确定当前节点的后置节点,若所确定出的当前节点的后置节点为属于任务类型的节点,利用指定线程池中的线程,执行当前节点的后置节点所表征的目标任务,并在执行完毕后,以当前节点的后置节点作为新的当前节点,返回S405;若所确定出的当前节点的后置节点为除开始类型以外的类型,以当前节点的后置节点作为新的当前节点,返回S405。
可以理解的是,在执行目标流程图的流程内容的过程中,只要当前节点的节点类型不是开始类型,就可以将任务内容执行完毕的当前节点的后置节点作为下一当前节点,返回步骤S405,利用hasNext函数判断下一当前节点是否还有后置节点。
其中步骤S401、S402、S403、S406在前述实施例中已经进行了描述,在本实施例中就不做赘述。
基于上述方案可知,在执行工作流过程中,待执行工作流的流程内容可以以目标流程图的形式体现;进而,对目标流程图进行解析,得到节点信息;在基于节点信息中的每一节点的节点类型,判定出目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。可见,基于本方案,针对包含有任一种执行次序的任务的工作流而言,无论各个任务是并行逻辑、串行逻辑还是排他逻辑,首先均可以采用流程图的形式来体现工作流的流程内容,然后通过流程图的解析以及借助指定线程池中的线程,实现该任一种执行次序的各个任务的执行。可见,本方案可以有效执行包含有各种执行次序的任务的工作流。
基于此,应用本发明实施例提供的方案,便可以有效执行包含有各种执行次序的任务的工作流。
另外,本实施例中,在执行完当前节点的任务内容后,会返回检查当前节点后是否还有需要执行的任务内容,可以保证工作流中所有任务内容都执行完毕。
为了方便理解方案,下面结合如图5所示的工作流流程图,即上述的待执行工作流的目标流程图,对本发明提供的方法进行说明。
如图5所示的工作流流程图,自定义工作流引擎可以在获取到该工作流流程图后,解析出该工作流流程图中有一个开始类型节点、一个结束类型节点、一个排他网关类型节点、两个并行网关类型节点、五个任务类型节点,其中,开始类型节点为节点类型属于开始类型的节点,结束类型节点为节点类型属于结束类型的节点,排他网关类型节点为节点类型属于排他网关类型的节点,并行网关类型节点为节点类型属于并行网关类型的节点。可以理解的是,该工作流流程图是符合预设格式规则的,从开始类型节点开始执行工作流流程图,自定义工作流引擎可以将任务类型节点A的任务内容所表征的目标任务a分配至指定线程池中的线程中执行,之后,查询上下文变量信息,在目标任务a执行成功的情况下,可以确定排他网关类型节点对应true线条指向的任务类型节点B为其后置节点;在目标任务a执行失败的情况下,可以确定排他网关类型节点对应false线条指向的任务类型节点E为其后置节点,在执行完任务类型节点E的任务内容后,执行结束类型节点的任务内容,也就是结束工作流流程图的执行。自定义工作流引擎可以将任务类型节点B的任务内容所表征的目标任务b分配至指定线程池中的线程中执行,之后,查询上下文变量信息,在目标任务b执行成功的情况下,可以触发执行并行网关类型节点的后置节点的任务内容,也就是,将任务类型节点C和任务类型节点D所表征的目标任务c和目标任务d分配至指定线程池中的线程中执行。之后,自定义工作流引擎查询上下文变量信息,在目标任务c和目标任务d执行成功的情况下,触发执行并行网关类型节点的后置节点的任务内容,也就是结束类型节点所表征的工作流流程图执行结束。
基于上述方案可知,在执行工作流过程中,待执行工作流的流程内容可以以目标流程图的形式体现;进而,对目标流程图进行解析,得到节点信息;在基于节点信息中的每一节点的节点类型,判定出目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。可见,基于本方案,针对包含有任一种执行次序的任务的工作流而言,无论各个任务是并行逻辑、串行逻辑还是排他逻辑,首先均可以采用流程图的形式来体现工作流的流程内容,然后通过流程图的解析以及借助指定线程池中的线程,实现该任一种执行次序的各个任务的执行。可见,本方案可以有效执行包含有各种执行次序的任务的工作流。
基于此,应用本发明实施例提供的方案,便可以有效执行包含有各种执行次序的任务的工作流。
图6为本发明实施例提供的一种执行工作流的装置的结构示意图,如图6所示,该装置可以包括如下模块:
获取模块610,用于获取待执行工作流的流程内容对应的目标流程图;其中,所述目标流程图用于表征所述流程内容中待执行的各个目标任务的执行顺序,且所述目标流程图中包含有多个节点,每一节点的节点类型为开始类型、结束类型、任务类型、并行网关类型以及排他网关类型中的一种;属于所述任务类型的每一节点为表征一目标任务的节点,属于所述任务类型以外的节点类型的每一节点为用于表征各个目标任务间的顺序关系的节点;
解析模块620,用于解析所述目标流程图,得到节点信息;其中,所述节点信息至少包括每一节点的节点类型和节点内容;每一节点内容包括该节点的顺序关系内容和任务内容;每一节点的顺序关系内容包括位于该节点之前且相邻的前置节点,和/或,位于该节点之后且相邻的后置节点;属于所述任务类型的每一节点的任务内容为该节点所表征的目标任务,属于所述任务类型以外的节点类型的每一节点的任务内容为该节点所表征的关于顺序关系的功能内容;
判断模块630,用于基于所述节点信息中的每一节点的节点类型,判断所述目标流程图是否符合预设格式规则;
执行模块640,用于在所述目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。
判断模块630,用于基于所述节点信息中的每一节点的节点类型,判断所述目标流程图中属于开始类型的节点和属于结束类型的节点的数量是否为一个,以及,属于并行网关类型的节点的个数是否为偶数;
若判断结果均为是,判定所述目标流程图符合预设格式规则。
执行模块640,还用于在基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务之前,对预先设定的上下文变量信息进行初始化处理;其中,所述上下文变量信息包括用于记录表征任务执行状态的hash表和任务执行过程中产生的变量。
所述装置还包括:
记录模块,用于在利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务的过程中,在所述上下文变量信息中,记录当前所执行的目标任务的任务执行状态和产生的变量。
属于所述并行网关类型的节点设置有定时器,所述定时器设置有定时信息,所述执行工作流的装置,还用于针对属于所述并行网关类型的每一节点,在该节点对应的至少一指定任务的执行过程中,按照所述定时器所给定的定时信息,定时从所述上下文变量信息中,查询所述至少一指定任务的任务执行状态;其中,所述该节点对应的至少一指定任务为:该节点对应的属于任务类型的前置节点所表征的目标任务;
属于并行网关类型的每一节点对应的后置节点的任务内容的触发执行条件为:
该节点对应的至少一指定任务的任务执行状态均为执行完毕。
所述执行工作流的装置,还用于针对属于所述排他网关类型的每一节点,在该节点对应的指定任务的执行过程中,从所述上下文变量信息中,查询所述指定任务的任务执行状态;其中,所述该节点对应的指定任务为:该节点对应的属于任务类型的前置节点所表征的目标任务;
基于所述指定任务的任务执行状态和所述指定任务的任务执行过程中产生的变量确定属于排他网关类型的每一节点对应的后置节点的任务内容。
基于上述方案可知,在执行工作流过程中,待执行工作流的流程内容可以以目标流程图的形式体现;进而,对目标流程图进行解析,得到节点信息;在基于节点信息中的每一节点的节点类型,判定出目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。可见,基于本方案,针对包含有任一种执行次序的任务的工作流而言,无论各个任务是并行逻辑、串行逻辑还是排他逻辑,首先均可以采用流程图的形式来体现工作流的流程内容,然后通过流程图的解析以及借助指定线程池中的线程,实现该任一种执行次序的各个任务的执行。可见,本方案可以有效执行包含有各种执行次序的任务的工作流。
基于此,应用本发明实施例提供的方案,便可以有效执行包含有各种执行次序的任务的工作流。
本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现上述执行工作流的方法步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一执行工作流的方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一执行工作流的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种执行工作流的方法,其特征在于,应用于自定义工作流引擎,其中,所述自定义工作流引擎为预先设置的工作流引擎,所述方法包括:
获取待执行工作流的流程内容对应的目标流程图;其中,所述目标流程图用于表征所述流程内容中待执行的各个目标任务的执行顺序,且所述目标流程图中包含有多个节点,每一节点的节点类型为开始类型、结束类型、任务类型、并行网关类型以及排他网关类型中的一种;属于所述任务类型的每一节点为表征一目标任务的节点,属于所述任务类型以外的节点类型的每一节点为用于表征各个目标任务间的顺序关系的节点;
解析所述目标流程图,得到节点信息;其中,所述节点信息至少包括每一节点的节点类型和节点内容;每一节点内容包括该节点的顺序关系内容和任务内容;每一节点的顺序关系内容包括位于该节点之前且相邻的前置节点,和/或,位于该节点之后且相邻的后置节点;属于所述任务类型的每一节点的任务内容为该节点所表征的目标任务,属于所述任务类型以外的节点类型的每一节点的任务内容为该节点所表征的关于顺序关系的功能内容;
基于所述节点信息中的每一节点的节点类型,判断所述目标流程图是否符合预设格式规则;
在所述目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。
2.根据权利要求1所述的方法,其特征在于,基于所述节点信息中的每一节点的节点类型,判断所述目标流程图是否符合预设格式规则,包括:
基于所述节点信息中的每一节点的节点类型,判断所述目标流程图中属于开始类型的节点和属于结束类型的节点的数量是否为一个,以及,属于并行网关类型的节点的个数是否为偶数;
若判断结果均为是,判定所述目标流程图符合预设格式规则。
3.根据权利要求1所述的方法,其特征在于,在所述基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务之前,所述方法还包括:
对预先设定的上下文变量信息进行初始化处理;其中,所述上下文变量信息包括用于记录表征任务执行状态的hash表和任务执行过程中产生的变量;
所述方法还包括:
在利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务的过程中,在所述上下文变量信息中,记录当前所执行的目标任务的任务执行状态和产生的变量。
4.根据权利要求3所述的方法,其特征在于,属于所述并行网关类型的节点设置有定时器,所述定时器设置有定时信息;
所述方法还包括:
针对属于所述并行网关类型的每一节点,在该节点对应的至少一指定任务的执行过程中,按照所述定时器所给定的定时信息,定时从所述上下文变量信息中,查询所述至少一指定任务的任务执行状态;其中,所述该节点对应的至少一指定任务为:该节点对应的属于任务类型的前置节点所表征的目标任务;
属于并行网关类型的每一节点对应的后置节点的任务内容的触发执行条件为:
该节点对应的至少一指定任务的任务执行状态均为执行完毕。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
针对属于所述排他网关类型的每一节点,在该节点对应的指定任务的执行过程中,从所述上下文变量信息中,查询所述指定任务的任务执行状态和所述指定任务的任务执行过程中产生的变量;其中,所述该节点对应的指定任务为:该节点对应的属于任务类型的前置节点所表征的目标任务;
基于所述指定任务的任务执行状态和所述指定任务的任务执行过程中产生的变量确定属于排他网关类型的每一节点对应的后置节点的任务内容。
6.一种执行工作流的装置,其特征在于,所述装置包括:
获取模块,用于获取待执行工作流的流程内容对应的目标流程图;其中,所述目标流程图用于表征所述流程内容中待执行的各个目标任务的执行顺序,且所述目标流程图中包含有多个节点,每一节点的节点类型为开始类型、结束类型、任务类型、并行网关类型以及排他网关类型中的一种;属于所述任务类型的每一节点为表征一目标任务的节点,属于所述任务类型以外的节点类型的每一节点为用于表征各个目标任务间的顺序关系的节点;
解析模块,用于解析所述目标流程图,得到节点信息;其中,所述节点信息至少包括每一节点的节点类型和节点内容;每一节点内容包括该节点的顺序关系内容和任务内容;每一节点的顺序关系内容包括位于该节点之前且相邻的前置节点,和/或,位于该节点之后且相邻的后置节点;属于所述任务类型的每一节点的任务内容为该节点所表征的目标任务,属于所述任务类型以外的节点类型的每一节点的任务内容为该节点所表征的关于顺序关系的功能内容;
判断模块,用于基于所述节点信息中的每一节点的节点类型,判断所述目标流程图是否符合预设格式规则;
执行模块,用于在所述目标流程图符合所述预设格式规则的情况下,基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务,以实现按照所述目标流程图所表征的执行顺序执行各个目标任务。
7.根据权利要求6所述的装置,其特征在于,所述判断模块,包括:
判断单元,用于基于所述节点信息中的每一节点的节点类型,判断所述目标流程图中属于开始类型的节点和属于结束类型的节点的数量是否为一个,以及,属于并行网关类型的节点的个数是否为偶数;
若判断结果均为是,判定所述目标流程图符合预设格式规则。
8.根据权利要求6所述的装置,其特征在于,所述执行模块,还用于在基于所述节点信息,利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务之前,对预先设定的上下文变量信息进行初始化处理;其中,所述上下文变量信息包括用于记录表征任务执行状态的hash表和任务执行过程中产生的变量;
所述装置还包括:
记录模块,用于在利用指定线程池中的线程,依次执行所述目标流程图中每一属于任务类型的节点所表征的目标任务的过程中,在所述上下文变量信息中,记录当前所执行的目标任务的任务执行状态和产生的变量。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211132107.2A CN115564190A (zh) | 2022-09-16 | 2022-09-16 | 一种执行工作流的方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211132107.2A CN115564190A (zh) | 2022-09-16 | 2022-09-16 | 一种执行工作流的方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115564190A true CN115564190A (zh) | 2023-01-03 |
Family
ID=84741399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211132107.2A Pending CN115564190A (zh) | 2022-09-16 | 2022-09-16 | 一种执行工作流的方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115564190A (zh) |
-
2022
- 2022-09-16 CN CN202211132107.2A patent/CN115564190A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108280023B (zh) | 任务执行方法、装置和服务器 | |
CN108984388A (zh) | 一种生成自动化测试用例的方法及终端设备 | |
WO2022048648A1 (zh) | 实现自动构建模型的方法、装置、电子设备和存储介质 | |
CN111221643A (zh) | 任务处理方法和任务处理装置 | |
CN112948110B (zh) | 云应用的拓扑与编排系统、方法、存储介质及电子设备 | |
CN112559525B (zh) | 数据检查系统、方法、装置和服务器 | |
CN110633959A (zh) | 基于图结构的审批任务创建方法、装置、设备及介质 | |
CN118245032B (zh) | 面向客户关系管理的属性联动引擎方法及系统 | |
CN115185496A (zh) | 一种基于Flowable工作流引擎的业务编排方法 | |
Challita et al. | Specifying semantic interoperability between heterogeneous cloud resources with the FCLOUDS formal language | |
CN111736930B (zh) | 程序前后端接口调用方法、装置、计算机设备及存储介质 | |
CN113778878A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
CN112199426A (zh) | 微服务架构下的接口调用管理方法、装置、服务器及介质 | |
CN117234582A (zh) | 一种项目代码处理方法、装置、电子设备及存储介质 | |
CN114416669B (zh) | 群组过程文件管理方法、装置、网盘及存储介质 | |
CN115564190A (zh) | 一种执行工作流的方法、装置、电子设备及存储介质 | |
WO2022253165A1 (zh) | 调度方法、系统、服务器和计算机可读存储介质 | |
CN116009847A (zh) | 代码生成方法、装置、电子设备及存储介质 | |
CN115730022A (zh) | 采用事件触发和流程编排的数据处理构建方法及平台系统 | |
CN113722141A (zh) | 数据任务的延迟原因确定方法、装置、电子设备及介质 | |
CN113656295A (zh) | 测试数据的自动生成方法、装置、电子设备及存储介质 | |
CN106598687A (zh) | 一种脚本预热方法和装置 | |
Chama et al. | Formalization and analysis of timed BPEL | |
CN117290113B (zh) | 一种任务处理方法、装置、系统和存储介质 | |
WO2024159423A1 (zh) | Opc ua信息模型的语义验证方法、装置、设备及存储介质 |
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 |