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

相关文章

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

Java中的xxl-job调度器线程池工作机制

《Java中的xxl-job调度器线程池工作机制》xxl-job通过快慢线程池分离短时与长时任务,动态降级超时任务至慢池,结合异步触发和资源隔离机制,提升高频调度的性能与稳定性,支撑高并发场景下的可靠... 目录⚙️ 一、调度器线程池的核心设计 二、线程池的工作流程 三、线程池配置参数与优化 四、总结:线程

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更