掌桥专利:专业的专利平台
掌桥专利
首页

流程节点定位方法、装置、设备、存储介质和计算机程序产品

文献发布时间:2024-07-23 01:35:21


流程节点定位方法、装置、设备、存储介质和计算机程序产品

技术领域

本发明的实施方式总体上涉及图形显示领域,更具体地,涉及一种流程节点定位方法、装置、设备、存储介质和计算机程序产品。

背景技术

目前,在企业管理或者生产操作中普遍会使用规范流程,例如,项目审批流程等等。在很多场景下需要对流程图进行显示。

当一个流程里面涉及非常复杂的审核流程时,特别是在可能通过多条路径走到同一个节点的情况下,存在多个节点如何在坐标系统上面如何分布的问题。传统的审批流节点坐标分布方案在面对这种复杂流程的时候,通常无法很好的计算出每个节点的坐标值。

发明内容

为了解决现有技术中的上述问题,在第一方面,本发明的实施方式提供了一种流程节点定位方法,所述方法包括:获取流程的节点数据和连接关系数据,其中,所述节点数据包括所述流程相关的节点,所述连接关系数据包括所述流程中节点之间的连接关系,其中每个连接关系具有起始节点和终止节点;根据所述连接关系数据,对所述流程中的节点按照深度优先进行排序;根据所述连接关系数据生成子节点映射表,其中,所述子节点映射表包括多个子节点映射条目,每个所述子节点映射条目包括关键词和子节点列表,将所述连接关系数据中的起始节点作为子节点映射条目的关键词,将终止节点加入到与该终止节点具有连接关系的起始节点中按照所述排序最靠前的起始节点作为关键词的子节点映射条目的子节点列表中;根据所述连接关系数据生成父节点映射表,其中,所述父节点映射表包括多个父节点映射条目,每个所述父节点映射条目包括关键词和父节点列表,将所述连接关系数据中的终止节点作为父节点映射条目的关键词,将具有相同终止节点的连接关系中的起始节点加入该相同终止节点作为关键词的父节点映射条目的父节点列表中;将所述流程的开始节点的第一维度坐标值设置为预定义的第一维度初始坐标值;针对所述流程中的当前节点,在所述父节点映射表中查询所述当前节点作为关键词的父节点映射条目,获取该父节点映射条目的父节点列表中的全部节点的第一维度坐标值,将其中最大的第一维度坐标值递增第一维度单元坐标值作为所述当前节点的第一维度坐标值;将所述流程相关的节点分为叶子节点和非叶子节点,其中叶子节点的子节点映射条目中的子节点列表为空,非叶子节点的子节点映射条目中的子节点列表不为空;针对每个叶子节点,按照每个叶子节点在所述排序中的顺序,在第二维度初始坐标值基础上依次递增第二维度单元坐标值,作为叶子节点的第二维度坐标值;针对每个非叶子节点,获取非叶子节点的子节点列表中的子节点的最大第二维度坐标值和最小第二维度坐标值,根据最大第二维度坐标值和最小第二维度坐标值确定非叶子节点的第二维度坐标值。

在一些实施方式中,根据所述连接关系数据,对所述流程中的节点按照深度优先进行排序包括:

根据所述连接关系数据生成连接关系树形结构,其中,每个连接关系中的起始节点是终止节点的父节点,具有相同父节点的子节点属于树形结构的同一层并且位于父节点所在层的下一层;

针对所述树形结构中的一个分支,首先将从该分支的顶层节点到任一底层节点的一条路径上的节点按照从顶层到底层的顺序进行序号标记,继而按照从底层到顶层的顺序,对与所述路径上的节点同层的、未进行序号标记的节点进行接续的序号标记;

在对前一分支中的所有节点全部进行序号标记之后,再对后一分支中的节点进行序号标记。

在一些实施方式中,所述方法还包括根据所述节点数据和所述连接关系数据检查是否符合以下条件(1)-(3):

