工作流模式_基本工作流模式(C2)

2024-04-09 17:38
文章标签 模式 工作 基本 c2

本文主要是介绍工作流模式_基本工作流模式(C2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这五个模式的共同点在于:模式所涉及流程的执行路径是在设计时即可确定的,不需运行时的信息。包括:

[list]
[*] Sequence(顺序模式)
[*] Parallel split(平行拆分模式)
[*] Synchronization(同步模式)
[*] Exclusive choice(排他选择)
[*] Simple merge(简单合并模式)
[/list]

[color=red][b]WP_01、Sequence(顺序模式) [/b][/color]
描述:在一个流程实例中,各个活动按顺序依次执行。 Auto活动2 必须在auto活动1 执行完成以后才能执行。Auto1~auto5是自动活动;这里也可以是人工活动;变迁是无条件转移的。

[img]/upload/attachment/124404/a5cca85b-5720-308e-ac33-ac377dba5f9d.jpg[/img]
图wp01:顺序流程

[flash=500,400]http://www.workflowpatterns.com/patterns/control/images/cp1_flash.swf[/flash]
图wp01:顺序流程(flash)

[color=red][b]WP_02、Parallel split(并发模式) [/b][/color]
描述::在一个流程实例中,存在两个或者多个执行路径平行执行,但这些平行的路径之间没有关联,平行路径的执行没有确定的顺序关系。
在Petri网语意中,存在一个显式and_split,并作为路由活动,来并发执行后续活动的接点。在下图中,当auto活动1完成后,同时会无条件执行auto活动2,3,4的活动节点。这里的发散是显式的。

[img]/upload/attachment/124406/3d8244e2-ee5d-3721-aa41-c396cc788477.jpg[/img]
图wp02:无条件并发流程

[flash=500,400]http://www.workflowpatterns.com/patterns/control/images/cp2_flash.swf[/flash]
图wp02:无条件并发流程(flash)


[color=red][b]WP_03、Synchronization(同步模式) [/b][/color]
描述:在流程中的某个点,多个并行的子流程或者活动,合并成一个流程。流程必须等待所有的分支都执行完以后,才能激活后续活动。
在Petri网语意中,存在一个显式and_join,并作为路由活动,同步汇聚前驱的所有活动接点。 在下图中,只有auto活动2,3,4均已完成,才能激活auto活动5,否则auto_join路由活动一直处于等待同步中。这里的汇聚是显式的。
典型场景是and_split和and_join配套使用,形成发散汇聚的路径。

[img]/upload/attachment/124408/e3c614d5-4dc2-37d9-b6c5-60f817fdbb13.jpg[/img]
图wp03:同步汇聚流程

[flash=500,400]http://www.workflowpatterns.com/patterns/control/images/cp3_flash.swf[/flash]
图wp03:同步汇聚流程(flash)


[color=red][b]WP_04、Exclusive choice(排他选择模式) [/b][/color]
描述:当一个活动完成以后,可以有多个分支进行选择,但是只能选择其中的一个分支,即多选一。
在Petri网语意中,存在一个显式xor_split,并作为路由活动,根据条件判断,选择后续1个分支。
一般来说,流程会预先设定一个相关数据,在该相关数据的值就是后续分支选择的依据。该路由活动会调用一个条件判断模块(1、简单值匹配;2、class返回值;3规则引擎返回值)判断后续需要走哪个流程,只能选择唯一后续活动接点。如果返回多个后续活动接点,引擎选择的是返回的第一个活动节点。

[img]/upload/attachment/124410/97131637-10ba-35eb-8365-1c2be3de3369.jpg[/img]
图wp04:单一条件发散流程(并有个显式的简单汇聚-- xor_join)

[flash=500,400]http://www.workflowpatterns.com/patterns/control/images/cp4_flash.swf[/flash]
图wp04:单一条件发散流程(flash)


[color=red][b]WP_05、Simple merge(简单合并模式)[/b][/color]
描述:在一个流程实例中,两个或多个执行路径在一个活动节点上合并。 一般采用“先进先出”原则,但是后续活动只产生一次。
在Petri网语意中,存在一个显式xor_join,并作为路由活动,当路径活动执行完以后,如果是显示存在xor_join路由活动,可以参考wp04;因为在xor_split处只能激活后续1个活动分支,故auto活动5只能也被执行一次,所以这个xor_join可以被省略,形成wp05图。简化的流程不影响流程的正常执行,而且可以简化流程的画法,在复杂的流程中表现的尤为突出。
条件分支为xor_split类型,才能保证汇聚点的活动只被执行一次;如果条件分支是or_split,即后续分支可能启动多条的时候,则汇聚点有可能会被执行多次,这样就是wp_08的模式

[img]/upload/attachment/124412/8e412e26-b37b-3a46-ac38-480365d77b18.jpg[/img]
图wp05:简单汇聚流程(隐式)


[flash=500,400]http://www.workflowpatterns.com/patterns/control/images/cp5_flash.swf[/flash]
图wp05:简单汇聚流程(flash)

这篇关于工作流模式_基本工作流模式(C2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/888802

相关文章

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

C#实现将Excel工作表拆分为多个窗格

《C#实现将Excel工作表拆分为多个窗格》在日常工作中,我们经常需要处理包含大量数据的Excel文件,本文将深入探讨如何在C#中利用强大的Spire.XLSfor.NET自动化实现Excel工作表的... 目录为什么需要拆分 Excel 窗格借助 Spire.XLS for .NET 实现冻结窗格(Fro

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询

C++中的解释器模式实例详解

《C++中的解释器模式实例详解》这篇文章总结了C++标准库中的算法分类,还介绍了sort和stable_sort的区别,以及remove和erase的结合使用,结合实例代码给大家介绍的非常详细,感兴趣... 目录1、非修改序列算法1.1 find 和 find_if1.2 count 和 count_if1

Redis中群集三种模式的实现

《Redis中群集三种模式的实现》Redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1. Redis三种模式概述2、Redis 主从复制2.1 主从复制的作用2.2 主从复制流程2

C#借助Spire.XLS for .NET实现Excel工作表自动化样式设置

《C#借助Spire.XLSfor.NET实现Excel工作表自动化样式设置》作为C#开发者,我们经常需要处理Excel文件,本文将深入探讨如何利用C#代码,借助强大的Spire.XLSfor.N... 目录为什么需要自动化工作表样式使用 Spire.XLS for .NET 实现工作表整体样式设置样式配置

深入理解MySQL流模式

《深入理解MySQL流模式》MySQL的Binlog流模式是一种实时读取二进制日志的技术,允许下游系统几乎无延迟地获取数据库变更事件,适用于需要极低延迟复制的场景,感兴趣的可以了解一下... 目录核心概念一句话总结1. 背景知识:什么是 Binlog?2. 传统方式 vs. 流模式传统文件方式 (非流式)流

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent