一种基于广度遍历+僵枝切除的工作流实现方法技术

技术编号:25638791 阅读:35 留言:0更新日期:2020-09-15 21:30
本发明专利技术提供了一种基于广度遍历+僵枝切除的工作流实现方法,包括可视化配置、流程提交、工作流引擎自动推送三个步骤。本发明专利技术适合自我研发,开发出超轻量级的工作流,表单采用自定义开发,二者采用松耦合,工作流表与业务表严格分开发,通过配置进行挂接,加载,实现工作流串行、并行、汇聚等核心功能,可以极大地提高开发效率,开发出用户满意的产品。

【技术实现步骤摘要】
一种基于广度遍历+僵枝切除的工作流实现方法
本专利技术为业务流程管理领域,具体涉及一种基于广度遍历算法+僵枝切除的工作流实现方法。
技术介绍
工作流是实现工程任务全过程管理的核心支撑部分,能有效的对各项工作进行监控,衔接,完成业务的传递。工作流(Workflow),即“业务过程的部分或整体在计算机应用环境下的自动化”,主要解决“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。也可以说工作流管理系统就是通过管理一系列的工作活动以及相关人员、资源、信息技术资料来提供业务处理程序上的自动控制,该系统通过计算机软件来定义、管理和执行工作流程。在工作流管理系统中计算机运用程序的执行顺序是由工作流逻辑的计算机描述来驱动的。它的主要目标是对业务过程中各步骤(或称活动、环节)发生的先后次序,和同各个步骤相关的人力资源、信息资料的调用进行管理,从而实现业务过程的自动化。针对中小项目,如果购买商业化工作流,价格昂贵,成本高;如果采用开源的工作流,系统质量不好保证,出现问题不好修改,可控性差。本专利技术适合自我研发,开发出超轻量级的工作流,表单采用自定义开发,二者采用松耦合,工作流表与业务表严格分开发,通过配置进行挂接,加载,实现工作流串行、并行、汇聚等核心功能,可以极大地提高开发效率,开发出用户满意的产品。
技术实现思路
本专利技术目的是提供了一种基于广度遍历算法+僵枝切除的工作流实现方法,解决了开发成本高、系统质量差和开发效率低等问题。本专利技术为实现上述目的,通过以下技术方案实现:一种基于广度遍历+僵枝切除的工作流实现方法,包括可视化配置、流程提交、工作流引擎自动推送三个步骤,具体包括以下步骤:1)打开流程配置器,通过设置节点和连接线的连接方式和方向进行流程可视化配置,包括流程配置、表单配置、可写字段配置、经办人配置;2)业务表单进行业务数据处理后,调用工作流进行工作流流转,对于复杂的汇聚流转,则需要工作流引擎的支持;3)工作流引擎自动推送,首先获取当前工作和该工作对应的流程,生成AOV网络;4)遍历AOV网获取入度为0的节点,压入栈;5)判断栈内是否有元素,如果有元素继续进行步骤6);如果元素没有则获取所有节点,激活需要激活的节点并结束;6)栈内的元素出栈,判断节点类型,根据元素节点的类型进行相应的步骤,a、节点类型=僵死,更新该节点的所有孩子节点的父分支僵死数量+1--->sonNode.parentDeadBranchCount++,继续进行步骤7);b、节点类型=激活,更新该节点的所有孩子节点为休眠,sonNode.state=休眠,继续进行步骤7)c、节点类型=完成,如果孩子节点有僵死分支,更新该子节点父分支僵死数量+1;如果孩子节点没有僵死分支,更新该子节点父分支激活数量加1,继续进行步骤7);d、节点类型=休眠,如果父分支休眠数量>0,更新所有孩子节点为睡眠状态,继续进行步骤7);否则继续判断父分支僵死数量是否等于父节点数量,如果相等,更新当前节点为僵死,并更新所有子节点父僵死数量加1,继续进行步骤7);否则继续判断父分支激活数量是否大于0,如果是则更新节点状态为需要激活,继续进行步骤7);7)获取孩子节点入度==1的节点压入栈TEMP_STACK,跳转至步骤8);8)判断栈是否有元素,如果有则继续步骤6),若没有则获取TEMP_STACK栈中的元素,并压入栈继续步骤5)。优选的,所述流程配置与表单配置中本流程只包含一个业务表单,只需在流程上配置业务表单。优选的,所述流程配置与表单配置中本流程包含多个业务表单,在对应节点上配置业务表单。优选的,所述的工作流流转方式有串行流转和分支流转。本专利技术的优点在于:适合自我研发,开发出超轻量级的工作流,表单采用自定义开发,二者采用松耦合,工作流表与业务表严格分开发,通过配置进行挂接,加载,实现工作流串行、并行、汇聚等核心功能,可以极大地提高开发效率,开发出用户满意的产品。附图说明附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术,并不构成对本专利技术的限制。图1为本专利技术工作流流程设计示意图。图2为本专利技术工作流接口实现流程示意图。图3为工作流引擎流程示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术分为流程可视化配置、流程提交、流程自动推送三个步骤。步骤一、流程可视化配置,具体过程如下:步骤101、打开流程配置器,流程配置器包括节点配置、连接线配置。拖拽开始节点、中间节点、结束节点,设置节点之间的连接线与方向。步骤102、流程与表单配置,主要写明流程名称、对应表单、流程类型、有效状态、允许监控用户。一个流程根据业务需要可能会有一个或者多个业务表单配合完成业务。若流程只包含一个业务表单,则在流程上配置该业务表单,所有的流程节点默认采用流程表单;如果流程包含多个业务表单,则在对应的节点配置业务表单。如果执行到相应节点,首先获取节点配置表单,如果为空,则获取流程配置表单。步骤103、配置下一个活动节点,此处需注意同一流程下的活动序号不允许重复。步骤104、可写字段配置,可写字段列表中,读取的为该活动对应业务表单字段,可根据活动需要设置其组件状态。步骤105、经办人配置,配置本活动的经办人,若经办人选择模式为同部门,则只处理上一活动经办人与本人为同一部门的活动事务。步骤二、流程提交,具体过程如下:业务表单在进行业务数据处理后,调用工作流进行工作流流转(主要为串行流转、分支流转),对于复杂的汇聚流转,则需要工作流引擎的支持。步骤201、工作流提交。步骤202、如果当前工作实例不存在,则进行工作的创建、工作活动的创建、工作项的创建。步骤202、设置当前工作项为完成状态,同时获取下一个活动节点。步骤203、判断流转模式(模式1:任意人通过则通过;模式2:会审,全部通过为通过),如果为模式1,则设置其他工作项为自动通过。步骤204、判断当前活动的所有工作项是否完成,如果所有工作项没有完成,则结束。否则进行步骤205。步骤205、设置当前活动为完成状态。步骤206、如果活动为结束节点,则设置整个工作为结束状态。同时判断本工作是否为子流程,如果为子流程,设置父流程对应活动为完成(更新对应工作项),进行父流程触发状态。步骤207、如果活动为中间节点,获取所有的后续活动(就绪活动),对就绪活动进行遍历。如果就绪活动的前置活动本文档来自技高网...