(1)所述流程相关的节点包括第一预定数目个流程开始节点和第二预定数目个流程结束节点;

(2)所述流程开始节点不作为任何连接关系的终止节点;

(3)所述流程结束节点不作为任何连接关系的起始节点,

在条件(1)-(3)中任一项不符合的情况下,终止所述流程节点定位方法并生成数据合法性提示信息。

在一些实施方式中,所述第一维度坐标值是纵坐标值,所述第二维度坐标值是横坐标值;或者

所述第一维度坐标值是横坐标值,所述第二维度坐标值是纵坐标值。

在一些实施方式中,所述方法还包括:

将所述流程中全部节点的第一维度坐标值缩放第一比例,和/或

将所述流程中全部节点的第二维度坐标值缩放第二比例。

在一些实施方式中,根据最大第二维度坐标值和最小第二维度坐标值确定非叶子节点的第二维度坐标值包括:

计算所述最大第二维度坐标值和所述最小第二维度坐标值的均值作为非叶子节点的第二维度坐标值。

在第二方面,本发明的实施方式提出了一种流程节点定位装置,所述装置包括:流程数据获取模块,配置用于获取流程的节点数据和连接关系数据,其中,所述节点数据包括所述流程相关的节点,所述连接关系数据包括所述流程中节点之间的连接关系,其中每个连接关系具有起始节点和终止节点;节点排序模块,配置用于根据所述连接关系数据,对所述流程中的节点按照深度优先进行排序;子节点映射表生成模块,配置用于根据所述连接关系数据生成子节点映射表,其中,所述子节点映射表包括多个子节点映射条目,每个所述子节点映射条目包括关键词和子节点列表,将所述连接关系数据中的起始节点作为子节点映射条目的关键词,将终止节点加入到与该终止节点具有连接关系的起始节点中按照所述排序最靠前的起始节点作为关键词的子节点映射条目的子节点列表中;父节点映射表生成模块,配置用于根据所述连接关系数据生成父节点映射表,其中,所述父节点映射表包括多个父节点映射条目,每个所述父节点映射条目包括关键词和父节点列表,将所述连接关系数据中的终止节点作为父节点映射条目的关键词,将具有相同终止节点的连接关系中的起始节点加入该相同终止节点作为关键词的父节点映射条目的父节点列表中;第一维度初始坐标值设定模块,配置用于将所述流程的开始节点的第一维度坐标值设置为预定义的第一维度初始坐标值;第一维度递增坐标值设定模块,配置用于针对所述流程中的当前节点,在所述父节点映射表中查询所述当前节点作为关键词的父节点映射条目,获取该父节点映射条目的父节点列表中的全部节点的第一维度坐标值,将其中最大的第一维度坐标值递增第一维度单元坐标值作为所述当前节点的第一维度坐标值;节点划分模块,配置用于将所述流程相关的节点分为叶子节点和非叶子节点,其中叶子节点的子节点映射条目中的子节点列表为空,非叶子节点的子节点映射条目中的子节点列表不为空;叶子节点第二维度坐标值设定模块,配置用于针对每个叶子节点,按照每个叶子节点在所述排序中的顺序,在第二维度初始坐标值基础上依次递增第二维度单元坐标值,作为叶子节点的第二维度坐标值;非叶子节点第二维度坐标值设定模块,配置用于针对每个非叶子节点,获取非叶子节点的子节点列表中的子节点的最大第二维度坐标值和最小第二维度坐标值,根据最大第二维度坐标值和最小第二维度坐标值确定非叶子节点的第二维度坐标值。

在第三方面,本发明的实施方式提出了一种流程节点定位设备,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现上述任何实施方式描述的方法的步骤。

在第四方面,本发明的实施方式提出了一种存储介质,其上存储有计算机可读指令,所述指令被处理器执行时实现上述任何实施方式描述的方法的步骤。

在第五方面,本发明的实施方式提出了一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现上述任何实施方式描述的方法的步骤。

