一种并行网关的节点检测方法及装置的制造方法

文档序号:10569681阅读:228来源:国知局
一种并行网关的节点检测方法及装置的制造方法
【专利摘要】本发明实施例提供的并行网关的节点检测方法,使用堆栈存储分支节点或互斥节点,当含有并行网关的流程中有嵌套的子流程时,将流转到的分支节点或互斥节依次压入堆栈中,采用堆栈先进后出的原则,最后压入堆栈的节点先被弹出,当流转到聚合节点时,获取所述堆栈中的栈顶元素,若该栈顶元素后没有未经流转的路径,则该栈顶元素即为当前流转到的聚合节点所配对的分支节点或互斥节点。即在含有并行网关的流程中有嵌套的子流程中,先流转到的聚合节点是与最后流转到的分支节点或互斥节点配对的聚合节点。提高了分支冲突检测的效率,实现准确的确定分支节点所对应的聚合节点。
【专利说明】
一种并行网关的节点检测方法及装置
技术领域
[0001]本发明涉及计算机技术领域,特别是涉及一种并行网关的节点检测方法及装置。
【背景技术】
[0002]随着信息技术的发展,企业中很多业务采用流程处理各种复杂的业务管理。流程(Process),主要用于描述一个完整的业务过程,一般包括流程的基本信息,流程的开始和结束条件,组成的活动,活动间流转的规则,节点(分支节点、聚合节点、决策节点),以及可能调用的应用程序以及流程相关数据等信息。
[0003]在含有并行网关的流程中,分支节点和聚合节点必须成对出现,如图1所示的含有并行网关的流程示意图,分支节点I和聚合节点I为一对,分支节点2和聚合节点2为一对。若流程中分支节点和聚合节点不成对,则该流程会出现分支冲突。为了保证流程的设计的合法性,需要进行并行网关的分支冲突检测。
[0004]目前,进行并行网关的分支冲突检测主要采用如下方法:
[0005]从流程中的指定节点向下查找,查找到分支节点时,计数器加I,选择该分支节点的所有流出路径继续查找,当查找到聚合节点时,判断技术器是否为0,如果是,返回该聚合节点,如果否,计数器减I,选择该聚合节点的所有流出路径继续查找。
[0006]采用上述方法进行并行网关的分支冲突检测,当含有并行网关的流程中有嵌套的子流程时,查找所有分支节点的聚合节点时,需要对流程中的很多路径片段进行重复查找,降低分支冲突检测的效率,也无法确定分支节点所对应的准确的聚合节点。

【发明内容】

