工作流模式_状态的模式(C6)

2024-04-09 17:38
文章标签 模式 工作 状态 c6

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

这三个模式的共同点是:模式所涉及根据当前运行的流程状态来改变流程里的执行路径,包括:
[list]
[*] Deferred choice(延迟选择模式)
[*] Interleaved parallel routing(乱序选择模式)
[*] Milestone(里程碑模式)
[/list]

[color=red][b]WP_16、Deferred choice(延迟选择模式)[/b][/color]
描述:流程在某个点可以有多个分支进行选择。与XOR-Split(独占式选择)模式相比,不是基于简单的数据或者决定就可以很明显地做出选择,而是它会向系统或者执行环境提供多种可选择的分支;但是这又不同于AND-Split 模式,延迟选择只能选择一个分支执行,一旦选中了其中的一个分支,那么其它分支就会被撤消。这意味着一旦环境启动了其中的一个,另一个就被取消。要注意,选择是被延迟到两个分支中的一个真正开始执行时,也就是说,选择是可以尽可能的推后的。

[img]http://dl.iteye.com/upload/attachment/143383/cc25aca2-023f-371c-b7fe-38247be742bd.jpg[/img]
图wp16:延迟选择模式(借助人工自由选择)

[flash=500,400]http://www.workflowpatterns.com/patterns/control/images/cp16_flash.swf[/flash]
图wp16:延迟选择模式(flash)


一种可能实现方式:在人工活动1的时候,就可以获取到后续延时选择的活动的id(在这里能获取到人工活动2,3,4等;如果要实现可多选,建议参考汇聚,或者多实例汇聚模式),并可以根据实际情况,选择其中的一个。由活动1的参与者来进行判断抉择。把决断交给参与者来实现。


[color=red][b]WP_17、Interleaved parallel routing(乱序选择模式)[/b][/color]
描述:该模式叫“任意顺序”更准确些。有几个活动它们是按顺序执行的,但是它们执行的顺序又是任意的,不会出现并行运行的情况。
比如在医院进行体检,需要执行检查肝功能,量身高,B超等活动,但这些活动不一定要顺序执行,只要都完成,该流程即可完成。

[img]http://dl.iteye.com/upload/attachment/143385/215534f7-4172-3739-8f9b-f5d56640ac45.jpg[/img]
图wp17:自由选择

[flash=500,400]http://www.workflowpatterns.com/patterns/control/images/cp17_flash.swf[/flash]
图wp17:自由选择(flash)

在wp17图中,当人工活动2,3,4都完成后(完成的顺序随便,可以是234,也可以是324,也可以是432,但只能完成一次,已经完成的活动由引擎来控制,不再出现在可选访问内),才能执行人工活动5。


[color=red][b]WP_18、Milestone(里程碑模式)[/b][/color]
描述::里程碑后续活动的分支选择,需要查询某个具体的状态,并根据其状态的结果决定后续的分支。比如,有三个活动A、B 和C,A 只有在B 执行完成且C 还未执行的时候才能执行;B 执行前或者C 执行后,A 都不能使能。

[img]http://dl.iteye.com/upload/attachment/143387/c4a9728a-3781-3572-b5af-2e39882b29e6.jpg[/img]
图wp18:里程碑模式

[flash=500,400]http://www.workflowpatterns.com/patterns/control/images/cp18_flash.swf[/flash]
图wp18:里程碑模式(flash)


在wp18图中,在里程碑处进行条件选择的依据是auto2的完成情况。比如auto2完成了,才能执行auto5,人工auto2没有完成,就执行auto6。在里程碑处,需要检查某个活动的相关状态(是否达到了某种里程碑)。

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



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

相关文章

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3