本发明的实施方式提出的流程节点定位方法、装置、设备、存储介质和计算机程序产品能够使得流程节点分布均匀合理,流程层次清晰明了,提升目视效率。而且,合理的布局使得图形显示很美观,极大地提高了用户体验。算法简洁高效,运算速度快,且无需耗费过多运算资源。

附图说明

通过参考附图阅读下文的详细描述,本发明实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:

图1示出了根据本发明的实施方式的流程节点定位方法的流程图;

图2示出了一个示例流程的树形结构图;

图3示出了根据本发明的实施方式对图2所示的示例流程中的节点进行节点排序后的示意图;

图4示出了另一个示例流程的树形结构图;

图5示出了根据本发明的另一实施方式对图4所示的示例流程中的节点进行节点排序后的示意图;

图6示出了一个示例流程的示意图;

图7示出了根据本发明的实施方式的流程节点定位方法对图6的示例流程进行节点定位后的示意显示图;

图8示出了另一示例流程的示意图;

图9示出了根据本发明的实施方式的流程节点定位方法对图8的示例流程进行节点定位后的示意显示图;

图10示出了根据本发明的实施方式的流程节点定位装置的框图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。

在一个方面,本发明的实施方式提供了一种流程节点定位方法。参考图1,其示出了根据本发明的实施方式的流程节点定位方法100的流程图。该方法100包括步骤S101-S109。

在步骤S101中,获取流程的节点数据(nodeList)和连接关系数据(relationList)。其中,节点数据(nodeList)包括流程相关的节点,以Node表示,Node有名称和id,连接关系数据(relationList)包括流程中节点之间的连接关系,其中每个连接关系具有起始节点(from节点id)和终止节点(to节点),例如使用from节点id和to节点id两个字段来表示,记录该连接关系从哪个节点指向哪个节点。

在步骤S102中,根据连接关系数据,对流程中的节点按照深度优先进行排序。通常,排序可以包括深度优先和广度优先两种方案。深度优先即是指从根节点出发,先从上往下,再从左到右,优先保证每个分支左边都走到最下面,然后再回过头来标记未标记的同层右侧数据,当本层都标记完了再标记父亲的兄弟。广度优先是指从根节点出发,先从左到右,再从上往下,也就是首先对属于同一层的全部节点进行排序,同层排序之后再对下一层的节点进行排序。

作为排序步骤的第一个实施方式,根据连接关系数据,对流程中的节点按照深度优先进行排序可以包括如下步骤:根据连接关系数据生成连接关系树形结构,其中,每个连接关系中的起始节点是终止节点的父节点,具有相同父节点的子节点属于树形结构的同一层并且位于父节点所在层的下一层;针对树形结构中的一个分支,首先将从该分支的顶层节点到任一底层节点的一条路径上的节点按照从顶层到底层的顺序进行序号标记,继而按照从底层到顶层的顺序,对与路径上的节点同层的、未进行序号标记的节点进行接续的序号标记;在对前一分支中的所有节点全部进行序号标记之后,再对后一分支中的节点进行序号标记。

下文结合图2-3对节点排序进行示例性描述。其中,图2示出了一个示例流程的树形结构图;图3示出了根据本发明的实施方式对图2所示的示例流程中的节点进行节点排序后的示意图。

假设获取到的连接关系数据(relationList)是混乱的,根据连接关系数据生成图2的树形结构,该流程中包括节点a-l,父子指向关系如图2所示。

按照深度优先策略,需要从根节点出发,从上往下,再从左到右,优先保证每个分支左边都走到最下面,然后再回过头来标记未标记的同层右侧数据,当本层都标记完了再标记父亲的兄弟,图2的树形结构按照这种方式标记之后的序号如图3所示。

