`
ronghao
  • 浏览: 449929 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
E9473dd5-1985-3883-ac98-962354ca10b3
张小庆,在路上
浏览量:8570
社区版块
存档分类
最新评论

工作流流程状态管理及变迁

阅读更多

这是我们(东方易维)工作流产品设计过程中采取的设计:

一、流程实例的状态

   状态分为 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、流程实例的手工结束

   所有节点全部手工结束。

五、节点实例状态变化对流程实例状态造成的影响

隐式结束的情况下,节点的手工结束或正常结束都会触发流程的判断,如果所有的节点都已结束则流程结束。

5
1
分享到:
评论

相关推荐

    一种工作流模型的性能分析方法

    为了处理工作流模型中的循环结构,对具有无环自由选择工作流网到一组变迁组件网(T-component)的分解 算法进行了扩展,以处理工作流网中存在的循环结构. 进而在模型结构分析的基础上,根据工作流模型的实际业务 ...

    工作流系统的设计与实现_v1.0

    6.5、状态变迁处理逻辑 116 7、与业务系统结合 121 7.1、基于工作流应用的开发模式 121 7.2、业务系统和流程引擎的交互 124 7.3、通过规则引擎扩展功能 125 7.4、数据一致性 128 8、工作流外围系统 130 8.1、...

    JIRA工作流 JIRA_Workflow_v2.pdf

    "工作流"是一个问题经过其生命周期的若干步骤和阶段的变迁。 工作流通常代表着实际的业务处理流程。 JIRA 通过一定数量的状态对问题进行处理来模拟问题的生命周期。 每个状态代表了生命周期的一个阶段, 通常由一个...

    超级有影响力霸气的Java面试题大全文档

    31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?  SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建...

    外文翻译 stus MVC

    1:外文原文 Struts——an open-source MVC implementation This article introduces Struts, a Model-View-Controller implementation that uses servlets and JavaServer Pages (JSP) technology....

    《TCP/IP详解,卷1:协议》

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCP-IP详解卷1:协议

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCP/IP详解卷

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCP/IP详解 卷1完整版

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCP-IP详解卷一:协议

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解(卷1协议)

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCP-IP详解卷1:协议.rar

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    java 面试题 总结

    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的...

    TCP_IP详解卷1

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part04

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part09

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part03

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part05

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

    TCPIP详解卷[1].part06

    18.6 TCP的状态变迁图 182 18.6.1 2MSL等待状态 183 18.6.2 平静时间的概念 186 18.6.3 FIN_WAIT_2状态 186 18.7 复位报文段 186 18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半...

Global site tag (gtag.js) - Google Analytics