CN116339716A - 一种流程图的分析方法 - Google Patents
一种流程图的分析方法 Download PDFInfo
- Publication number
- CN116339716A CN116339716A CN202310400128.6A CN202310400128A CN116339716A CN 116339716 A CN116339716 A CN 116339716A CN 202310400128 A CN202310400128 A CN 202310400128A CN 116339716 A CN116339716 A CN 116339716A
- Authority
- CN
- China
- Prior art keywords
- node
- flow chart
- analysis
- dependency
- flow
- 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
- 238000004458 analytical method Methods 0.000 title claims abstract description 51
- 238000000034 method Methods 0.000 claims abstract description 26
- 230000003068 static effect Effects 0.000 claims abstract description 12
- 238000007781 pre-processing Methods 0.000 claims abstract description 8
- 238000004590 computer program Methods 0.000 claims description 5
- 230000001419 dependent effect Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003066 decision tree Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种流程图的分析方法,包括以下步骤:步骤1、流程图预处理;步骤2、流程节点依赖分析;步骤3、流程动态刷新。通过本发明,能够将静态流程图分析与运行端动态刷新结合,保证了流程并行执行的效率和准确性。通过并行流程技术有效支撑了数据处理业务的发展和迭代。同时利用自动预编译的方式彻底释放了手工维护依赖关系的人力资源。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及图形处理,具体来说涉及一种流程图的分析方法。
背景技术
在计算机程序开发过程中,需要预先编制流程图,对于大型项目来说,需要通过流程引擎来完成这一工作。流程是多种业务对象在一起合作完成某件事情的步骤,这些业务对象可以是数据输入流、审批流,决策流、结果输出流等。现有的流程引擎大多基于BPMN的规范,其流程实现原则基本是按照流程中的每一个节点依次顺序执行,即串行执行流程。
串行流程执行引擎由于其特定的执行方式导致流程中的每一个节点只能按照顺序依次执行,随着业务发展和迭代,流程中的节点个数也会越来越多,相应的流程执行量也呈线性增加,在实效性要求较高的场景下严重制约了业务的发展,串行引擎所带来的长事务特性也严重影响到了流程执行的并发性能,在一些批量执行的场景下,其并发特征严重制约了流程批量处理的效率。
发明内容
为此,本发明提供了一种流程图的分析方法,能够实现流程的并行执行,提高了计算机系统批量执行流程的能力,提高了程序执行的效率。
为实现本发明之目的,采用以下技术方案予以实现:
一种流程图的分析方法,包括以下步骤:
步骤1、流程图预处理;
步骤2、流程节点依赖分析;
步骤3、流程动态刷新。
所述的分析方法,其中所述步骤1包括:流程图合并,和/或流程图分裂。
所述的分析方法,其中流程图合并包括:将主流程图和子流程图合并为一张完整的流程图。
所述的分析方法,其中流程图分裂包括:将不同版本的主流程图和子流程图组合形成多个不同版本的流程图。
通过所述的分析方法,经过步骤1之后,一张流程图通过静态预处理的方式根据不同灰度条件下的版本将分裂为多个不同版本的流程图,每张分裂的流程图均会生成一个与之对应的唯一ID进行标识。
所述的分析方法,其中步骤2包括:
步骤2.1、根据步骤1预处理后的流程图生成广度优先遍历顺序表;
步骤2.2、对广度优先遍历数据表中的节点进行依赖性分析。
所述的分析方法,其中步骤2用于生成双向链表结构的静态依赖DAG图。
所述的分析方法,其中步骤2.2包括对一般节点的依赖性分析:
获取当前节点的入参,分析入参是否包括出参,如果包括,则从当前节点出参的覆盖表中取最后一个节点作为当前节点的被依赖节点。例如参数A输出的BFS顺序节点为N1,N2,N3;当N3节点后面任意一个节点Nx的入参中使用了参数A,则认为节点Nx静态分析下依赖N3节点。
所述的分析方法,其中步骤2.2包括对网关节点的依赖性分析:
分析网关节点的条件语句,解析出条件变量,将该条件变量作为该网关节点入参,分析其是否有依赖的出参,如果有依赖的出参,则直接取相关节点出参覆盖顺序列表的最后一个作为网关节点的依赖节点。
通过以上静态分析的方式为每一个要执行的流程图均生成了相应的各个节点的依赖关系形成逻辑上的依赖DAG图,同时以双向链表的结构表示此依赖DAG图。双线链表结构中重要的结构属性如下:
Pre:前置节点列表(物理流程图上的节点前后关系)
Next:后置节点列表
Depend:依赖节点列表(即依赖入度列表)
DependDetail:依赖明细对象(即明细参数与节点的依赖明细)。
所述的分析方法,其中步骤3包括:
步骤3.2、并行执行流程图中依赖入度为0的流程节点;
步骤3.3、当执行完一批依赖入度为0的节点之后,进行动态刷新并调整剩余节点的依赖关系,重复执行步骤3.2,直到所有节点均被执行完毕。
这里之所以要做刷新动作,其实是为了刷新对应的依赖入度列表。包括更新依赖入度列表。比如上述静态分析Nx节点依赖节点N3.如果节点N3执行完毕之后输出了参数A。则可以将节点N3从节点Nx的Depdend列表中删除,解除依赖刷新其依赖关系。如果节点N3执行完毕之后实际并未输出参数A,那么此时我们需要根据静态分析的输出参数覆盖列表中找到参数A覆盖列表,并根据节点N3的位置向列表前方节点寻找参数A,假如向前寻找发现实际只有N1节点输出参数A则需要动态刷新节点Nx的Depend列表。
所述的分析方法,其中步骤3.2中,如果被依赖节点未按照预处理后的依赖图输出依赖节点需要的出参,则动态向依赖节点的前继节点寻找提供给所述出参的节点,并更新该依赖节点的依赖关系。
所述的分析方法,其中步骤3还包括:
步骤3.4、当执行网关节点时,将不满足条件的分支节点的状态递归标记为已删除状态。
一种计算机存储介质,所述计算机可读存储介质存储有计算机程序,其中:所述计算机程序被执行时实现如上所述的分析方法。
附图说明
图1为流程图的分析方法示意图;
图2为流程图合并示意图;
图3为流程图分裂示意图;
图4为流程图节点依赖分析示意图;
图5为运行端运行流程示意图;
图6为动态刷新示例示意图;
图7为网关节点执行示意图。
具体实施方式
下面结合附图1-7,对本发明的具体实施方式进行详细说明。所述实施方式是示例性地,仅用于解释本发明,而不能理解为对本发明的限制。显然,本发明所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本说明书中描述的“一种实施方式”或“一些实施方式”等意味着在本发明的一个或多个实施方式中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
如图1所示,本发明的流程图的分析方法包括以下步骤:
步骤1、流程图预处理;
步骤2、流程节点依赖分析;
步骤3、流程动态刷新。
对于步骤1来说,流程图预处理包括以下步骤:
步骤1.1、流程图合并(如图2所示);
步骤1.2、流程图分裂(如图3所示)
流程图可分为主流程图和子流程图两种,在编制流程图的时候,采用主流程和子流程分别编制的方式能够提高流程图的编制效率,避免出错,同时可以实现公共流程图最大程度的复用。在串行模式下,流程可以在运行的过程中实时确定各自要执行的图,但是在并行的背景下,则需要提前将主流程图和子流程图合并成一张完整的流程图,以提高流程运行的效率并方便后续的静态依赖分析。例如,在业务自动管理系统中,不同的客户需求不同,系统需要根据不同的客户需求向该客户提供不同的产品信息,例如高配版轿车和普通型轿车,根据客户对于不同零部件的选择(例如进口发动机、国产发动机),系统将反馈给客户不同的功能、保修年限、价格等信息,在这种情况下往往会涉及到主流程图和子流程图。
如图2所示,在节点A和节点B之间需要执行子流程AB或子流程CD,步骤1.1通过预编译的方式,将主流程图和子流程图合并为一张完整的流程图,这样可以为步骤2的依赖性分析提供基础。
由于主流程和子流程可以各自进行灰度发布,因此在同一时间,可运行的主流程图或子流程图会存在两种以上不同的版本的情况,而一张流程图又包括主流程图和子流程图,因此不同版本的流程图实质上是“笛卡尔集”的组合关系,所以我们需要在预编译的情况下同步处理“笛卡尔集”的组合,即步骤1.2所说的流程图分裂,如图3所示,本发明将不同版本的主流程图和子流程图根据版本组合,形成了多个版本的流程图,将这一过程称为流程图分裂。流程图分裂之后,需要为每张流程图生成唯一标记(标识符)ID,且唯一标记ID与流程图的灰度规则存在一一对应的关系,即不同的灰度规则下,能够通过一个ID定位唯一一个固定版本的流程图。
一般来说,流程图中包括多个可视化的节点,每一个节点作为流程图的最小单元而存在,通过各个节点的前后连接关系形成了一张完整的DAG图(有向无环图)。
在经过步骤1的流程图预处理之后,就可以对每一张流程图进行步骤2的节点依赖分析,最终形成系统要执行的以双向链表形式存在的依赖图,步骤2的具体说明如下:
我们将节点依赖定义如下:对于存在先后顺序的两个节点A->B,如果B节点的输入参数(入参)需要A节点的输出参数(出参),则我们认为B节点依赖A节点,基于这个理论,我们首先将业务线上绘制的(或步骤1中得到的)DAG图进行广度优先遍历,在逻辑上为流程图中的每个节点进行前后排序,以形成节点之间的逻辑先后关系。
如图4所示,对流程图中的流程节点的依赖性分析说明如下:
步骤2.1、根据步骤1预处理(合并)后的流程图生成广度优先遍历顺序表,广度优先遍历顺序表如下表①所示:
【start,A,G1,B,C,G2,E,F,D,I,J,end】——表①
表①中,G1、G2为网关节点,其余节点A、B、C、E、F、D、I、J为一般节点。
步骤2.2、对广度优先遍历数据表中的节点按从前到后的顺序依次进行遍历进行依赖性分析:
同时在遍历的过程中,我们需要记录节点出参,并以出参做为key,节点列表做为value的结构形成节点出参键值对列表。(例:参数1:A,B,C;参数2:A,E,F)
(1)对于一般节点:
获取当前节点的入参,分析入参是否包括出参变量,如果包括,则从当前节点出参的覆盖表中取最后一个节点作为当前节点的被依赖节点,即遍历当前节点之前所有提供该出参的节点,寻找距离当前节点最近的输出所述出参变量的节点,将该节点作为当前节点的被依赖节点。当所述距离最近的节点有多个的时候,该多个节点都是当前节点的被依赖节点。
当有多个入参时,对于每个入参,按上述方式分别确定当前节点的被依赖节点。
(2)对于网关节点:
分析网关节点的条件语句,解析出条件变量,将该条件变量作为网关节点入参,分析其是否有依赖的出参变量,如果有依赖的出参变量,则直接取表①中的相关节点出参覆盖顺序列表的最后一个作为网关节点的依赖节点,即寻找表①中排在最后位置的提供所述出参变量的节点,并将该节点作为网关节点的被依赖节点。
(3)对于其他节点:
所述其他节点例如是子图节点,对于该类节点,则依次遍历其入参所依赖的结果变量,从表①中取最后一个节点作为出参变量(结果变量)依赖的节点,即寻找表①中排在最后位置的提供所述结果变量的节点,并将该节点作为该其他节点的被依赖节点。
步骤2.3、将表①中各节点的输出参数加入到出参变量覆盖列表中。
出参变量(结果变量)覆盖列表示例如下:
V1:[A,B,E](结果变量V1覆盖列表);
V2:[A,E,J](结果变量V2覆盖列表);
V3:[B,C,F](结果变量V3覆盖列表)。
经过步骤2,最终可以将业务人员绘制的流程图通过上述分析方式重新抽象成以双向链表结构为基础的(静态)依赖DAG图,并将此图提前放入缓存中,执行端根据所述图的ID直接加载缓存数据即可,无需重复分析处理。
如图5所示,步骤3可以在运行端执行,所述步骤3包括:
步骤3.1、执行灰度决策树,确定要执行的流程图实例,并从缓存中根据ID获取流程图实例;
灰度规则决策示例:
If(random.nextInt()<90){
returngraphIdA;
}else{
returngraphIdB;
}
步骤3.2、根据获取的流程图实例,按照依赖的入度批量(并行)执行流程图中依赖入度为0的流程节点,如果不存在依赖入度为0&未删除&未执行状态的节点,则认为流程全部执行完毕,结束步骤3的执行;
步骤3.3、当执行完一批依赖入度为0的节点之后,进行动态刷新并调整剩余未执行&未删除状态的节点的依赖关系,重复执行步骤3.2。
在步骤3.2中,如果被依赖节点未按照预编译的依赖图输出依赖节点需要的参数,则需要动态向依赖节点的前继节点进行寻找合适的入参提供节点并据此更新该依赖节点的依赖关系,即进行动态刷新。
如图6所示,示出了动态刷新的一个具体示例,图6流程图中:
广搜遍历顺序为【start,A,B,G1,C,D,E,G2,F,G,end】;
(1)设变量参数risCode是节点A、C、D、E的出参,则risCode输出的广搜顺序为【A,C,D,E】;
(2)从图6中可以知道,在流程图实际运行的过程中,对于C、D、E分支,最终流程只会选择其中一条分支,如果在静态依赖分析图里,我们算得G节点的入参risCode是依赖C节点输出的risCode,但是在实际并行执行的时候,分支选择了E分支,即由E节点输出变量risCode,那么就需要重新刷新节点G的依赖关系,即将节点G的被依赖节点由节点C更新为节点E;
(3)节点执行完毕之后,需要进行实时刷新,主要刷新两类内容:
a.刷新节点依赖:执行完节点之后,需要从依赖此节点的其他所有节点的依赖集合中将此节点去除掉;
b.刷新变量依赖:将执行完节点所输出的变量依次填充到依赖此节点变量的其他节点中去;同时如果此节点未输出其他节点需要的变量,则需要从此节点按照其广度优先遍历顺序继续向前寻找,并将离此节点最近的提供所述未输出变量的节点重新刷新替换为其他节点的被依赖节点。
步骤3.4、特别的,当执行网关节点时,需要将不满足条件的分支节点的状态递归标记为已删除状态。
步骤3.4的执行逻辑如图7所示:选择执行网关节点时未被执行的一个分支,根据步骤2获得的依赖关系,从前向后依次寻找在该分支上所有直接或间接依赖于网关节点的节点,再从后向前依次将寻找到的节点的在该分支上的被依赖节点删除;针对另一个执行网关节点时未被执行的分支,重复执行前述的步骤,直到所有未被执行的分支都已经执行完毕。
本发明实施例还提供一种计算机可读存储介质。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。如果在软件中实现,则所述方法的功能可以作为一个或多个指令或代码存储在计算机可读介质上或者在计算机可读介质上传输。在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体的示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
通过本发明,能够将静态流程图分析与运行端动态刷新结合,保证了流程并行执行的效率和准确性。通过并行流程技术有效支撑了数据处理业务的发展和迭代。同时利用自动预编译的方式彻底释放了手工维护依赖关系的人力资源。
以上,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭示如上,然而并非用以限定本发明,任何本领域技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简介修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (10)
1.一种流程图的分析方法,其特征在于包括以下步骤:
步骤1、流程图预处理;
步骤2、流程节点依赖分析;
步骤3、流程动态刷新。
2.根据权利要求1所述的分析方法,其特征在于所述步骤1包括:流程图合并。
3.根据权利要求2所述的分析方法,其特征在于流程图合并包括:将主流程图和子流程图合并为一张完整的流程图。
4.根据权利要求1所述的分析方法,其特征在于步骤2包括:
步骤2.1、根据步骤1预处理后的流程图生成广度优先遍历顺序表;
步骤2.2、对广度优先遍历数据表中的节点进行依赖性分析。
5.根据权利要求1所述的分析方法,其特征在于步骤2用于生成成双向链表结构的静态依赖DAG图。
6.根据权利要求5所述的分析方法,其特征在于步骤2.2包括对一般节点的依赖性分析。
7.根据权利要求5所述的分析方法,其特征在于步骤2.2包括对网关节点的依赖性分析。
8.根据权利要求1所述的分析方法,其特征在于步骤3包括:
步骤3.2、并行执行流程图中依赖入度为0的流程节点。
9.根据权利要求1所述的分析方法,其特征在于步骤3还包括:
步骤3.4、当执行网关节点时,将不满足条件的分支节点的状态递归标记为已删除状态。
10.一种计算机存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被执行时实现如权利要求1-9任一项所述的分析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310400128.6A CN116339716A (zh) | 2023-04-13 | 2023-04-13 | 一种流程图的分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310400128.6A CN116339716A (zh) | 2023-04-13 | 2023-04-13 | 一种流程图的分析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116339716A true CN116339716A (zh) | 2023-06-27 |
Family
ID=86887838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310400128.6A Pending CN116339716A (zh) | 2023-04-13 | 2023-04-13 | 一种流程图的分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116339716A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116774989A (zh) * | 2023-08-23 | 2023-09-19 | 国网信息通信产业集团有限公司 | 一种软件构建发布装置的设计和实现方法、系统及终端 |
-
2023
- 2023-04-13 CN CN202310400128.6A patent/CN116339716A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116774989A (zh) * | 2023-08-23 | 2023-09-19 | 国网信息通信产业集团有限公司 | 一种软件构建发布装置的设计和实现方法、系统及终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11106626B2 (en) | Managing changes to one or more files via linked mapping records | |
CN112650766B (zh) | 数据库数据操作的方法、系统及服务器 | |
US6662189B2 (en) | Method of performing data mining tasks for generating decision tree and apparatus therefor | |
US5808615A (en) | Process and system for mapping the relationship of the content of a collection of documents | |
US10956417B2 (en) | Dynamic operation scheduling for distributed data processing | |
CN111324577B (zh) | 一种Yml文件读写的方法及装置 | |
AU2012217093B2 (en) | Method, system and computer program to provide fares detection from rules attributes | |
CN116339716A (zh) | 一种流程图的分析方法 | |
CN108197187A (zh) | 查询语句的优化方法、装置、存储介质和计算机设备 | |
CN112860264B (zh) | 一种抽象语法树重构方法及装置 | |
US7058561B1 (en) | System, method and program product for optimising computer software by procedure cloning | |
CN116368494A (zh) | 一种神经网络编译优化方法和相关装置 | |
CN116452123A (zh) | 清单项目特征值的生成方法、装置和计算机设备 | |
CN111125216B (zh) | 数据导入Phoenix的方法及装置 | |
CN115934106A (zh) | 快速检测apt仓库源依赖完整性的方法 | |
CN110781313A (zh) | 一种图存储优化方法、装置和电子设备 | |
CN115952300A (zh) | 动态图谱构建方法、动态图谱构建设备和可读存储介质 | |
Aldinucci et al. | Pool evolution: a parallel pattern for evolutionary and symbolic computing | |
Abbas et al. | An approach for optimized feature selection in software product lines using union-find and genetic algorithms | |
CN114995877A (zh) | 一种变量配置方法及装置 | |
US11386155B2 (en) | Filter evaluation in a database system | |
CN113031835A (zh) | 一种菜单数据处理方法及装置 | |
US7552137B2 (en) | Method for generating a choose tree for a range partitioned database table | |
CN112925564B (zh) | 一种源代码的冗余导入类清理方法及装置 | |
CN110334098A (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 |