作为排序步骤的第二个实施方式,对于同一节点存在于多个不同分支中的情况,也就是同一个节点作为多个不同分支中的多个父节点的子节点的情况,按照深度优先进行排序可以包括如下步骤:根据连接关系数据生成连接关系树形结构,其中,每个连接关系中的起始节点是终止节点的父节点,具有相同父节点的子节点属于树形结构的同一层并且位于父节点所在层的下一层;针对树形结构中的一个分支,首先将从该分支的顶层节点到任一底层节点的一条路径上的节点按照从顶层到底层的顺序进行序号标记,继而按照从底层到顶层的顺序,对与路径上的节点同层的、未进行序号标记的节点进行接续的序号标记;在对前一分支中的所有节点全部进行序号标记之后,再对后一分支中的节点进行序号标记,并且,对于同一节点存在于多个不同分支中的情况,以在后分支中的序号标记为准。

下文结合图4-5对节点排序的另一种情况进行示例性描述。其中,图4示出了另一个示例流程的树形结构图;图5示出了根据本发明的另一实施方式对图4所示的示例流程中的节点进行节点排序后的示意图。

图4与图2所示的流程相比的不同之处在于,增加了节点c到节点e的一条连接关系。在这种情况下,节点e同时处于两个分支中,即以b为顶层节点的分支和以c为顶层节点的分支。

根据排序步骤的第二个实施方式,在对节点b所在分支进行序号标记时,节点e被标记为2。继而在对节点c所在分支进行序号标记时,按照该分支中的排序,节点e被标记为5,以在后分支的序号标记为准,则节点e最终被标记为5。

如图5所示,可选地,当一个节点被多次标记时,在前的序号将为空,在节点e被重新标记为5之后,2这个序号就不再存在,而无需将其他节点进行重新编号,这样可以简化运算和程序,并且前面某个序号的消失并不影响后面序号之间的前后顺序。

以下给出排序逻辑的实现方式的一个具体示例。需要注意,函数和变量的设计仅是作为示例给出的,而不以任何方式限制本发明。

定义一个calculateSort(int parentId,currentNum)方法,将根节点排序标记为0,然后将根节点的id作为parentId,currentNum=0作为入参调用calculateSort方法,currentNum作为局部变量。calculateSort方法主要就两个作用,一个是给传入的该parentId分支下的小孩、孙子、重孙子标记排序下标,另一个就是计算该parentId分支下的小孩,孙子,重孙子加在一起的数量offspringCount作为返回值。

calculateSort方法的实现逻辑包括以下(1)-(5)。

(1)定义offspringCount=0。

(2)for循环relationList,比对每个元素的fromId,找出fromId等于传入的parentId的所有节点,则这些节点为传入的parentId的直接小孩,将这些小孩装入到childrenList当中。

(3)如果childrenList为0,则calculateSort直接结束,返回offspringCount。如果childrenList不为0,则进入后面步骤。

(4)定义brother_offspringCount变量,用来标记兄弟节点分支递归调用calculateSort结果的返回值,将brother_offspringCount初始化为0。

(5)for循环childrenList,将当前的currentNum自增1,然后currentNum再加上brother_offspringCount的值,然后将当前currentNum设置为该小孩节点的排序值,然后将该小孩的id作为parentId和当前的currentNum作为入参递归调用calculateSort方法,并将返回值记入到brother_offspringCount当中。

经过calculateSort方法之后,所有节点的排序被设置完成。

在步骤S103中,根据连接关系数据生成子节点映射表,即,子节点Map(childrenMapchildrenList>)。其中,子节点映射表包括多个子节点映射条目,每个子节点映射条目包括关键词和子节点列表,将连接关系数据中的起始节点作为子节点映射条目的关键词,将终止节点加入到与该终止节点具有连接关系的起始节点中按照排序最靠前的起始节点作为关键词的子节点映射条目的子节点列表中。也就是说,一个节点只放在其一个父节点的子节点列表中,当一个节点具有多个父节点时,只放在这些父节点中排序最靠前的一个父节点的子节点列表中。举例而言,节点a具有三个父节点b、c、d,按照步骤S102中获得的排序,假定这三个父节点在排序中的先后顺序是c、b、d。则节点a只放在节点c作为关键词的子节点映射条目的子节点列表中(也可以说只放在节点c的子节点列表中),而不再放在b、d作为关键词的子节点映射条目的子节点列表中。

