一种工作流的生成方法、装置、电子设备及可读存储介质与流程

文档序号:33104063发布日期:2023-02-01 01:09阅读:28来源:国知局
一种工作流的生成方法、装置、电子设备及可读存储介质与流程

1.本技术涉及工作流技术领域,尤其是涉及一种工作流的生成方法、装置、电子设备及可读存储介质。


背景技术:

2.工作流是为了完成某个业务目标,将一组任务组织起来,其中定义了任务的触发顺序和触发条件,并允许在不同的部门、角色之间传递文档和信息,提供统一的界面进行流程审批、流转、回退等功能。
3.工作流通常会随着企业的规章制度调整或者新产品上线等情况发生变化,经常需要调整。但现有的工作流产品提供的流程图设计器都是基于bpmn2.0规范设计的,包含很多业务人员很难理解和使用的节点类型(例如并行网关、排它网关等)。因此在实际应用场景中,业务人员较难独立调整或者编辑工作流,流程的变化通常需要技术人员参与,工作效率较低。


技术实现要素:

4.有鉴于此,本技术的目的在于提供一种工作流的生成方法、装置、电子设备及可读存储介质,以提高业务人员在调整或者编辑工作流时的便捷性,进而提高工作效率。
5.第一方面,本技术实施例提供了一种工作流的生成方法,包括:
6.步骤s1:获取初始工作流;所述初始工作流是通过目标工作流设计器绘制出来的;所述目标工作流设计器为屏蔽了网关节点的工作流设计器;
7.步骤s2:查询所述初始工作流中前置节点为空的节点,以将该节点确定为起始节点,以及将该起始节点作为第一节点;所述前置节点用于表示所述初始工作流的流向关系中当前节点的前一个节点;
8.步骤s3:将所述初始工作流中与所述第一节点相邻且位于该第一节点之后的节点确定为第二节点;
9.步骤s4:根据所述初始工作流中所述第一节点与其他节点之间的连接关系,以及所述第二节点与其他节点之间的连接关系,确定所述第二节点对应的处理方式,以通过所述处理方式对所述第二节点进行处理;重复执行步骤s3至步骤s4,以及在步骤重复执行的过程中,将步骤s3中的所述第二节点确定为新的第一节点,直至生成符合预置规范的目标工作流时停止循环。
10.结合第一方面,本技术实施例提供了第一方面的第一种可能的实施方式,其中,所述根据所述初始工作流中所述第一节点与其他节点之间的连接关系,以及所述第二节点与其他节点之间的连接关系,确定所述第二节点对应的处理方式,以通过所述处理方式对所述第二节点进行处理,包括:
11.当所述第一节点只属于一个节点的前置节点时,建立所述第一节点与所述第二节点之间的连线。
12.结合第一方面,本技术实施例提供了第一方面的第二种可能的实施方式,其中,所述根据所述初始工作流中所述第一节点与其他节点之间的连接关系,以及所述第二节点与其他节点之间的连接关系,确定所述第二节点对应的处理方式,以通过所述处理方式对所述第二节点进行处理,包括:
13.当所述第一节点属于至少两个节点的前置节点时,判断所述第一节点的节点类型是否为条件判断节点;
14.当所述第一节点的节点类型不是条件判断节点时,创建节点类型为并行网关节点的第一网关节点,以及建立所述第一节点与所述第一网关节点之间的连线;以及针对每个所述第二节点,分别建立所述第一网关节点与该第二节点之间的连线,以及对所述第一网关节点按照先入后出原则压入当前栈内;所述第一网关节点用于在接收到所述第一节点发送的任务完成信息时,向与该第一网关节点连接的各个所述第二节点发送任务开始信息,以使各个所述第二节点开始执行各自对应的待执行任务;
15.当所述第一节点的节点类型为条件判断节点时,创建节点类型为排它网关节点的第二网关节点,以及建立所述第一节点与所述第二网关节点之间的连线,以及针对每个所述第二节点,建立所述第二网关节点与该第二节点之间的连线,以及对所述第二网关节点按照先入后出原则压入当前栈内;所述第二网关节点用于根据所述第一节点发送的条件判断结果,从与该第二网关节点连接的多个第二节点中选择出所述条件判断结果对应的目标第二节点,以及向所述目标第二节点发送任务开始信息,以使该目标第二节点开始执行自身对应的待执行任务。
16.结合第一方面的第二种可能的实施方式,本技术实施例提供了第一方面的第三种可能的实施方式,其中,所述根据所述初始工作流中所述第一节点与其他节点之间的连接关系,以及所述第二节点与其他节点之间的连接关系,确定所述第二节点对应的处理方式,以通过所述处理方式对所述第二节点进行处理,包括:
17.当所述第一节点与其他节点共同作为所述第二节点的前置节点时,判断当前栈中是否存在当前栈顶节点;
18.若存在所述当前栈顶节点,则获取所述当前栈顶节点,继续判断当前栈中是否存在当前栈顶节点及后续步骤,直至当前栈中不存在当前栈顶节点时停止,以获取到的各个当前栈顶节点以及各个当前栈顶节点的出栈顺序;
19.针对每个当前栈顶节点,判断当前是否存在与该当前栈顶节点的节点类型相同的第三节点;以及若不存在与该当前栈顶节点的节点类型相同的第三节点,则创建与该当前栈顶节点的节点类型相同的第三节点,以得到每个当前栈顶节点各自对应的第三节点;以及按照各个当前栈顶节点的出栈顺序,依次通过各个当前栈顶节点对应的第三节点,建立第一节点与第二节点之间的连线;以及若存在第三节点,则按照各个当前栈顶节点的出栈顺序,依次通过各个当前栈顶节点对应的第三节点,建立第一节点与第二节点之间的连线。
20.结合第一方面,本技术实施例提供了第一方面的第四种可能的实施方式,其中,所述查询初始工作流中前置节点为空的节点,以将该节点确定为起始节点之前,还包括:
21.对所述初始可视化工作流中的节点关系进行解析,确定所述初始可视化工作流中各个节点的前置节点,以将各个节点与各个节点的前置节点之间的节点关系存储至数据库中;
22.所述查询所述初始工作流中前置节点为空的节点,以将该节点确定为起始节点,包括:
23.从所述数据库存储的节点关系中查询所述初始工作流中前置节点为空的节点,以将该节点确定为起始节点。
24.结合第一方面,本技术实施例提供了第一方面的第五种可能的实施方式,其中,所述方法应用于后端服务器中;所述获取初始工作流之前,所述方法还包括:
25.接收第一用户端发送的所述初始工作流,以对所述初始工作流进行存储;所述初始工作流是第一用户通过所述第一用户端中安装的所述目标工作流设计器绘制出来的;所述后端服务器中存储有多个所述初始工作流;每个所述初始工作流对应各自的流程类型。
26.结合第一方面的第五种可能的实施方式,本技术实施例提供了第一方面的第六种可能的实施方式,其中,所述获取初始工作流,包括:
27.接收第二用户端发送的查询请求,以将预先存储的多个所述初始工作流以及每个所述初始工作流对应的编号返回至所述第二用户端,以使所述第二用户端响应于第二用户针对所述初始工作流的选择操作,以将选择出来的所述初始工作流对应的编号作为所述目标编号发送至所述后端服务器中;
28.接收所述第二用户端发送的所述目标编号,以从预先存储的多个所述初始工作流中,获取所述目标编号对应的初始工作流。
29.第二方面,本技术实施例还提供一种工作流的生成装置,包括:
30.获取模块,用于执行步骤s1;所述步骤s1为获取初始工作流;所述初始工作流是通过目标工作流设计器绘制出来的;所述目标工作流设计器为屏蔽了网关节点的工作流设计器;
31.查询模块,用于执行步骤s2;所述步骤s2为查询所述初始工作流中前置节点为空的节点,以将该节点确定为起始节点,以及将该起始节点作为第一节点;所述前置节点用于表示所述初始工作流的流向关系中当前节点的前一个节点;
32.确定模块,用于执行步骤s3;所述步骤s3为将所述初始工作流中与所述第一节点相邻且位于该第一节点之后的节点确定为第二节点;
33.处理模块,用于执行步骤s4;所述步骤s4为根据所述初始工作流中所述第一节点与其他节点之间的连接关系,以及所述第二节点与其他节点之间的连接关系,确定所述第二节点对应的处理方式,以通过所述处理方式对所述第二节点进行处理;重复执行步骤s3至步骤s4,以及在步骤重复执行的过程中,将步骤s3中的所述第二节点确定为新的第一节点,直至生成符合预置规范的目标工作流时停止循环。
34.结合第二方面,本技术实施例提供了第二方面的第一种可能的实施方式,其中,所述处理模块在用于执行步骤s4时,具体用于:
35.当所述第一节点只属于一个节点的前置节点时,建立所述第一节点与所述第二节点之间的连线。
36.结合第二方面,本技术实施例提供了第二方面的第二种可能的实施方式,其中,所述处理模块在用于执行步骤s4时,具体用于:
37.当所述第一节点属于至少两个节点的前置节点时,判断所述第一节点的节点类型是否为条件判断节点;
38.当所述第一节点的节点类型不是条件判断节点时,创建节点类型为并行网关节点的第一网关节点,以及建立所述第一节点与所述第一网关节点之间的连线;以及针对每个所述第二节点,分别建立所述第一网关节点与该第二节点之间的连线,以及对所述第一网关节点按照先入后出原则压入当前栈内;所述第一网关节点用于在接收到所述第一节点发送的任务完成信息时,向与该第一网关节点连接的各个所述第二节点发送任务开始信息,以使各个所述第二节点开始执行各自对应的待执行任务;
39.当所述第一节点的节点类型为条件判断节点时,创建节点类型为排它网关节点的第二网关节点,以及建立所述第一节点与所述第二网关节点之间的连线,以及针对每个所述第二节点,建立所述第二网关节点与该第二节点之间的连线,以及对所述第二网关节点按照先入后出原则压入当前栈内;所述第二网关节点用于根据所述第一节点发送的条件判断结果,从与该第二网关节点连接的多个第二节点中选择出所述条件判断结果对应的目标第二节点,以及向所述目标第二节点发送任务开始信息,以使该目标第二节点开始执行自身对应的待执行任务。
40.结合第二方面的第二种可能的实施方式,本技术实施例提供了第二方面的第三种可能的实施方式,其中,所述处理模块在用于执行步骤s4时,具体用于:
41.当所述第一节点与其他节点共同作为所述第二节点的前置节点时,判断当前栈中是否存在当前栈顶节点;
42.若存在所述当前栈顶节点,则获取所述当前栈顶节点,继续判断当前栈中是否存在当前栈顶节点及后续步骤,直至当前栈中不存在当前栈顶节点时停止,以获取到的各个当前栈顶节点以及各个当前栈顶节点的出栈顺序;
43.针对每个当前栈顶节点,判断当前是否存在与该当前栈顶节点的节点类型相同的第三节点;以及若不存在与该当前栈顶节点的节点类型相同的第三节点,则创建与该当前栈顶节点的节点类型相同的第三节点,以得到每个当前栈顶节点各自对应的第三节点;以及按照各个当前栈顶节点的出栈顺序,依次通过各个当前栈顶节点对应的第三节点,建立第一节点与第二节点之间的连线;以及若存在第三节点,则按照各个当前栈顶节点的出栈顺序,依次通过各个当前栈顶节点对应的第三节点,建立第一节点与第二节点之间的连线。
44.结合第二方面,本技术实施例提供了第二方面的第四种可能的实施方式,其中,还包括:
45.解析模块,用于在所述查询模块执行步骤s2之前,对所述初始可视化工作流中的节点关系进行解析,确定所述初始可视化工作流中各个节点的前置节点,以将各个节点与各个节点的前置节点之间的节点关系存储至数据库中;
46.所述查询模块在用于执行步骤s2时,具体用于:
47.从所述数据库存储的节点关系中查询所述初始工作流中前置节点为空的节点,以将该节点确定为起始节点。
48.结合第二方面,本技术实施例提供了第二方面的第五种可能的实施方式,其中,所述装置驻留于后端服务器中;所述装置还包括:
49.接收模块,用于在所述获取模块执行步骤s1之前,接收第一用户端发送的所述初始工作流,以对所述初始工作流进行存储;所述初始工作流是第一用户通过所述第一用户端中安装的所述目标工作流设计器绘制出来的;所述后端服务器中存储有多个所述初始工
作流;每个所述初始工作流对应各自的流程类型。
50.结合第二方面的第五种可能的实施方式,本技术实施例提供了第二方面的第六种可能的实施方式,其中,所述获取模块在执行步骤s1时,具体用于:
51.接收第二用户端发送的查询请求,以将预先存储的多个所述初始工作流以及每个所述初始工作流对应的编号返回至所述第二用户端,以使所述第二用户端响应于第二用户针对所述初始工作流的选择操作,以将选择出来的所述初始工作流对应的编号作为所述目标编号发送至所述后端服务器中;
52.接收所述第二用户端发送的所述目标编号,以从预先存储的多个所述初始工作流中,获取所述目标编号对应的初始工作流。
53.第三方面,本技术实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面中任一种可能的实施方式中的步骤。
54.第四方面,本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面中任一种可能的实施方式中的步骤。
55.本技术实施例提供的一种工作流的生成方法、装置、电子设备及可读存储介质,步骤s1:获取初始工作流;所述初始工作流是通过目标工作流设计器绘制出来的;所述目标工作流设计器为屏蔽了网关节点的工作流设计器;步骤s2:查询所述初始工作流中前置节点为空的节点,以将该节点确定为起始节点,以及将该起始节点作为第一节点;所述前置节点用于表示所述初始工作流的流向关系中当前节点的前一个节点;步骤s3:将所述初始工作流中与所述第一节点相邻且位于该第一节点之后的节点确定为第二节点;步骤s4:根据所述初始工作流中所述第一节点与其他节点之间的连接关系,以及所述第二节点与其他节点之间的连接关系,确定所述第二节点对应的处理方式,以通过所述处理方式对所述第二节点进行处理;重复执行步骤s3至步骤s4,以及在步骤重复执行的过程中,将步骤s3中的所述第二节点确定为新的第一节点,直至生成符合预置规范的目标工作流时停止循环。
56.考虑到现有的工作流设计器中包含有业务人员很难理解和使用的网关节点,导致业务人员较难独立调整或者编辑工作流的问题,基于此,本技术中通过屏蔽了网关节点的目标工作流设计器绘制初始工作流,使得业务人员能够独立调整或者编辑工作流。其中,由于目标工作流设计器中屏蔽了网关节点,使得绘制出的初始工作流中也未包含网关节点,这就导致该初始工作流是不符合预置规范的工作流,而只有符合预置规范的工作流才能被正常部署运行。因此本实施例中,在绘制出初始工作流之后,通过对初始工作流中的各个节点进行处理,生成了符合预置规范的目标工作流。通过上述方法,在生成符合预置规范的目标工作流的过程中,业务人员仅需通过目标工作流设计器绘制出初始工作流即可,后续自动对初始工作流中的各个节点进行处理,生成符合预置规范的目标工作流,整个过程不需要其他技术人员参与,有利于提高业务人员在调整或者编辑工作流时的便捷性,进而提高工作效率。
57.为使本技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
58.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
59.图1示出了本技术实施例所提供的一种工作流的生成方法的流程图;
60.图2示出了本技术实施例所提供的一种初始工作流的示意图;
61.图3示出了本技术实施例所提供的一种目标工作流的示意图;
62.图4示出了本技术实施例所提供的一种工作流的生成装置的结构示意图;
63.图5示出了本技术实施例所提供的一种电子设备的结构示意图。
具体实施方式
64.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
65.考虑到实际应用场景中,业务人员较难独立调整或者编辑工作流,流程的变化通常需要技术人员参与,工作效率较低的问题。基于此,本技术实施例提供了一种工作流的生成方法、装置、电子设备及可读存储介质,以提高业务人员在调整或者编辑工作流时的便捷性,进而提高工作效率。下面通过实施例进行描述。
66.实施例一:
67.为便于对本实施例进行理解,首先对本技术实施例所公开的一种工作流的生成方法进行详细介绍。该方法应用于后端服务器,图1示出了本技术实施例所提供的一种工作流的生成方法的流程图,如图1所示,包括以下步骤s1-步骤s4:
68.步骤s1:获取初始工作流;初始工作流是通过目标工作流设计器绘制出来的;目标工作流设计器为屏蔽了网关节点的工作流设计器。
69.工作流是为了完成某个业务目标,将一组任务组织起来,其中定义了任务的触发顺序和触发条件,并允许在不同的部门、角色之间传递文档和信息,提供统一的界面进行流程审批、流转、回退等功能。工作流要应用到业务系统中,需要先进行流程图设计,其设计过程是采用可视化的方式进行,将不同类型的流程节点拖拽到流程图上,并通过连线来确定流程的分支与走向。
70.现有的工作流设计器中通常包含有业务人员很难理解和使用的网关节点(例如并行网关节点和排它网关节点),导致业务人员较难独立调整或者编辑工作流的问题,因此,本实施例中,通过将工作流设计器中的网关节点进行屏蔽,得到屏蔽了网关节点的目标工作流设计器。此时,目标工作流设计器中的节点类型仅包括:开始节点、结束节点、用户审批节点、自动任务处理节点、条件判断节点、会签节点、子流程节点。这时,业务人员可以仅通
过拖拉拽的方式,独立使用目标工作流设计器绘制初始工作流。
71.其中,自动任务处理节点用于根据预设的处理规则,自动处理流转到该节点的数据或任务,自动任务处理节点中包含有预设的处理规则。条件判断节点中可以设置判断条件。会签节点采取的是投票机制,例如,一个审批任务,分配给了5个人,这5个人均对该审批任务进行处理,得到5个审批结果,统计这5个审批结果中,审批结果为同意的数量,根据该数量确定是否审批通过(例如,该数量为至少3时,审批通过)。子流程节点指的是,当在一个流程中,在不同地方均出现相同的一段流程时,则将这一段流程设置为子流程,该子流程可以重复调用。
72.该实施例中,网关节点包括并行网关节点和排它网关节点,通常情况下,按照工作流的流向,与网关节点相连接的下一节点有多个。其中,并行网关节点的作用是使得与该并行网关节点相连接的各个下一个节点均执行自身的任务。排它网关节点的作用是使得与该并行网关节点相连接的各个下一节点中,满足判断条件的下一节点执行自身的任务。以审批流程为例,与网关节点相连接的下一节点分别为组长审批节点和项目经理审批节点,当该网关节点为并行网关节点时,组长审批节点和项目经理审批节点均需要执行审批任务,当该网关节点为排它网关节点时,组长审批节点和项目经理节点其中一个执行审批任务即可。
73.在一种可能的实施方式中,在执行步骤s1获取初始工作流之前,具体还可以按照以下步骤执行:
74.s0:接收第一用户端发送的初始工作流,以对初始工作流进行存储;初始工作流是第一用户通过第一用户端中安装的目标工作流设计器绘制出来的;后端服务器中存储有多个初始工作流;每个初始工作流对应各自的流程类型。
75.该实施例中,目标工作流设计器安装在第一用户端中,第一用户可以根据所需的流程类型(即业务目标,例如请假审批流程),通过第一用户端中安装的目标工作流设计器绘制出该流程类型对应的初始工作流。
76.第一用户在使用第一用户端绘制出初始工作流后,通过第一用户端将该初始工作流发送至后端服务器中,后端服务器接收各个第一用户端发送的初始工作流,以对各个初始工作流进行存储。
77.在一种可能的实施方式中,在执行步骤s1获取初始工作流时,具体可以按照以下步骤s101-s102执行:
78.s101:接收第二用户端发送的查询请求,以将预先存储的多个初始工作流以及每个初始工作流对应的编号返回至第二用户端,以使第二用户端响应于第二用户针对初始工作流的选择操作,以将选择出来的初始工作流对应的编号作为目标编号发送至后端服务器中。
79.该实施例中,第二用户端可以为第一用户端或者除第一用户端之外的其他用户端。当需要进行工作流部署运行时,第二用户通过第二用户端向后端服务器中发送查询请求。后端服务器接收到该查询请求后,将预先存储的多个初始工作流以及每个初始工作流对应的编号返回至第二用户端。第二用户根据所需要部署的工作流的流程类型(例如需要部署的流程类型为请假审批流程),从第二用户端上显示的各个初始工作流中选择出该流程类型对应的初始工作流,第二用户端将该流程类型对应的初始工作流的编号作为目标编
号发送至后端服务器中。
80.s102:接收第二用户端发送的目标编号,以从预先存储的多个初始工作流中,获取目标编号对应的初始工作流。
81.后端服务器中接收到第二用户端发送的目标编号后,从预先存储的多个初始工作流中,获取目标编号(即该流程类型)对应的初始工作流。
82.步骤s2:查询初始工作流中前置节点为空的节点,以将该节点确定为起始节点,以及将该起始节点作为第一节点;前置节点用于表示初始工作流的流向关系中当前节点的前一个节点。
83.在一种可能的实施方式中,在执行步骤s2查询初始工作流中前置节点为空的节点,以将该节点确定为起始节点之前,具体还可以按照以下步骤s201执行:
84.s201:对初始可视化工作流中的节点关系进行解析,确定初始可视化工作流中各个节点的前置节点,以将各个节点与各个节点的前置节点之间的节点关系存储至数据库中。其中,节点关系指的是,各个节点的前置节点为哪个节点。
85.在执行步骤s2查询初始工作流中前置节点为空的节点,以将该节点确定为起始节点时,具体可以按照以下步骤s202执行:
86.s202:从所述数据库存储的节点关系中查询所述初始工作流中前置节点为空的节点,以将该节点确定为起始节点。
87.图2示出了本技术实施例所提供的一种初始工作流的示意图,如图2所示,节点a的前置节点为起始节点,节点b的前置节点为节点a,节点c的前置节点为节点b,节点g的前置节点为节点e、节点f以及节点d。
88.该实施例中,起始节点没有前置节点,也就是说起始节点的前置节点为空,因此,通过查询初始工作流中前置节点为空的节点,可以确定出起始节点。
89.步骤s3:将初始工作流中与第一节点相邻且位于该第一节点之后的节点确定为第二节点。
90.该实施例中,上一步中确定出来的第一节点为起始节点,在初始工作流中,与起始节点相邻且位于该起始节点之后的节点为节点a,此时将节点a确定为第二节点。
91.步骤s4:根据初始工作流中第一节点与其他节点之间的连接关系,以及第二节点与其他节点之间的连接关系,确定第二节点对应的处理方式,以通过处理方式对第二节点进行处理;重复执行步骤s3至步骤s4,以及在步骤重复执行的过程中,将步骤s3中的第二节点确定为新的第一节点,直至生成符合预置规范的目标工作流时停止循环。
92.本实施例中,预置规范具体为bpmn2.0(业务流程建模与标注,business process modeling notation)规范。
93.在一种可能的实施方式中,在执行步骤s4根据初始工作流中第一节点与其他节点之间的连接关系,以及第二节点与其他节点之间的连接关系,确定第二节点对应的处理方式,以通过处理方式对第二节点进行处理时,具体可以按照以下步骤s401执行:
94.s401:当第一节点只属于一个节点的前置节点时,建立第一节点与第二节点之间的连线。
95.示例性的,如图2所示,当第一节点为起始节点,第二节点为节点a时,由于起始节点只属于节点a的前置节点,因此,图3示出了本技术实施例所提供的一种目标工作流的示
意图,如图3所示,建立第一节点(起始节点)与第二节点(节点a)之间的连线。
96.该实施例中,若第一节点的节点类型为以下任意一种时:开始节点、用户审批节点、条件节点,则直接建立第一节点与第二节点之间的连线。若第一节点的节点类型为以下任意一种时:自动任务处理节点、会签节点、子流程节点,则在第一节点与第二节点之间创建一个用户审批节点(例如节点h),然后通过该用户审批节点(节点h)建立第一节点与第二节点之间的连线(即建立第一节点与该用户审批节点(节点h)之间的连线,以及建立该用户审批节点(节点h)与第二节点之间的连线)。
97.接下来,将第二节点(节点a)确定为新的第一节点。继续执行:将初始工作流中与新的第一节点(节点a)相邻且位于该第一节点之后的节点确定为新的第二节点。如图2所示,确定出的新的第二节点为节点b。
98.由于节点a(第一节点)只属于节点b(第二节点)的前置节点,因此,如图3所示,建立第一节点(节点a)与第二节点(节点b)之间的连线。然后将该第二节点(节点b)作为新的第一节点。继续执行:将初始工作流中与新的第一节点(节点b)相邻且位于该第一节点之后的节点(即节点c和节点d)确定为新的第二节点。
99.在一种可能的实施方式中,在执行步骤s4根据初始工作流中第一节点与其他节点之间的连接关系,以及第二节点与其他节点之间的连接关系,确定第二节点对应的处理方式,以通过处理方式对第二节点进行处理时,具体可以按照以下步骤s402-s404执行:
100.s402:当第一节点属于至少两个节点的前置节点时,判断第一节点的节点类型是否为条件判断节点;
101.s403:当第一节点的节点类型不是条件判断节点时,创建节点类型为并行网关节点的第一网关节点,以及建立第一节点与第一网关节点之间的连线;以及针对每个第二节点,分别建立第一网关节点与该第二节点之间的连线,以及对第一网关节点按照先入后出原则压入当前栈内;第一网关节点用于在接收到第一节点发送的任务完成信息时,向与该第一网关节点连接的各个第二节点发送任务开始信息,以使各个第二节点开始执行各自对应的待执行任务;
102.s404:当第一节点的节点类型为条件判断节点时,创建节点类型为排它网关节点的第二网关节点,以及建立第一节点与第二网关节点之间的连线;以及针对每个第二节点,建立第二网关节点与该第二节点之间的连线,以及对第二网关节点按照先入后出原则压入当前栈内;第二网关节点用于根据第一节点发送的条件判断结果,从与该第二网关节点连接的多个第二节点中选择出条件判断结果对应的目标第二节点,以及向目标第二节点发送任务开始信息,以使该目标第二节点开始执行自身对应的待执行任务。
103.该实施例中,节点b(第一节点)属于节点c和节点d的前置节点,此时判断第一节点(节点b)的节点类型是否为条件判断节点。如图2所示,该实施例中的节点b的节点类型不是条件判断节点。此时,如图3所示,创建节点类型为并行网关节点的第一网关节点(例如b1),以及建立节点b(第一节点)与该第一网关节点b1之间的连线,以及建立第一网关节点b1与节点c(第二节点)之间的连线,以及建立第一网关节点b1与节点d(第二节点)之间的连线。以及对第一网关节点b1按照先入后出原则压入当前栈内。
104.其中,栈作为一个空间存在,栈中的各个节点的排列是按照先入后出的原则进行排列的。该实施例中,将第一网关节点b1按照先入后出的原则放入当前栈中,此时,第一网
关节点b1为当前栈中的当前栈顶节点。
105.接下来,将第二节点(节点c)作为新的第一节点,继续执行:将初始工作流中与新的第一节点(节点c)相邻且位于该第一节点之后的节点(即条件判断节点)确定为新的第二节点。如图2所示,由于节点c(第一节点)只属于条件判断节点(第二节点)的前置节点,因此,如图3所示,建立第一节点(节点c)与第二节点(条件判断节点)之间的连线。以及将条件判断节点作为新的第一节点。
106.将初始工作流中与新的第一节点(条件判断节点)相邻且位于该第一节点之后的节点(节点e和节点f)确定为第二节点。此时,第一节点(条件判断节点)属于两个节点的前置节点,因此判断第一节点的节点类型是否为条件判断节点。
107.该实施例中,第一节点(条件判断节点)的节点类型为条件判断节点,此时创建节点类型为排它网关节点的第二网关节点c1,如图3所示,建立条件判断节点与排它网关节点c1之间的连线。
108.针对第二节点(节点e)而言,建立第二网关节点c1与第二节点(节点e)之间的连线,以及对第二网关节点c1按照先入后出原则压入当前栈内。此时,该实施例中,当前栈中,第二网关节点c1在第一网关节点b1的上面,第二网关节点c1为当前栈中的当前栈顶节点。
109.将第二节点(节点e)作为新的第一节点,继续执行:将初始工作流中与新的第一节点(节点e)相邻且位于该第一节点之后的节点(节点g)确定为第二节点。
110.在一种可能的实施方式中,在执行步骤s4根据初始工作流中第一节点与其他节点之间的连接关系,以及第二节点与其他节点之间的连接关系,确定第二节点对应的处理方式,以通过处理方式对第二节点进行处理时,具体可以按照以下步骤s405-s407执行:
111.s405:当第一节点与其他节点共同作为所述第二节点的前置节点时,判断当前栈中是否存在当前栈顶节点;
112.s406:若存在当前栈顶节点,则获取该当前栈顶节点,继续判断当前栈中是否存在当前栈顶节点及后续步骤,直至当前栈中不存在当前栈顶节点时停止,以获取到的各个当前栈顶节点以及各个当前栈顶节点的出栈顺序;
113.s407:针对每个当前栈顶节点,判断当前是否存在与该当前栈顶节点的节点类型相同的第三节点;以及若不存在与该当前栈顶节点的节点类型相同的第三节点,则创建与该当前栈顶节点的节点类型相同的第三节点,以得到每个当前栈顶节点各自对应的第三节点;以及按照各个当前栈顶节点的出栈顺序,依次通过各个当前栈顶节点对应的第三节点,建立第一节点与第二节点之间的连线;以及若存在第三节点,则按照各个当前栈顶节点的出栈顺序,依次通过各个当前栈顶节点对应的第三节点,建立第一节点与第二节点之间的连线。
114.该实施例中,由于第一节点(节点e)与其他节点(节点f和节点d)共同作为第二节点(节点g)的前置节点,此时,判断当前栈中是否存在当前栈顶节点。本实施例中,当前栈中存在当前栈顶节点,具体为第二网关节点c1,则获取该第二网关节点c1。继续判断当前栈中是否存在当前栈顶节点,本实施例中,此时当前栈中存在当前栈顶节点具体为第一网关节点b1,则获取该第一网关节点b1。继续判断当前栈中是否存在当前栈顶节点,本实施例中,此时当前栈中不存在当前栈顶节点,停止继续判断。本实施例中,第一网关节点b1与第二网关节点c1的出栈顺序为第二网关节点c1第一个出栈,第一网关节点b1第二个出栈。
115.针对第二网关节点c1,在将初始工作流转换为目标工作流的过程中,判断当前处于转换过程中的目标工作流是否存在与该第二网关节点c1的节点类型相同的第三节点(注此时第三节点并非第二网关节点)。如图3所示,当不存在与第二网关节点c1的节点类型相同的第三节点时,创建与第二网关节点c1的节点类型相同的第三节点(即创建节点类型为排它网关节点的第三节点c2)。
116.针对第一网关节点b1,判断当前处于转换过程中的目标工作流是否存在与该第一网关节点b1的节点类型相同的第三节点。当不存在与该第一网关节点b1的节点类型相同的第三节点时,创建与第一网关节点b1的节点类型相同的第三节点(即创建节点类型为并行网关节点的第三节点c2)。此时得到了每个当前栈顶节点(第一网关节点b1和第二网关节点c1)各自对应的第三节点(b2和c2)。
117.如图3所示,按照第二网关节点c1(第一个出栈)和第一网关节点b1(第二个出栈)的出栈顺序,依次通过第三节点c2和第三节点b2,建立第一节点e与第二节点g之间的连接。
118.将第二节点(节点g)作为新的第一节点。继续执行:将初始工作流中与新的第一节点(节点g)相邻且位于该第一节点之后的节点(结束节点)确定为第二节点,如图2所示,由于第二节点(节点g)只属于结束节点的前置节点,因此,如图3所示,建立节点g与结束节点之间的连线。
119.在建立条件判断节点与第二网关节点c1之间的连线之后,针对第二节点(节点f)而言,建立第二网关节点c1与第二节点(节点f)之间的连线,以及对第二网关节点c1按照先入后出原则压入当前栈内。此时,当前栈中进行包含第二网关节点c1。将第二节点(节点f)作为新的第一节点,继续执行:将初始工作流中与新的第一节点(节点f)相邻且位于该第一节点之后的节点(节点g)确定为第二节点。
120.该实施例中,由于第一节点(节点f)与其他节点(节点e和节点d)共同作为第一节点(节点g)的前置节点,此时,判断当前栈中是否存在当前栈顶节点。本实施例中,当前栈中存在当前栈顶节点,具体为第二网关节点c1,则获取该第二网关节点c1,继续判断当前栈中是否存在当前栈顶节点,本实施例中,此时当前栈中不存在当前栈顶节点,停止继续判断。本实施例中,仅有一个当前栈顶节点即第二网关节点c1,即出栈顺序为第二网关节点c1第一个出栈。
121.判断当前的目标工作流中是否存在与第二网关节点c1的节点类型相同的第三节点。此时,当前的目标工作流中存在与第二网关节点c1的节点类型相同的第三节点(即为第三节点c2)时,通过该第三节点c2建立第一节点(节点f)与第二节点(节点g)之间的连线。
122.在建立节点b与该第一网关节点b1之间的连线之后,针对第二节点(节点d)而言,建立第一网关节点b1与第二节点(节点d)之间的连线,并对第一网关节点b1按照先入后出原则压入当前栈内。此时,当前栈中仅包含第一网关节点b1。
123.将第二节点(节点d)作为新的第一节点,如图2所示,继续执行:将初始工作流中与第一节点(节点d)相邻且位于该第一节点之后的节点(即节点g)确定为第二节点。
124.该实施例中,由于第一节点(节点d)与其他节点(节点e和节点f)共同作为第二节点(节点g)的前置节点,此时,判断当前栈中是否存在当前栈顶节点。本实施例中,当前栈中存在当前栈顶节点,具体为第一网关节点b1,则获取该第一网关节点b1,继续判断当前栈中是否存在当前栈顶节点,本实施例中,此时当前栈中不存在当前栈顶节点,停止继续判断。
本实施例中,仅有一个当前栈顶节点即第一网关节点b1,即出栈顺序为第一网关节点b1第一个出栈。
125.以及判断当前是否存在与第一网关节点b1的节点类型相同的第三节点。该实施例中,当存在与第一网关节点b1的节点类型相同的第三节点(即为第三节点b2)时,通过该第一网关节点b1对应的第三节点b2建立第一节点(节点d)与第二节点(节点g)之间的连线。
126.通过上述方法,如图3所示,生成了符合预置规范的目标工作流。对该目标工作流进行部署发布即可上线应用。
127.本实施例中,该目标工作流可以被部署至后端服务器中,也可以通过后端服务器将该目标工作流发送至其他用户端(具体为第一用户端或者第二用户端,或者除第一用户端和第二用户端之外的用户端)中,以部署至其他用户端中。
128.如图3所示,将目标工作流部署上线之后,该目标工作流具体可以通过以下方式流转执行:
129.当起始节点被触发后,起始节点向节点a发送任务开始信息,节点a接收到任务开始信息后执行自身的任务。示例性的,当节点a的任务为用户审批任务时,该节点a向其对应的审批者的用户端发送审批任务,该审批者执行完该审批任务后,通过用户端向节点a返回任务执行结果,当该任务执行结果为通过审批时,节点a向节点b发送任务完成信息,以使节点b执行自身的任务。当节点b执行完自身的任务时,向节点b1发送任务完成信息,节点b1接收到节点b发送的任务完成信息时,向节点c和节点d分别发送任务开始信息,以使节点c和节点d开始执行自身对应的待执行任务。
130.节点c执行完自身的任务后,向条件判断节点发送任务完成信息,条件判断节点开始执行自身的判断任务,并将条件判断结果发送至节点c1。节点c1根据条件判断结果,从节点e和节点f中选择出该条件判断结果对应的目标节点(假设为节点e),向节点e发送任务开始信息,以使节点e开始执行自身对应的待执行任务。节点e执行完自身的任务后,向节点c2发送任务完成信息。节点c2接收到节点e或者节点f中的任意一个节点发送的任务完成信息后,向节点b2发送任务完成信息。
131.节点d执行完自身的任务后,向节点b2发送任务完成信息。节点b2接收到节点c2和节点d发送的任务完成信息后,向节点g发送任务完成信息,以使节点g开始执行自身的任务。当节点g执行完自身的任务后,向结束节点发送任务完成信息,当结束节点接收到任务完成信息后,流程执行结束。
132.实施例二:
133.基于相同的技术构思,本技术实施例还提供了一种工作流的生成装置,图4示出了本技术实施例所提供的一种工作流的生成装置的结构示意图,如图4所示,该装置包括:
134.获取模块401,用于执行步骤s1;所述步骤s1为获取初始工作流;所述初始工作流是通过目标工作流设计器绘制出来的;所述目标工作流设计器为屏蔽了网关节点的工作流设计器;
135.查询模块402,用于执行步骤s2;所述步骤s2为查询所述初始工作流中前置节点为空的节点,以将该节点确定为起始节点,以及将该起始节点作为第一节点;所述前置节点用于表示所述初始工作流的流向关系中当前节点的前一个节点;
136.确定模块403,用于执行步骤s3;所述步骤s3为将所述初始工作流中与所述第一节
点相邻且位于该第一节点之后的节点确定为第二节点;
137.处理模块404,用于执行步骤s4;所述步骤s4为根据所述初始工作流中所述第一节点与其他节点之间的连接关系,以及所述第二节点与其他节点之间的连接关系,确定所述第二节点对应的处理方式,以通过所述处理方式对所述第二节点进行处理;重复执行步骤s3至步骤s4,以及在步骤重复执行的过程中,将步骤s3中的所述第二节点确定为新的第一节点,直至生成符合预置规范的目标工作流时停止循环。
138.可选的,所述处理模块404在用于执行步骤s4时,具体用于:
139.当所述第一节点只属于一个节点的前置节点时,建立所述第一节点与所述第二节点之间的连线。
140.可选的,所述处理模块404在用于执行步骤s4时,具体用于:
141.当所述第一节点属于至少两个节点的前置节点时,判断所述第一节点的节点类型是否为条件判断节点;
142.当所述第一节点的节点类型不是条件判断节点时,创建节点类型为并行网关节点的第一网关节点,以及建立所述第一节点与所述第一网关节点之间的连线;以及针对每个所述第二节点,分别建立所述第一网关节点与该第二节点之间的连线,以及对所述第一网关节点按照先入后出原则压入当前栈内;所述第一网关节点用于在接收到所述第一节点发送的任务完成信息时,向与该第一网关节点连接的各个所述第二节点发送任务开始信息,以使各个所述第二节点开始执行各自对应的待执行任务;
143.当所述第一节点的节点类型为条件判断节点时,创建节点类型为排它网关节点的第二网关节点,以及建立所述第一节点与所述第二网关节点之间的连线;以及针对每个所述第二节点,建立所述第二网关节点与该第二节点之间的连线,以及对所述第二网关节点按照先入后出原则压入当前栈内;所述第二网关节点用于根据所述第一节点发送的条件判断结果,从与该第二网关节点连接的多个第二节点中选择出所述条件判断结果对应的目标第二节点,以及向所述目标第二节点发送任务开始信息,以使该目标第二节点开始执行自身对应的待执行任务。
144.可选的,所述处理模块404在用于执行步骤s4时,具体用于:
145.当所述第一节点与其他节点共同作为所述第二节点的前置节点时,判断当前栈中是否存在当前栈顶节点;
146.若存在所述当前栈顶节点,则获取所述当前栈顶节点,继续判断当前栈中是否存在当前栈顶节点及后续步骤,直至当前栈中不存在当前栈顶节点时停止,以获取到的各个当前栈顶节点以及各个当前栈顶节点的出栈顺序;
147.针对每个当前栈顶节点,判断当前是否存在与该当前栈顶节点的节点类型相同的第三节点;以及若不存在与该当前栈顶节点的节点类型相同的第三节点,则创建与该当前栈顶节点的节点类型相同的第三节点,以得到每个当前栈顶节点各自对应的第三节点;以及按照各个当前栈顶节点的出栈顺序,依次通过各个当前栈顶节点对应的第三节点,建立第一节点与第二节点之间的连线;以及若存在第三节点,则按照各个当前栈顶节点的出栈顺序,依次通过各个当前栈顶节点对应的第三节点,建立第一节点与第二节点之间的连线。
148.可选的,还包括:
149.解析模块,用于在所述第一查询模块402执行步骤s2之前,对所述初始可视化工作
流中的节点关系进行解析,确定所述初始可视化工作流中各个节点的前置节点,以将各个节点与各个节点的前置节点之间的节点关系存储至数据库中;
150.所述查询模块在用于执行步骤s2时,具体用于:
151.从所述数据库存储的节点关系中查询所述初始工作流中前置节点为空的节点,以将该节点确定为起始节点。
152.可选的,所述装置驻留于后端服务器中;所述装置还包括:
153.接收模块,用于在所述获取模块401执行步骤s1之前,接收第一用户端发送的所述初始工作流,以对所述初始工作流进行存储;所述初始工作流是第一用户通过所述第一用户端中安装的所述目标工作流设计器绘制出来的;所述后端服务器中存储有多个所述初始工作流;每个所述初始工作流对应各自的流程类型。
154.可选的,所述获取模块401在执行步骤s1时,具体用于:
155.接收第二用户端发送的查询请求,以将预先存储的多个所述初始工作流以及每个所述初始工作流对应的编号返回至所述第二用户端,以使所述第二用户端响应于第二用户针对所述初始工作流的选择操作,以将选择出来的所述初始工作流对应的编号作为所述目标编号发送至所述后端服务器中;
156.接收所述第二用户端发送的所述目标编号,以从预先存储的多个所述初始工作流中,获取所述目标编号对应的初始工作流。
157.实施例三:
158.基于相同的技术构思,本技术实施例还提供一种电子设备,图5示出了本技术实施例所提供的一种电子设备的结构示意图,如图5所示,该电子设备500包括:处理器501、存储器502和总线503,存储器存储有处理器可执行的机器可读指令,当电子设备运行时,处理器501与存储器502之间通过总线503通信,处理器501执行机器可读指令,以执行实施例一中所述的方法步骤。
159.实施例四:
160.基于相同的技术构思,本技术实施例四还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行实施例一中所述的方法步骤。
161.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置、电子设备和计算机可读存储介质的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
162.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
163.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目
的。
164.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
165.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
166.最后应说明的是:以上所述实施例,仅为本技术的具体实施方式,用以说明本技术的技术方案,而非对其限制,本技术的保护范围并不局限于此,尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本技术实施例技术方案的精神和范围,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1