[0007]本发明解决的技术问题在于提供一种并行网关的节点检测方法及装置,从而能够避免对流程中的路径片段进行重复查找。
[0008]为此,本发明解决技术问题的技术方案是:
[0009]—种并行网关的节点检测方法,所述方法包括:
[0010]获取流程中当前待检测的节点作为第一节点;
[0011 ]判断所述第一节点的类型;
[0012]当所述第一节点是分支节点或互斥节点时,将所述第一节点压入堆栈,所述堆栈用于存储分支节点和互斥节点;
[0013]当所述第一节点是聚合节点时,将所述第一节点存储至第一存储区域,所述第一存储区域用于存储聚合节点;
[0014]判断所述堆栈是否存储有节点;
[0015]当所述堆栈存储有节点时,获取所述堆栈的栈顶元素作为第二节点;
[0016]判断所述第二节点后是否存在未流转的路径;
[0017]所述第二节点后没有未流转的路径时,判断所述第一存储区域是否有且只有所述第一节点;
[0018]所述第一存储区域有且只有所述第一节点,所述第二节点为分支节点时,从所述堆栈中弹出所述第二节点,清空所述第一存储区域,从所述第一节点流转至下一个待检测的节点;
[0019]所述第一存储区域有且只有所述第一节点,所述第二节点为互斥节点时,从所述堆栈中弹出所述第二节点,清空所述第一存储区域,判断所述堆栈中是否存在栈顶元素,所述堆栈中不存在栈顶元素时,从所述第一节点流转至下一个待检测的节点;所述堆栈中存在栈顶元素时,从所述堆栈中获取下一个栈顶元素作为第三节点,返回执行判断所述第三节点后是否存在未流转的路径。
[0020]可选的,所述方法还包括:
[0021]所述第一节点是聚合节点,所述第二节点后有未流转的路径时,从所述第二节点流转至下一个待检测的节点。
[0022]可选的,所述将所述第一节点存储至第一存储区域包括:
[0023]判断所述第一存储区域是否存储有节点;
[0024]当所述第一存储区域存储有节点时,判断所述第一存储区域存储的节点是否为所述第一节点;当所述第一存储区域存储的节点为所述第一节点时,所述第一节点存储至所述第一存储区域。
[0025]可选的,所述方法还包括:
[0026]当所述第一节点不是分支节点,也不是互斥节点,还不是聚合节点时,判断所述第二存储区域是否存在所述第一节点,当所述第二存储区域不存在所述第一节点时,将所述第一节点存储至所述第二存储区域,所述第二存储区域用于存储流程中分支节点,互斥节点以及聚合节点以外的节点。
[0027]可选的,所述方法还包括:
[0028]当所述第二存储区域存在所述第一节点时,获取所述堆栈的栈顶元素;
[0029]判断所述栈顶元素是否为互斥节点;当所述栈顶元素为互斥节点时,从所述第一节点流转至下一个待检测的节点。
[0030]—种并行网关的节点检测装置,所述装置包括:
[0031]第一获取单元,用于获取流程中当前待检测的节点作为第一节点;
[0032]第一判断单元,用于判断所述第一节点的类型;
[0033]第一存储单元,用于当所述第一节点是分支节点或互斥节点时,将所述第一节点压入堆栈,所述堆栈用于存储分支节点和互斥节点;
[0034]第二存储单元,用于当所述第一节点是聚合节点时,将所述第一节点存储至第一存储区域,所述第一存储区域用于存储聚合节点;
[0035]第二判断单元,用于判断所述堆栈是否存储有节点;
[0036]第二获取单元,用于当所述堆栈存储有节点时,获取所述堆栈的栈顶元素作为第二节点;
[0037]第三判断单元,用于判断所述第二节点后是否存在未流转的路径;
[0038]第四判断单元,用于所述第二节点后没有未流转的路径时,判断所述第一存储区域是否有且只有所述第一节点;
[0039]第一处理单元,用于所述第一存储区域有且只有所述第一节点,所述第二节点为分支节点时,从所述堆栈中弹出所述第二节点,清空所述第一存储区域,从所述第一节点流转至下一个待检测的节点;
[0040]第五判断单元,用于所述第一存储区域有且只有所述第一节点,所述第二节点为互斥节点时,从所述堆栈中弹出所述第二节点,清空所述第一存储区域,判断所述堆栈中是否存在栈顶元素,所述堆栈中不存在栈顶元素时,从所述第一节点流转至下一个待检测的节点;所述堆栈中存在栈顶元素时,从所述堆栈中获取下一个栈顶元素作为第三节点,返回执行判断所述第三节点后是否存在未流转的路径。
[0041 ] 可选的,所述装置还包括:
[0042]第二处理单元,用于所述第一节点是聚合节点,所述第二节点后有未流转的路径时,从所述第二节点流转至下一个待检测的节点。
[0043]可选的,所述第一存储单元包括:
[0044]第一判断子单元,用于判断所述第一存储区域是否存储有节点;
[0045]第二判断子单元,用于当所述第一存储区域存储有节点时,判断所述第一存储区域存储的节点是否为所述第一节点;当所述第一存储区域存储的节点为所述第一节点时,所述第一节点存储至所述第一存储区域。
[0046]可选的,所述装置还包括:
[0047]第六判断单元,用于当所述第一节点不是分支节点,也不是互斥节点,还不是聚合节点时,判断所述第二存储区域是否存在所述第一节点,当所述第二存储区域不存在所述第一节点时,将所述第一节点存储至所述第二存储区域,所述第二存储区域用于存储流程中分支节点,互斥节点以及聚合节点以外的节点。
[0048]可选的,所述装置还包括:
[0049]第三获取单元,用于当所述第二存储区域存在所述第一节点时,获取所述堆栈的栈顶元素;
[0050]第七判断单元,用于判断所述栈顶元素是否为互斥节点;当所述栈顶元素为互斥节点时,从所述第一节点流转至下一个待检测的节点。
[0051 ]通过上述技术方案可知,本发明有如下有益效果:
[0052]本发明实施例提供的并行网关的节点检测方法,使用堆栈存储分支节点或互斥节点,当含有并行网关的流程中有嵌套的子流程时,将流转到的分支节点或互斥节依次压入堆栈中,采用堆栈先进后出的原则,最后压入堆栈的节点先被弹出,当流转到聚合节点时,获取所述堆栈中的栈顶元素,若该栈顶元素后没有未经流转的路径,则该栈顶元素即为当前流转到的聚合节点所配对的分支节点或互斥节点。即在含有并行网关的流程中有嵌套的子流程中,先流转到的聚合节点是与最后流转到的分支节点或互斥节点配对的聚合节点。提高了分支冲突检测的效率,实现准确的确定分支节点所对应的聚合节点。
【附图说明】
[0053]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0054]图1为本发明实施例提供的含有并行网关的流程示意图;
[0055]图2为本发明实施例提供的并行网关的节点检测方法流程图;
[0056]图3为本发明实施例提供的并行网关的节点检测装置结构示意图。
【具体实施方式】
[0057]为了给出提高分支冲突检测的效率的实现方案,本发明实施例提供了一种并行网关的节点检测方法及装置,以下结合说明书附图对本发明的优选实施例进行说明。
[0058]下面首先对本发明实施例中出现的几个基本概念进行说明。
[0059]分支节点(Fork):流程中的一个连接点,流程运行到该连接点后,流程的主路径会划分为多条分支路径同时流转,一般与“聚合节点”成对配合使用。
[0060]互斥节点(Decis1n):流程中的一个连接点,流程运行到该连接点后,流程会根据用户选择或者系统计算规则从多条分支路径中选择一条路径进行流转。
[0061]聚合节点(Join):流程中的一个连接点,多条分支路径运行到该连接点后,如果满足聚合条件,则多条分支路径重新聚合,一般与分支节点”成对配合使用。
[0062]在实际应用中,主流程从分支节点或互斥节点流转到聚合节点,而后继续向下流转。在一个业务流程中,为了保证流程正常流转,避免出现并行分支路径存在循环、不完整等所导致的并行分支路径无法汇聚的问题,要对流程进行并行冲突检测。
[0063]堆栈(Stack):是一种运算受限的线性表数据结构,仅允许在表的一端进行插入和删除运算,向一个堆栈中插入新元素成为进栈,是将新元素放入栈顶,使该新元素成为新的栈顶元素;从一个堆栈删除元素又称作出栈,是把栈顶元素删除掉,使堆栈中该栈顶相邻的元素成为新的桟顶元素。堆桟中的元素的操作满足先进后出的特点。
[0064]图2为本发明实施例提供的并行网关的节点检测方法流程图,包括:
[0065]201:获取流程中当前待检测的节点作为第一节点。
[0066]202:判断所述第一节点的类型,当所述第一节点是分支节点或互斥节点时,执行203;当所述第一节点是聚合节点时执行204。
[0067]流程中的节点主要分为三类,一类是分支节点或互斥节点,一类是聚合节点,还有一类是除了分支节点,互斥节点以及聚合节点以外的其他节点。进行并行网关的并行冲突检测时,流转到流程中的一个节点,将该节点作为待检测的节点,即第一节点,首先,要先判断第一节点的类型,第一节点的类型不同,处理流程的分支也不同。
[0068]203:将所述第一节点压入堆栈,所述堆栈用于存储分支节点和互斥节点。
[0069]当第一节点是分支节点或互斥节点时,将第一节点压入堆栈。堆栈采用先进后出的原则,先压入堆栈的节点元素后被弹出堆栈,后压入堆栈的节点元素先被弹出堆栈。即第一节点是分支节点或互斥节点时,堆栈的栈顶元素为第一节点。
[0070]可以理解的是,当流程中不含有嵌套子流程时,流转到一个分支节点后即流转到与该分支节点配对的聚合节点,则堆栈中只存储有一个节点;当流程中含有嵌套的子流程时,流转到一个分支节点后,未流转到与该分支节点配对的聚合节点前,还会流转至其他的分支节点,则堆栈中存储有多个节点。
[0071]204:将所述第一节点存储至第一存储区域,所述第一存储区域用于存储聚合节点。
[0072]当第一节点是聚合节点时,将第一节点存储至第一存储区域。第一存储区域用于存储聚合节点。可以理解的是,按照深度优先策略,第一存储区域一般情况下只存储有一个聚合节点。
[0073]当流程中不含有嵌套子流程时,第一节点与堆栈中存储的一个分支节点或互斥节点成对;当流程中含有嵌套子流程时,第一节点与堆栈中栈顶元素成对。
[0074]在一个例子中,所述将所述第一节点存储至第一存储区域包括:
[0075]判断所述第一存储区域是否存储有节点;
[0076]当所述第一存储区域存储有节点时,判断所述第一存储区域存储的节点是否为所述第一节点;当所述第一存储区域存储的节点为所述第一节点时,所述第一节点存储至所述第一存储区域。
[0077]上述例子,保证第一存储区域中存储的是当前待测节点一一第一节点。当第一存储区域没有存储节点时,表示第一节点没有成功存入第一存储区域;当第一存储区域存储的节点不是第一节点时,表示第一节点没有成功存入第一存储区域,或者第一节点存入第一存储区域时发生错误。
[0078]205:判断所述堆栈是否存储有节点,如果是,执行206;如果否,执行214。
[0079]若堆栈中没有存储节点,则先前没有分支节点或互斥节点,直接流转到一个聚合节点,则该流程存在并行冲突,执行214告警。
[0080]206:获取所述堆栈的栈顶元素作为第二节点。
[0081]207:判断所述第二节点后是否存在未流转的路径,如果是,执行213;如果否,执行208。
[0082]若堆栈中存储有节点,则获取堆栈中栈顶元素作为第二节点。按照深度优先原则,不管流程中是否存在嵌套的子流程,当第二节点后没有未流转的路径时,则第一节点(聚合节点)即为与第二节点(该流程中第一节点前最近流转到的一个分支节点或互斥节点)所配对的聚合节点,即堆栈中栈顶元素所指代的节点(第二节点)。
[0083]208:判断所述第一存储区域是否有且只有所述第一节点,如果是,执行209和210;如果否,执行214。
[0084]按照深度优先原则,流程不存在并行冲突时,第一存储区域有且只能存储有一个节点。若检测到第一存储区域没有存储节点,或存储有至少两个节点时,则该流程存在并行冲突,执行214告警。
[0085]209:所述第二节点为分支节点时,从所述堆栈中弹出所述第二节点,清空所述第一存储区域,从所述第一节点流转至下一个待检测的节点,返回201。
[0086]当堆栈中的栈顶元素一一第二节点为分支节点时,从堆栈中弹出第二节点,清空第一存储区域。即第一节点和第二节点为配对的节点,弹出第二节点,是将堆栈中存储的与第二节点相邻的节点作为堆栈的栈顶元素,或将下一个流转到的分支节点或互斥节点作为栈顶元素。
[0087]清空第一存储区域,为的是存储下一个流转到的聚合节点,第一存储区域内只能存储有一个聚合节点。这样可以有效的识别出与聚合节点配对的分支节点或互斥节点。
[0088]分支节点后的每条路径都已流转,则从第一节点流转至下一个待检测的节点,返回201,继续检测。
[0089]210:所述第二节点为互斥节点时,从所述堆栈中弹出所述第二节点,清空所述第一存储区域,判断所述堆栈中是否存在栈顶元素,如果是,执行211;如果否,执行212。
[0090]211:从所述堆栈中获取下一个栈顶元素作为第三节点,返回207。
[0091]212:从所述第一节点流转至下一个待检测的节点,返回201。
[0092]若第二节点为互斥节点,第二节点后没有未流转的路径,则弹出第二节点,清空第一存储区域。若堆栈中还存储有其他节点,即堆栈中存在栈顶元素,则从堆栈中获取下一个栈顶元素作为第三节点。若堆栈中不存在栈顶元素,则从第一节点(聚合节点)流转至下一个待检测节点计息检测,返回201。
[0093]213:从所述第二节点流转至下一个待检测的节点,返回201。
[0094]若第二节点后存在未流转的路径,则从第二节点流转至下一个待检测的节点,返回201。
[0095]214:流程存在并行冲突,退出告警。
[0096]在一个例子中,当所述第一节点不是分支节点,也不是互斥节点,还不是聚合节点时,判断所述第二存储区域是否存在所述第一节点,当所述第二存储区域不存在所述第一节点时,将所述第一节点存储至所述第二存储区域,所述第二存储区域用于存储流程中分支节点,互斥节点以及聚合节点以外的节点。
[0097]当第一节点(待检测的节点)是分支节点,互斥节点以及聚合节点以外的其他节点时,判断第二存储区域是否存在第一节点,当第二存储区域不存在第二节点时,将第一节点存储至第二存储区域。
[0098]当然,这里需要说明的是,第一节点为其他节点时,也可以不存储,直接跳过流转至下一个待检测节点。
[0099]在一个例子中,当所述第二存储区域存在所述第一节点时,获取所述堆栈的栈顶元素;
[0100]判断所述栈顶元素是否为互斥节点;当所述栈顶元素为互斥节点时,从所述第一节点流转至下一个待检测的节点。
[0101]当第二存储区域存储有第一节点时,若堆栈的栈顶元素为互斥节点,则从第一节点流转至下一个待检测的节点,返回201。
[0102]如图1所示,举例说明,进行检测时,向将分支节点I压入堆栈,再将分支节点2压入堆栈。然后先流转到聚合节点2,将聚合节点2存储第一存储区域,获取栈顶元素分支节点2,分支节点2后没有未流转的路径,则从堆栈中弹出分支节点2,此时,分支节点I作为栈顶元素,清空第一存储区域中的聚合节点2。可以监测出,分支节点2和聚合节点2成对存在。然后再流转到聚合节点I,将聚合节点I存储至第一存储区域,获取栈顶元素分支节点I,分支节点I后没有未流转的路径,此时,弹出分支节点1,清空第一存储区域。可以监测出分支节点I和聚合节点I成对存在。流经的其他节点可以存储至第二存储区域,也可以直接跳过。
[0103]上述实例只是为了更好的说明本发明所提供的实施方案,并不仅限于上述实例所述的方案。
[0104]有上述内容可知,本发明实施例提供了并行网关的节点检测方法,有如下有益效果:
[0105]使用堆栈存储分支节点或互斥节点,将流转到的分支节点或互斥节依次压入堆栈中,采用堆栈先进后出的原则,最后压入堆栈的节点先被弹出,当流转到聚合节点时,获取所述堆栈中的栈顶元素,若该栈顶元素后没有未经流转的路径,则该栈顶元素即为当前流转到的聚合节点所配对的分支节点或互斥节点。先流转到的聚合节点是与最后流转到的分支节点或互斥节点配对的聚合节点。避免对流程中的很多路径片段进行重复查找,提高了分支冲突检测的效率,实现准确的确定分支节点所对应的聚合节点。
[0106]图3为本发明实施例提供的并行网关的节点检测装置结构示意图,包括:
[0107]第一获取单元301,用于获取流程中当前待检测的节点作为第一节点。
[0108]第一判断单元302,用于判断所述第一节点的类型。
[0109]第一存储单元303,用于当所述第一节点是分支节点或互斥节点时,将所述第一节点压入堆栈,所述堆栈用于存储分支节点和互斥节点。
[0110]在一个例子中,所述第一存储单元包括:
[0111]第一判断子单元,用于判断所述第一存储区域是否存储有节点;
[0112]第二判断子单元,用于当所述第一存储区域存储有节点时,判断所述第一存储区域存储的节点是否为所述第一节点;当所述第一存储区域存储的节点为所述第一节点时,所述第一节点存储至所述第一存储区域。
[0113]第二存储单元304,用于当所述第一节点是聚合节点时,将所述第一节点存储至第一存储区域,所述第一存储区域用于存储聚合节点。
[0114]第二判断单元305,用于判断所述堆栈是否存储有节点。
[0115]第二获取单元306,用于当所述堆栈存储有节点时,获取所述堆栈的栈顶元素作为第二节点。
[0116]第三判断单元307,用于判断所述第二节点后是否存在未流转的路径。
[0117]第四判断单元308,用于所述第二节点后没有未流转的路径时,判断所述第一存储区域是否有且只有所述第一节点。
[0118]第一处理单元309,用于所述第一存储区域有且只有所述第一节点,所述第二节点为分支节点时,从所述堆栈中弹出所述第二节点,清空所述第一存储区域,从所述第一节点流转至下一个待检测的节点。
[0119]第五判断单元310,用于所述第一存储区域有且只有所述第一节点,所述第二节点为互斥节点时,从所述堆栈中弹出所述第二节点,清空所述第一存储区域,判断所述堆栈中是否存在栈顶元素,所述堆栈中不存在栈顶元素时,从所述第一节点流转至下一个待检测的节点;所述堆栈中存在栈顶元素时,从所述堆栈中获取下一个栈顶元素作为第三节点,返回执行判断所述第三节点后是否存在未流转的路径。
[0120]在一个例子中,所述装置还包括:
[0121]第二处理单元,用于所述第一节点是聚合节点,所述第二节点后有未流转的路径时,从所述第二节点流转至下一个待检测的节点。
[0122]在一个例子中,所述装置还包括:
[0123]第六判断单元,用于当所述第一节点不是分支节点,也不是互斥节点,还不是聚合节点时,判断所述第二存储区域是否存在所述第一节点,当所述第二存储区域不存在所述第一节点时,将所述第一节点存储至所述第二存储区域,所述第二存储区域用于存储流程中分支节点,互斥节点以及聚合节点以外的节点。
[0124]在一个例子中,所述装置还包括:
[0125]第三获取单元,用于当所述第二存储区域存在所述第一节点时,获取所述堆栈的栈顶元素;
[0126]第七判断单元,用于判断所述栈顶元素是否为互斥节点;当所述栈顶元素为互斥节点时,从所述第一节点流转至下一个待检测的节点。
[0127]图3所示的并行网关的节点检测装置是与图2所示的并行网关的节点检测方法所对应的装置,具体实现方法与图2所示的并行网关的节点检测方法中的描述类似,参考图2所示的方法中的描述,这里不再赘述。
[0128]以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种并行网关的节点检测方法,其特征在于,所述方法包括: 获取流程中当前待检测的节点作为第一节点; 判断所述第一节点的类型; 当所述第一节点是分支节点或互斥节点时,将所述第一节点压入堆栈,所述堆栈用于存储分支节点和互斥节点; 当所述第一节点是聚合节点时,将所述第一节点存储至第一存储区域,所述第一存储区域用于存储聚合节点; 判断所述堆栈是否存储有节点; 当所述堆栈存储有节点时,获取所述堆栈的栈顶元素作为第二节点; 判断所述第二节点后是否存在未流转的路径; 所述第二节点后没有未流转的路径时,判断所述第一存储区域是否有且只有所述第一节点; 所述第一存储区域有且只有所述第一节点,所述第二节点为分支节点时,从所述堆栈中弹出所述第二节点,清空所述第一存储区域,从所述第一节点流转至下一个待检测的节占.V, 所述第一存储区域有且只有所述第一节点,所述第二节点为互斥节点时,从所述堆栈中弹出所述第二节点,清空所述第一存储区域,判断所述堆栈中是否存在栈顶元素,所述堆栈中不存在栈顶元素时,从所述第一节点流转至下一个待检测的节点;所述堆栈中存在栈顶元素时,从所述堆栈中获取下一个栈顶元素作为第三节点,返回执行判断所述第三节点后是否存在未流转的路径。2.根据权利要求1所述的方法,其特征在于,所述方法还包括: 所述第一节点是聚合节点,所述第二节点后有未流转的路径时,从所述第二节点流转至下一个待检测的节点。3.根据权利要求1所述的方法,其特征在于,所述将所述第一节点存储至第一存储区域包括: 判断所述第一存储区域是否存储有节点; 当所述第一存储区域存储有节点时,判断所述第一存储区域存储的节点是否为所述第一节点;当所述第一存储区域存储的节点为所述第一节点时,所述第一节点存储至所述第一存储区域。4.根据权利要求1-3任意一项所述的方法,其特征在于,所述方法还包括: 当所述第一节点不是分支节点,也不是互斥节点,还不是聚合节点时,判断所述第二存储区域是否存在所述第一节点,当所述第二存储区域不存在所述第一节点时,将所述第一节点存储至所述第二存储区域,所述第二存储区域用于存储流程中分支节点,互斥节点以及聚合节点以外的节点。5.根据权利要求4所述的方法,其特征在于,所述方法还包括: 当所述第二存储区域存在所述第一节点时,获取所述堆栈的栈顶元素; 判断所述栈顶元素是否为互斥节点;当所述栈顶元素为互斥节点时,从所述第一节点流转至下一个待检测的节点。6.一种并行网关的节点检测装置,其特征在于,所述装置包括: 第一获取单元,用于获取流程中当前待检测的节点作为第一节点; 第一判断单元,用于判断所述第一节点的类型; 第一存储单元,用于当所述第一节点是分支节点或互斥节点时,将所述第一节点压入堆栈,所述堆栈用于存储分支节点和互斥节点; 第二存储单元,用于当所述第一节点是聚合节点时,将所述第一节点存储至第一存储区域,所述第一存储区域用于存储聚合节点; 第二判断单元,用于判断所述堆栈是否存储有节点; 第二获取单元,用于当所述堆栈存储有节点时,获取所述堆栈的栈顶元素作为第二节占.V, 第三判断单元,用于判断所述第二节点后是否存在未流转的路径; 第四判断单元,用于所述第二节点后没有未流转的路径时,判断所述第一存储区域是否有且只有所述第一节点; 第一处理单元,用于所述第一存储区域有且只有所述第一节点,所述第二节点为分支节点时,从所述堆栈中弹出所述第二节点,清空所述第一存储区域,从所述第一节点流转至下一个待检测的节点; 第五判断单元,用于所述第一存储区域有且只有所述第一节点,所述第二节点为互斥节点时,从所述堆栈中弹出所述第二节点,清空所述第一存储区域,判断所述堆栈中是否存在栈顶元素,所述堆栈中不存在栈顶元素时,从所述第一节点流转至下一个待检测的节点;所述堆栈中存在栈顶元素时,从所述堆栈中获取下一个栈顶元素作为第三节点,返回执行判断所述第三节点后是否存在未流转的路径。7.根据权利要求6所述的装置,其特征在于,所述装置还包括: 第二处理单元,用于所述第一节点是聚合节点,所述第二节点后有未流转的路径时,从所述第二节点流转至下一个待检测的节点。8.根据权利要求6所述的装置,其特征在于,所述第一存储单元包括: 第一判断子单元,用于判断所述第一存储区域是否存储有节点; 第二判断子单元,用于当所述第一存储区域存储有节点时,判断所述第一存储区域存储的节点是否为所述第一节点;当所述第一存储区域存储的节点为所述第一节点时,所述第一节点存储至所述第一存储区域。9.根据权利要求6-8任意一项所述的装置,其特征在于,所述装置还包括: 第六判断单元,用于当所述第一节点不是分支节点,也不是互斥节点,还不是聚合节点时,判断所述第二存储区域是否存在所述第一节点,当所述第二存储区域不存在所述第一节点时,将所述第一节点存储至所述第二存储区域,所述第二存储区域用于存储流程中分支节点,互斥节点以及聚合节点以外的节点。10.根据权利要求9所述的装置,其特征在于,所述装置还包括: 第三获取单元,用于当所述第二存储区域存在所述第一节点时,获取所述堆栈的栈顶元素; 第七判断单元,用于判断所述栈顶元素是否为互斥节点;当所述栈顶元素为互斥节点时,从所述第一节点流转至下一个待检测的节点。
【文档编号】G06F3/06GK105930105SQ201610342149
【公开日】2016年9月7日
【申请日】2016年5月20日
【发明人】王腾, 陈炜, 赵克强, 宦维祥, 刘家杰
【申请人】中国农业银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1