子节点映射表生成的逻辑的一个具体示例可以如下。

for循环relationList里面的每一个元素,fromId作为childrenMap的key(作为key的是父亲节点,后面挂的那些节点都是它的小孩),检查是否存在其childrenList,如果不存在,则创建一个空的childrenList。这个时候检查toId对应的Node节点是否已经作为其他节点的小孩了,在实际关系当中,一个节点可以有多个父亲节点,即,同时作为多个节点的小孩节点,但在childrenMap记录的时候,只把这个节点记录给一个父亲节点作为小孩,不然后面会出现数据重复的地方,并且这个时候将第一个出现的父亲节点记录到该节点的父亲节点字段当中。如果toId对应的Node节点已经是其他节点的小孩,则在这个循环当中什么都不做,如果它不是任何其他节点的小孩,则将当前toId对应的Node节点添加到childrenList的尾部。经过一轮循环,整个childrenMap则可以清楚的表示每个node下面挂有哪些子节点,并且每个节点它的直接子节点数量(childrenNum)也知道了。

步骤S103中对于子节点列表的上述处理方式,即,当一个节点具有多个父节点时,只放在这些父节点中排序最靠前的父节点的子节点列表中,与确定节点的第二维度坐标值的步骤S107是相适配的。对于“一个节点具有多个父节点”这一情况下,这样的处理可以简化确定节点第二维度坐标值的运算和逻辑复杂度。

在步骤S104中,根据连接关系数据生成父节点映射表,即,父节点Map(parentMapparentList>)。其中,将连接关系数据中的终止节点作为父节点映射表中的每个父节点映射条目的关键词,将具有相同终止节点的连接关系中的起始节点加入该相同终止节点作为关键词的父节点映射条目中的父节点列表。

父节点映射表生成的逻辑的一个具体示例可以如下。

for循环relationList里面的每一个元素,toId作为parentMap的key(作为key的是子节点,后面挂的那些节点都是它的父亲),检查是否存在其parentList,如果不存在,则创建一个空的parentList,然后将当前fromId对应的Node节点添加到parentList的尾部。经过一轮循环,整个parentMap则可以清楚的表示每个node上面有哪些父节点直接指向自己。

每个节点的定位由第一维度坐标值和第二维度坐标值构成。作为本发明的一个实施方式,第一维度坐标值是纵坐标值,第二维度坐标值是横坐标值。作为本发明的另一个实施方式,第一维度坐标值是横坐标值,第二维度坐标值是纵坐标值。

在步骤S105中,将流程的开始节点的第一维度坐标值设置为预定义的第一维度初始坐标值。

在步骤S106中,针对流程中的当前节点,在父节点映射表中查询当前节点作为关键词的父节点映射条目,获取该父节点映射条目的父节点列表中的全部节点的第一维度坐标值,将其中最大的第一维度坐标值递增第一维度单元坐标值作为当前节点的第一维度坐标值。

以第一维度坐标值为纵坐标y为例,从开始节点到当前节点可能有多个路径,其中经过节点最多的那个路径当中节点的数量作为坐标y值,开始节点本身的y值设置为纵坐标初始值,例如,设置为1。

for循环relationList里面的每一个元素,计算每一个元素的y值,在计算当前节点的y值时,以当前节点的id作为key查询出parentMap当中对应的parentList的值,然后取出每个父节点的y值,其中最大的父节点y值增加第一维度单元坐标值(例如,+1)则表示当前节点的y值。

自己的父节点如果是开始节点,则父节点的y值为1,如果不为开始节点,则该节点必可以通过递归的方式向上继续找父节点,直到找到超始节点为止。通过递归次数可以设置出父亲节点的y值。

