CN111667239B - 一种基于广度遍历+僵枝切除的工作流实现方法 - Google Patents
一种基于广度遍历+僵枝切除的工作流实现方法 Download PDFInfo
- Publication number
- CN111667239B CN111667239B CN202010460879.3A CN202010460879A CN111667239B CN 111667239 B CN111667239 B CN 111667239B CN 202010460879 A CN202010460879 A CN 202010460879A CN 111667239 B CN111667239 B CN 111667239B
- Authority
- CN
- China
- Prior art keywords
- workflow
- node
- nodes
- stack
- branch
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Abstract
本发明提供了一种基于广度遍历+僵枝切除的工作流实现方法,包括可视化配置、流程提交、工作流引擎自动推送三个步骤。本发明适合自我研发,开发出超轻量级的工作流,表单采用自定义开发,二者采用松耦合,工作流表与业务表严格分开发,通过配置进行挂接,加载,实现工作流串行、并行、汇聚等核心功能,可以极大地提高开发效率,开发出用户满意的产品。
Description
技术领域
本发明为业务流程管理领域,具体涉及一种基于广度遍历算法+僵枝切除的工作流实现方法。
背景技术
工作流是实现工程任务全过程管理的核心支撑部分,能有效的对各项工作进行监控,衔接,完成业务的传递。工作流(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、如果活动为中间节点,获取所有的后续活动(就绪活动),对就绪活动进行遍历。如果就绪活动的前置活动已经完成,则激活该就绪活动,否则不做处理,交给工作流引擎进行处理。
步骤三、工作流引擎自动推送:
步骤301、获取当前工作和该工作对应的流程,生成AOV网络。
步骤302、获取所有入度为0的节点,压入栈A。
步骤303、判断栈A是否有元素,如果没有,则获取所有节点,激活需要计划的节点,并结束,否则,转步骤304。
步骤304、栈A元素节点出栈,判断节点类型,节点类型=僵死,转步骤305;节点类型=激活,转步骤306;节点类型=完成,转步骤307;节点类型=休眠,转步骤308。
步骤305、节点类型=僵死,更新该节点的所有孩子节点的父分支僵死数量+1--->sonNode.parentDeadBranchCount++。
步骤306、节点类型=激活,更新该节点的所有孩子节点为休眠,sonNode.state=休眠。
步骤307、节点类型=完成,如果孩子节点有僵死分支,更新该子节点父分支僵死数量+1;如果孩子节点没有僵死分支,更新该子节点父分支激活数量+1。
步骤308、节点类型=休眠,如果父分支休眠数量>0 (parentBranchSleepCount>0),更新所有孩子节点为睡眠状态,否则,转步骤309。
步骤309、判断父分支僵死数量==父节点数量(parentBranchDeadCount ==parentNodeCount),如果相等,更新当前节点为僵死,并更新所有子节点父僵死数量+1,否则转步骤310。
步骤310、如果父分支激活数量>0,更新节点状态为需要激活,转步骤311。
步骤311、获取孩子节点入度==1的压入栈TEMP_STACK,转步骤312。
步骤312、判断栈A是否有元素,如果没有,则获取TEMP_STACK栈中的元素,并推入A栈,并转步骤303,否则,转步骤304。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种基于广度遍历+僵枝切除的工作流实现方法,其特征在于,包括可视化配置、流程提交、工作流引擎自动推送三个步骤,具体包括以下步骤:
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)。
2.根据权利要求1所述的基于广度遍历+僵枝切除的工作流实现方法,其特征在于,所述流程配置与表单配置中本流程只包含一个业务表单,只需在流程上配置业务表单。
3.根据权利要求1所述的基于广度遍历+僵枝切除的工作流实现方法,其特征在于,所述流程配置与表单配置中本流程包含多个业务表单,在对应节点上配置业务表单。
4.根据权利要求1所述的基于广度遍历+僵枝切除的工作流实现方法,其特征在于,所述的工作流流转方式有串行流转和分支流转。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010460879.3A CN111667239B (zh) | 2020-05-27 | 2020-05-27 | 一种基于广度遍历+僵枝切除的工作流实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010460879.3A CN111667239B (zh) | 2020-05-27 | 2020-05-27 | 一种基于广度遍历+僵枝切除的工作流实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111667239A CN111667239A (zh) | 2020-09-15 |
CN111667239B true CN111667239B (zh) | 2023-04-18 |
Family
ID=72384851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010460879.3A Active CN111667239B (zh) | 2020-05-27 | 2020-05-27 | 一种基于广度遍历+僵枝切除的工作流实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111667239B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101489188A (zh) * | 2009-02-25 | 2009-07-22 | 南京邮电大学 | 多媒体传感器网络接入技术中网关发现方法 |
CN102298740A (zh) * | 2011-09-23 | 2011-12-28 | 深圳市华波美通信技术有限公司 | 一种业务流程管理支持方法 |
CN105700888A (zh) * | 2016-01-14 | 2016-06-22 | 国网山东省电力公司物资公司 | 一种基于jbpm工作流引擎的可视化快速开发平台 |
CN107103448A (zh) * | 2016-02-23 | 2017-08-29 | 上海御行信息技术有限公司 | 基于工作流的数据集成系统 |
CN108305010A (zh) * | 2018-02-10 | 2018-07-20 | 西安精雕软件科技有限公司 | 一种工作流引擎系统及其跨平台、跨应用的流程推进方法 |
CN109416928A (zh) * | 2016-06-07 | 2019-03-01 | 伊路米纳有限公司 | 用于进行二级和/或三级处理的生物信息学系统、设备和方法 |
CN110489214A (zh) * | 2019-06-19 | 2019-11-22 | 南京邮电大学 | 云环境中数据密集型工作流的动态任务分配 |
CN110619473A (zh) * | 2019-09-19 | 2019-12-27 | 福建博思软件股份有限公司 | 基于Activiti工作流实现逆向流转的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8381181B2 (en) * | 2007-08-31 | 2013-02-19 | International Business Machines Corporation | Updating a workflow when a user reaches an impasse in the workflow |
-
2020
- 2020-05-27 CN CN202010460879.3A patent/CN111667239B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101489188A (zh) * | 2009-02-25 | 2009-07-22 | 南京邮电大学 | 多媒体传感器网络接入技术中网关发现方法 |
CN102298740A (zh) * | 2011-09-23 | 2011-12-28 | 深圳市华波美通信技术有限公司 | 一种业务流程管理支持方法 |
CN105700888A (zh) * | 2016-01-14 | 2016-06-22 | 国网山东省电力公司物资公司 | 一种基于jbpm工作流引擎的可视化快速开发平台 |
CN107103448A (zh) * | 2016-02-23 | 2017-08-29 | 上海御行信息技术有限公司 | 基于工作流的数据集成系统 |
CN109416928A (zh) * | 2016-06-07 | 2019-03-01 | 伊路米纳有限公司 | 用于进行二级和/或三级处理的生物信息学系统、设备和方法 |
CN108305010A (zh) * | 2018-02-10 | 2018-07-20 | 西安精雕软件科技有限公司 | 一种工作流引擎系统及其跨平台、跨应用的流程推进方法 |
CN110489214A (zh) * | 2019-06-19 | 2019-11-22 | 南京邮电大学 | 云环境中数据密集型工作流的动态任务分配 |
CN110619473A (zh) * | 2019-09-19 | 2019-12-27 | 福建博思软件股份有限公司 | 基于Activiti工作流实现逆向流转的方法 |
Non-Patent Citations (1)
Title |
---|
刘黎志."嵌入式轻量级工作流引擎的研究".《中国优秀博硕士学位论文全文数据库 (硕士) 信息科技辑》.2005,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111667239A (zh) | 2020-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20110145037A1 (en) | Document management method and apparatus to process a workflow task by parallel or serially processing subtasks thereof | |
CN109684057B (zh) | 任务处理方法、装置和存储介质 | |
CN110413281B (zh) | 一种基于拖拽式构建企业流转流程管控方法 | |
CN101882255A (zh) | 一种基于面向服务体系结构的工作流装置、系统及配置方法 | |
CN101082970A (zh) | 政务审批工作流引擎系统的实现方法 | |
AU2001249273A1 (en) | Method and system for top-down business process definition and execution | |
CN112114894A (zh) | 基于Activiti流程引擎的流程处理方法、装置及电子设备 | |
CN106980935B (zh) | 一种基于可配置过程模型的过程实例集合演化管理方法 | |
CN108460511A (zh) | 一种工作流引擎系统及其实现方法 | |
CN112700219A (zh) | 一种基于activiti的流程管理平台 | |
Murmann et al. | What enables a Chinese firm to create new-to-the-world innovations? A historical case study of intrafirm coopetition in the instant messaging service sector | |
CN111553545B (zh) | 一种优化批量任务调度依赖的方法 | |
CN111667239B (zh) | 一种基于广度遍历+僵枝切除的工作流实现方法 | |
Adams et al. | Dynamic and extensible exception handling for workflows: A service-oriented implementation | |
Bauer et al. | Reusing system states by active learning algorithms | |
WO2019177823A1 (en) | Selective update of calendar items on computing devices | |
CN113986405A (zh) | 一种流程管理方法、装置及设备 | |
CN111612424B (zh) | 基于自由任务节点的流程管理方法、装置及可读存储介质 | |
CN114675819A (zh) | Rpa组件的推荐方法、装置、设备和可读存储介质 | |
CN106127026A (zh) | 权限配置方法和装置 | |
CN112418796A (zh) | 子流程节点激活方法、装置、电子设备及存储介质 | |
US20140081679A1 (en) | Release Management System and Method | |
TWI746063B (zh) | 用於人機介導動作跟踪和管理的標籤方法和系統 | |
Cui et al. | Service cooperation in PaaS platform based on planning method | |
CN113467760B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |