这是我们(东方易维)工作流产品设计过程中采取的设计:
一、流程实例的状态
状态分为
5种:实例化、执行中、挂起、手工结束、正常结束。
状态的变迁如下图:
<!---->
二、节点实例的状态
状态分为
5种:实例化、执行中、挂起、手工结束、正常结束。
状态的变迁如下图:
<!---->
三、具体节点的状态
细分:
A、人工节点、等待节点
这两个节点被触发后存在一个执行等待的过程,所以可以被用户直接挂起和手工结束。人工节点的挂起意味着所有未完成工作项的挂起,同时相应时间服务的时间计算的挂起。手工结束会使流程跳过该节点(所有工作项手工结束),继续往后流转。
B、开始节点、结束节点、分支节点、自动节点
这些节点的特点在于被触发后立刻执行和流转,所以不会存在挂起和手工结束的状态。
C、并发节点、汇聚节点
并发节点和汇聚节点不存在挂起的状态,同时不能被用户直接手工结束,它们的状态受流程实例状态和相关节点实例状态的影响。
并发节点和汇聚节点的情况复杂一些,分模式讨论
<!---->
图
1
1、同步汇聚(图
1)
根据情况触发节点
0、节点
1、节点
2中的一个或多个,汇聚节点等待所有实际触发的节点完成后再执行流转。中间汇聚节点只会产生一个实例。
1.1、正常流转时的处理策略
当汇聚节点未被触发时(即节点
0、节点
1、节点
2都未执行结束),并发节点处于执行状态,一旦汇聚节点被触发(即节点
0、节点
1、节点
2有一个执行结束),并发节点正常结束并且汇聚节点处于执行状态,所有并发出的节点实例执行结束后,汇聚节点正常结束,流程继续流转。
1.2、用户挂起、手工结束相关节点的处理策略
1.2.1、汇聚节点未激活时
节点
0、节点
1、节点
2的挂起和恢复执行不会影响并发节点的状态(依旧处于执行状态);节点
0、节点
1、节点
2的任一手工结束都会触发汇聚节点,使并发节点正常结束,如果所有并发的节点实例都结束(包括手工结束和正常结束),汇聚节点正常结束,触发流程流转。
1.2.2、汇聚节点已激活时
节点
0、节点
1、节点
2的挂起和恢复执行不会影响汇聚节点的状态(依旧处于执行状态);节点
0、节点
1、节点
2的手工结束会影响汇聚节点的状态,每个节点实例的手工结束会引起汇聚节点的判断,如果所有并发的节点实例(包括正常结束和手工结束)都结束,汇聚节点正常结束,触发流程流转。
1.3、用户挂起、手工结束流程的处理策略
1.3.1、汇聚节点未激活时
流程的挂起和恢复执行不会影响并发节点的状态(依旧处于执行状态),节点
0、节点
1、节点
2会被全部挂起或恢复;流程的手工结束会引起所有节点的手工结束。
1.3.2、汇聚节点已激活时
流程的挂起和恢复执行不会影响汇聚节点的状态(依旧处于执行状态),节点
0、节点
1、节点
2未执行结束的实例会被全部挂起或恢复;流程的手工结束会引起所有节点的手工结束。
2、nOutOfM汇聚(图
1)
根据情况触发节点
0、节点
1、节点
2中的一个或多个,汇聚节点等待
N个实际触发的节点完成后即执行流转(
N>0且
N<M,
M为实际触发的节点个数),在
N<=0和
N>=M的情况下即为同步汇聚。中间汇聚节点只会产生一个实例。
2.1、正常流转时的处理策略
当汇聚节点未被触发时(即节点
0、节点
1、节点
2都未执行结束),并发节点处于执行状态,一旦汇聚节点被触发(即节点
0、节点
1、节点
2有一个执行结束),并发节点正常结束并且汇聚节点处于执行状态,
N个并发出的节点实例执行结束后,汇聚节点正常结束,流程继续流转,
M-N的节点实例被手工结束。
2.2、用户挂起、手工结束相关节点的处理策略
2.2.1、汇聚节点未激活时
节点
0、节点
1、节点
2的挂起和恢复执行不会影响并发节点的状态(依旧处于执行状态);节点
0、节点
1、节点
2的任一手工结束都会触发汇聚节点,使并发节点正常结束,如果
N个并发的节点实例都手工结束,并发节点正常结束,触发汇聚节点,汇聚节点正常结束,触发流程流转,
M-N的节点实例被手工结束。
2.2.2、汇聚节点已激活时
节点
0、节点
1、节点
2的挂起和恢复执行不会影响汇聚节点的状态(依旧处于执行状态);节点
0、节点
1、节点
2的手工结束会影响汇聚节点的状态,每个节点实例的手工结束会引起汇聚节点的判断,如果
N个并发的节点实例(包括正常结束和手工结束)都结束,汇聚节点正常结束,触发流程流转,
M-N的节点实例被手工结束。
2.3、用户挂起、手工结束流程的处理策略
2.3.1、汇聚节点未激活时
流程的挂起和恢复执行不会影响并发节点的状态(依旧处于执行状态),节点
0、节点
1、节点
2会被全部挂起或恢复;流程的手工结束会引起所有节点的手工结束。
2.3.2、汇聚节点已激活时
流程的挂起和恢复执行不会影响汇聚节点的状态(依旧处于执行状态),节点
0、节点
1、节点
2未执行结束的实例会被全部挂起或恢复;流程的手工结束会引起所有节点的手工结束。
3、辨别汇聚(图
1)
是
nOutOfM汇聚的特例,
N=1
4、多实例汇聚(图
2)
<!---->
图
2
根据情况触发节点
0、节点
1中的一个或多个,节点
0和节点
1任意一个执行结束后都会触发汇聚节点产生一个新的实例,汇聚节点实例紧接着触发节点
2,节点
2也会产生多个实例。
4.1、正常流转时的处理策略
当汇聚节点未被触发时(即节点
0、节点
1都未执行结束),并发节点处于执行状态,一旦汇聚节点被触发(即节点
0、节点
1有一个执行结束),汇聚节点会紧接着触发节点
2,汇聚节点正常结束。所有并发出的节点实例执行结束后,并发节点正常结束。
4.2、用户挂起、手工结束相关节点的处理策略
节点
0、节点
1的挂起和恢复执行不会影响并发节点的状态(依旧处于执行状态);节点
0、节点
1的手工结束会影响并发节点和汇聚节点的状态,每个节点实例的手工结束会引起汇聚节点产生新的实例并触发节点
2,同时会引起并发节点的判断,如果所有并发的节点实例都手工结束,并发节点正常结束。
4.3、用户挂起、手工结束流程的处理策略
流程的挂起和恢复执行不会影响并发节点的状态(依旧处于执行状态),节点
0、节点
1、节点
2会被全部挂起或恢复;流程的手工结束会引起所有未结束节点的手工结束。
5、隐式结束,没有汇聚节点与并发节点对应(图
3)
<!---->
图
3
所有节点结束时(正常结束或手工结束),并发节点正常结束。流程的手工结束会引起所有未结束节点的手工结束。
四、流程实例状态变化对节点实例状态造成的影响
1、流程实例的挂起
A类节点挂起,
B、
C类节点不受影响。同时在流程实例恢复执行之前,
A类节点不允许用户直接恢复执行。
2、流程实例的手工结束
所有节点全部手工结束。
五、节点实例状态变化对流程实例状态造成的影响
隐式结束的情况下,节点的手工结束或正常结束都会触发流程的判断,如果所有的节点都已结束则流程结束。
分享到:
相关推荐
【工作流程JBPM工作流管理】是企业信息化建设中至关重要的一环,它涉及到组织内部的任务自动化、业务流程优化以及跨部门协作效率的提升。JBPM(JBoss Business Process Management)是Red Hat公司推出的一款开源的...
【描述】:Django + Vue的工作流管理系统旨在为用户提供一套全面的流程管理工具,包括流程定义、任务分配、状态追踪等功能。Vue.js作为前端界面,能够提供动态交互体验,而Django作为后端,负责数据处理和业务逻辑。...
在状态机工作流中,流程的变迁主要由外部事件驱动。 在状态机工作流活动中,有几个核心组件: 1. State Activity:表示工作流中的一个特定状态。初始化状态由绿色标识,完成状态由红色标识。在设计状态下,可以...
JIRA的工作流功能是实现项目管理流程自动化的重要工具。通过合理配置工作流,可以确保团队按照既定的流程执行任务,提高工作效率和项目质量。对于JIRA的企业版和专业版用户而言,利用工作流编辑器定制符合自己需求的...
在Jira的默认工作流程图中,通常使用方框来表示工作流的步骤或状态,而箭头则用来表示变迁。Jira使用了名为OSWorkflow的灵活可定制的工作流引擎,并通过工作流编辑器生成OSWorkflow的XML定义文件,存储于Jira数据库...
6. **工作流引擎(Workflow Engine)**:解析流程定义,控制流程的执行和状态变迁。 三、Java中的Activity工作流实现 在Java环境中,有多个开源的工作流框架可供选择,如Activiti、jBPM、Camunda等。这些框架都提供...
- 流程的状态变迁是指在工作流执行过程中,各个任务或活动从一个状态转移到另一个状态的过程。 - 这些状态包括但不限于:待办、进行中、已完成等。 - 状态变迁的控制对于确保工作流的正确执行至关重要。 3. **...
综上所述,JIRA工作流是一个强大的工具,可以帮助组织更好地管理问题的生命周期,无论是简单的还是复杂的业务流程。通过自定义工作流,团队可以根据项目的特定需求灵活地调整工作流的结构和行为,从而提高工作效率和...
例如,在一个典型的JIRA工作流中,问题可能从“新建”状态变迁到“进行中”,然后再从“进行中”变迁到“已完成”状态。 #### 六、注意事项 - 当工作流处于非激活状态时才能对其进行编辑。如果需要修改激活的工作...
本工作流引擎采取微内核架构,这一设计将复杂的流程业务问题,如组织人员任务分配、条件计算、事件操作、业务工作项处理及数据保存等,从引擎中剥离,仅保留流程状态转换的核心职责。通过这种方式,流程引擎关注于...
- 基于状态机理论,通过状态变迁来驱动工作流的执行。 4. **任务分配与调度**: - JavaScript可以通过事件驱动或者定时器实现任务的触发和分配。 - 可以结合角色权限管理,确保任务只被合适的人员处理。 5. **...
8. **工作流引擎**: 背后的核心是工作流引擎,它负责解析工作流定义,执行流程,管理和存储流程实例的状态。Flex应用可能需要与一个独立的工作流引擎(如Activiti或Nintex)集成,或者自定义实现一个。 9. **持久化...
BossA工作流引擎是一款基于Petri网理论的开源工作流执行引擎,主要应用于业务流程的自动化管理。在本文中,我们将深入探讨BossA的核心特点、Petri网的概念以及如何使用BossA来实现高效的工作流。 一、BossA工作流...
工作流(Workflow)是软件系统中管理业务流程自动化的一种技术,尤其在企业级应用中广泛使用。本章节我们将深入探讨Windows Workflow Foundation (WF),这是.NET Framework提供的一种用于创建和执行工作流的应用框架...
通过这种方式,Petri网能够清晰地展现工作流的状态变迁,并支持对并发和依赖关系的分析。 其次,Petri网的并发性特点非常适合处理工作流中的并行任务。在某些情况下,多个任务可以同时进行,比如多个审批者可以独立...
### JIRA配置工作流知识点详解 ...通过深入了解JIRA的工作流机制及其配置方法,可以帮助团队更好地管理和优化问题处理流程。合理的设计和配置不仅可以提高工作效率,还可以促进团队成员之间的沟通与协作。
工作流管理是一种能够部分或完全自动化执行企业业务流程的技术。通过预设的过程规则,文档、信息或任务可以在不同的执行者之间传递与执行。工作流管理系统主要由三部分组成:工作流执行部件(即工作流引擎)、工作流...
Java工作流是一个重要的软件开发概念,它涉及到在企业信息系统中自动化和管理业务流程。工作流管理系统(Workflow Management System,WFMS)使用Java技术可以实现灵活、可扩展且跨平台的解决方案。本文将深入探讨...
基于活动的工作流系统是一种以活动为中心的工作流管理系统,其中工作流由一系列有序的任务组成,这些任务共同完成特定的目标或业务过程。这种工作流系统的核心在于它能够自动地调度和协调这些活动,确保按照预定的...