在步骤S107中,将流程相关的节点分为叶子节点和非叶子节点。其中叶子节点的子节点映射条目中的子节点列表childrenList为空,也就是,叶子节点是下面没有挂其他子节点的节点。非叶子节点的子节点映射条目中的子节点列表childrenList不为空。

需要注意的是,步骤S107中对叶子节点和非叶子节点的判定与实际连接关系树形结构中真实的叶子和非叶子的概念不同。具体地,步骤S107是以子节点列表childrenList是否为空作为判断是否是叶子节点的基础,然而,如步骤S103中所描述的,在生成子节点映射表时,将连接关系中的终止节点加入到该终止节点第一次出现的连接关系的起始节点作为关键词的子节点映射条目中,作为该子节点映射条目的子节点列表。也就是说,当该终止节点同时作为多个连接关系中的终止节点时,它仅出现在按照排序的第一个连接关系的起始节点的子节点列表中,而不存在于另外其他连接关系的起始节点的子节点列表中。因此,可能存在这样的情况:例如,根据连接关系,B节点是存在子节点C的,但是由于其子节点C已经出现在前面节点A的子节点列表中,则子节点C将不再出现在B节点的子节点列表中,从而导致B节点的子节点列表为空,从而,根据根据本发明的实施方式提出的方法100的步骤S107,将会把B节点判定为叶子节点。

在步骤S108中,针对每个叶子节点,按照每个叶子节点在排序中的顺序,在第二维度初始坐标值基础上依次递增第二维度单元坐标值,作为叶子节点的第二维度坐标值。该步骤依赖于前面步骤S102的排序。

以第二维度坐标值为横坐标x为例,具体实现逻辑的一个示例可以是:for循环所有叶子节点的元素,按照步骤S102中的排序依次递增,例如,直接将横坐标按从0,1,2,3向上依次设置。将所有叶子节点的x轴设置完成。

返回参考图4-5,在同一个节点存在于多个分支的情况下,根据排序步骤的第二个实施方式所提出的特定处理方式,节点e的序号被标记为5,其序号大于节点f的序号3,则在对叶子节点进行定位时,节点e会位于节点f的右侧(与图5所示位置不同),那么c到e的连线将不再与b到f的连线交叉。而如果不采用排序的第二个实施方式所提出的特定处理方式,节点e的序号仍然为2,则节点e的序号小于节点f的序号,在对叶子节点定位时,e会位于f的左侧,与图5所示相同,就会造成c到e的连线与b到f的连线交叉。因此,对于同一节点存在于多个分支的情况,通过采用排序的前述第二个实施方式,将一定程度上避免连线交叉,提升视图的美观和可看性。

在步骤S109中,针对每个非叶子节点,获取非叶子节点的子节点列表中的子节点的最大第二维度坐标值和最小第二维度坐标值,根据最大第二维度坐标值和最小第二维度坐标值确定非叶子节点的第二维度坐标值。可选地,可以计算最大第二维度坐标值和最小第二维度坐标值的均值作为非叶子节点的第二维度坐标值。备选地,可以计算最大第二维度坐标值和最小第二维度坐标值的加权平均值作为非叶子节点的第二维度坐标值。

以第二维度坐标值为横坐标x为例,具体实现逻辑的一个示例可以是:for循环所有非叶子节点的元素,计算这些非叶子节点元素的x值,计算逻辑是取他们所有小孩的x值,取出小孩当中最大的x和最小的x值的平均值。非叶子元素小孩的x值可以通过该步骤的递归来做。

如果该小孩已经是叶子节点,那在上一步骤已经设置过x值,如果该小孩还不是叶子节点,仍然有自己的小孩,则将它作为非叶子节点元素,通过计算该节点所有子节点中最大值和最小值的平均值作为自己的横坐标。

