工作流模式_基本工作流模式(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基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

SQL Server身份验证模式步骤和示例代码

《SQLServer身份验证模式步骤和示例代码》SQLServer是一个广泛使用的关系数据库管理系统,通常使用两种身份验证模式:Windows身份验证和SQLServer身份验证,本文将详细介绍身份... 目录身份验证方式的概念更改身份验证方式的步骤方法一:使用SQL Server Management S

Redis高可用-主从复制、哨兵模式与集群模式详解

《Redis高可用-主从复制、哨兵模式与集群模式详解》:本文主要介绍Redis高可用-主从复制、哨兵模式与集群模式的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Redis高可用-主从复制、哨兵模式与集群模式概要一、主从复制(Master-Slave Repli

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

MySQL 中的 LIMIT 语句及基本用法

《MySQL中的LIMIT语句及基本用法》LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率,:本文主要介绍MySQL中的LIMIT语句,需要的朋友可以参考下... 目录mysql 中的 LIMIT 语句1. LIMIT 语法2. LIMIT 基本用法(1) 获取前 N 行数据(

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python