工作流模式_基本工作流模式(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 中的 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

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工