前述步骤S103中对于子节点列表的上述处理方式,即,当一个节点具有多个父节点时,只放在这些父节点中排序最靠前的父节点的子节点列表中,与确定节点的第二维度坐标值的步骤S108-S109是相适配的。对于“一个节点具有多个父节点”这种情况,如果不采用步骤S103这样的处理,则在步骤S108-S109确定节点的第二维度坐标值时,将会出现数据重复。因此,本发明的实施方式所描述的步骤S103中这样的处理方式可以简化确定节点第二维度坐标值的运算和逻辑复杂度。

作为本发明的一个实施方式,在计算节点的坐标值之前,可以增加对流程数据的合法性检查。例如,根据节点数据和连接关系数据检查是否符合以下条件(1)-(3):

(1)流程相关的节点包括第一预定数目个流程开始节点和第二预定数目个流程结束节点,例如,可以规定整个审批流程必须有且只有一个开始节点,整个审批流程必须有且只有一个结束节点,等等;

(2)流程开始节点不作为任何连接关系的终止节点,即,不能有节点指向开始节点;

(3)流程结束节点不作为任何连接关系的起始节点,即,不能有节点被结束节点指向。

在条件(1)-(3)中任一项不符合的情况下,终止该流程节点定位方法并生成数据合法性提示信息。

作为本发明的一个实施方式,在确定了节点的第一维度坐标值和第二维度坐标值之后,该方法还可以包括:将流程中全部节点的第一维度坐标值缩放第一比例,和/或,将流程中全部节点的第二维度坐标值缩放第二比例。例如,为了使坐标在页面上展示更好看,可以将所有节点的x值放大140倍,y值放大200倍。缩放倍数可以根据具体场景和页面尺寸而灵活调整。

参考图6-7,其中,图6示出了一个示例流程的示意图;图7示出了根据本发明的实施方式的流程节点定位方法对图6的示例流程进行节点定位后的示意显示图。

在图6所示的示例中,有1,2,3,4,5,6六个节点,其中1->2,2->6,1->3,3->4,1->4,4->6,1->5,5->6,1->6,按照一般的流程排序规则,所有流程节点在一条线上面。通过本发明的实施方式提出的流程节点定位方法,对节点进行定位之后流程图如图7所示。

参考图8-9,其中,图8示出了另一示例流程的示意图;图9示出了根据本发明的实施方式的流程节点定位方法对图8的示例流程进行节点定位后的示意显示图。

图8在图6的基础上增加了2也指向5这一连接关系,即,1->2,2->5,2->6,1->3,3->4,1->4,4->6,1->5,5->6,1->6。同样按照一般的流程排序规则,所有流程节点在一条线上面。通过本发明的实施方式提出的流程节点定位方法,对节点进行定位之后流程图如图9所示。

可以看出,图6、8的流程图显示方式比较生硬,均为平行线条,使得流程的流转过程不清晰且容易看错。与之相比,图7、图9进行节点的定位之后,流程的流转过程层次清晰明了,节点分布均匀合理,能够更恰当地表现出流程的流转和层级,一目了然,提升目视效率。而且,合理的布局使得图形显示很美观,极大地提高了用户体验。

在另一方面,本发明的实施方式提出了一种流程节点定位装置,参考图10,其示出了根据本发明的实施方式的流程节点定位装置的框图。该装置包括模块1001-1009。

流程数据获取模块1001可以配置用于获取流程的节点数据和连接关系数据,其中,节点数据包括流程相关的节点,连接关系数据包括流程中节点之间的连接关系,其中每个连接关系具有起始节点和终止节点。

节点排序模块1002可以配置用于根据连接关系数据,对流程中的节点按照深度优先进行排序。

子节点映射表生成模块1003可以配置用于根据连接关系数据生成子节点映射表,其中,将连接关系数据中的起始节点作为子节点映射表中的每个子节点映射条目的关键词,对连接关系数据中的连接关系进行遍历,将终止节点加入到该终止节点第一次出现的连接关系的起始节点作为关键词的子节点映射条目中,作为该子节点映射条目的子节点列表。