【技术保护点】
1.一种基于广度遍历+僵枝切除的工作流实现方法,其特征在于,包括可视化配置、流程提交、工作流引擎自动推送三个步骤,具体包括以下步骤:/n1)打开流程配置器,通过设置节点和连接线的连接方式和方向进行流程可视化配置,包括流程配置与表单配置、可写字段配置、经办人配置;/n2)业务表单进行业务数据处理后,调用工作流进行工作流流转,再由工作流引擎推送;/n3)工作流引擎自动推送,首先获取当前工作和该工作对应的流程,生成AOV网络;/n4)遍历AOV网获取入度为0的节点,压入栈;/n5)判断栈内是否有元素,如果有元素继续进行步骤6);如果元素没有则获取所有节点,激活需要激活的节点并结束;/n 6)栈内的元素出栈,判断节点类型,根据元素节点的类型进行相应的步骤,/na、节点类型=僵死,更新该节点的所有孩子节点的父分支僵死数量+1--->sonNode.parentDeadBranchCount++,继续进行步骤7);/nb、节点类型=激活,更新该节点的所有孩子节点为休眠,sonNode.state=休眠,继续进行步骤7)/nc、节点类型=完成,如果孩子节点有僵死分支,更新该子节点父分支僵死数量+1;如果孩子节点没有僵死分支,更新该子节点父分支激活数量加1,继续进行步骤7);/nd、节点类型=休眠,如果父分支休眠数量>0 ,更新所有孩子节点为睡眠状态,继续进行步骤7);否则继续判断父分支僵死数量是否等于父节点数量,如果相等,更新当前节点为僵死,并更新所有子节点父僵死数量加1,继续进行步骤7);否则继续判断父分支激活数量是否大于0,如果是则更新节点状态为需要激活,继续进行步骤7);/n7)获取孩子节点入度==1的节点压入栈TEMP_STACK,跳转至步骤8);/n8)判断栈是否有元素,如果有则继续步骤6),若没有则获取TEMP_STACK栈中的元素,并压入栈继续步骤5)。/n...

【技术特征摘要】
1.一种基于广度遍历+僵枝切除的工作流实现方法,其特征在于,包括可视化配置、流程提交、工作流引擎自动推送三个步骤,具体包括以下步骤:
1)打开流程配置器,通过设置节点和连接线的连接方式和方向进行流程可视化配置,包括流程配置与表单配置、可写字段配置、经办人配置;
2)业务表单进行业务数据处理后,调用工作流进行工作流流转,再由工作流引擎推送;
3)工作流引擎自动推送,首先获取当前工作和该工作对应的流程,生成AOV网络;
4)遍历AOV网获取入度为0的节点,压入栈;
5)判断栈内是否有元素,如果有元素继续进行步骤6);如果元素没有则获取所有节点,激活需要激活的节点并结束;
6)栈内的元素出栈,判断节点类型,根据元素节点的类型进行相应的步骤,
a、节点类型=僵死,更新该节点的所有孩子节点的父分支僵死数量+1--->sonNode.parentDeadBranchCount++,继续进行步骤7);
b、节点类型=激活,更新该节点的所有孩子节点为休眠,sonNode.state=休眠,继续进行步骤7)
c、节点类型=完成,如果孩子节点有僵死分支,更新该子节点父分支僵死数量+1;如果孩子节点没有僵死分支...

【专利技术属性】
技术研发人员:刘新锋尹义龙宋冰飞杨磊张朝阳胡雪梅张雪华卢俏丽
申请(专利权)人:山东建筑大学
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1