父节点映射表生成模块1004可以配置用于根据连接关系数据生成父节点映射表,其中,将连接关系数据中的终止节点作为父节点映射表中的每个父节点映射条目的关键词,将具有相同终止节点的连接关系中的起始节点加入该相同终止节点作为关键词的父节点映射条目中的父节点列表。

第一维度初始坐标值设定模块1005可以配置用于将流程的开始节点的第一维度坐标值设置为预定义的第一维度初始坐标值。

第一维度递增坐标值设定模块1006可以配置用于针对流程中的当前节点,在父节点映射表中查询当前节点作为关键词的父节点映射条目,获取该父节点映射条目的父节点列表中的全部节点的第一维度坐标值,将其中最大的第一维度坐标值递增第一维度单元坐标值作为当前节点的第一维度坐标值。

节点划分模块1007可以配置用于将流程相关的节点分为叶子节点和非叶子节点,其中叶子节点的子节点映射条目中的子节点列表为空,非叶子节点的子节点映射条目中的子节点列表不为空。

叶子节点第二维度坐标值设定模块1008可以配置用于针对每个叶子节点,按照每个叶子节点在排序中的顺序,在第二维度初始坐标值基础上依次递增第二维度单元坐标值,作为叶子节点的第二维度坐标值。

非叶子节点第二维度坐标值设定模块1009可以配置用于针对每个非叶子节点,获取非叶子节点的子节点列表中的子节点的最大第二维度坐标值和最小第二维度坐标值,根据最大第二维度坐标值和最小第二维度坐标值确定非叶子节点的第二维度坐标值。

需要注意的是,本发明的实施方式提出的流程节点定位装置中的各个模块实现的功能与上文描述的流程节点定位方法的各个步骤一一对应,其具体实施方式、示例和有益效果请参见上文对于方法的描述。

在又一方面,本发明的实施方式提出了一种流程节点定位设备,包括存储器、处理器及存储在存储器上的计算机程序,处理器执行该计算机程序以实现上述任何实施方式描述的流程节点定位方法的步骤。

在又一方面,本发明的实施方式提出了一种存储介质,其上存储有计算机可读指令,指令被处理器执行时实现上述任何实施方式描述的流程节点定位方法的步骤。

在又一方面,本发明的实施方式提出了一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现上述任何实施方式描述的流程节点定位方法的步骤。

本发明的实施方式提出的流程节点定位方法、装置、设备、存储介质和计算机程序产品能够使得流程节点分布均匀合理,流程层次清晰明了,提升目视效率。而且,合理的布局使得图形显示很美观,极大地提高了用户体验。算法简洁高效,运算速度快,且无需耗费过多运算资源。

出于示意的目的,已经给出了本发明的实施方式的前述说明,其并非是穷举性的也并非要将本发明限制为所公开的确切形式。本领域技术人员可以理解的是,在不偏离本发明的范围的情况下可以做出各种变化,并且可以将其中的元件替换为等同物。另外,在不偏离本发明的基本范围的情况下,可以进行很多修改以使得特定的情况或材料适应于本发明的教导。因此,本发明不试图限制于所公开的作为用于实现本发明所预期的最佳模式的特定实施方式,本发明将包括落入所附的权利要求的范围内的所有实施方式。

相关技术
  • 流程节点处理方法、装置、计算机设备及存储介质
  • 保单节点流程的发送方法、装置、计算机设备和存储介质
  • 图像分类方法及装置、电子设备、计算机程序及存储介质
  • 代表节点设备选举方法、装置、计算机设备及存储介质
  • 一种节点初始化的方法、装置、设备及存储介质
  • 定位方法、装置、电子设备、存储介质及计算机程序产品
  • 定位方法、装置、计算机设备、存储介质和计算机程序产品
技术分类

06120116678716