工作流模式_多实例模式(C5)

2024-04-09 17:38
文章标签 模式 工作 实例 c5

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

这四个模式的共同点在于:都是多个流程实例之间的交互,包括:
[list]
[*] Multiple processes without synchronization(非同步的多实例模式)
[*] Multiple processes with design time knowledge(设计时的多实例模式)
[*] Multiple processes with run time knowledge(运行时的多实例模式)
[*] Multiple processes without run time knowledge(非运行时的多实例模式)
[/list]


W[b][color=red]P_12、Multiple Instances without synchronization(异步的多实例模式)[/color][/b]
描述:在流程实例中,一个活动可以激活为多个实例,并且彼此不相关,对于这些多实例不需要同步。在流程设计阶段并不确定有多少个执行路径。 执行路径在完成后不需要同步。

在实现中,有2种设计方式:
首先是基于活动方式,活动本身会有规则属性来控制是否能多个实例化,缺省是实例化1次,缺省实例化是流程实例化的时候完成。当auto活动2发现特定参数传来了一个集合类似的数据(比如List),就根据List.size在内存中创建新的时候,并在完成的时候持久化到数据库中。


[img]/upload/attachment/134699/bfb90bde-1a87-3acb-88fa-a753fbd3565a.jpg[/img]
图wp12:非同步的多实例(自动活动实现方式)


第二种方式是借助子过程的方式,并且设置子过程为异步方式(如果设定为同步,要等所有的子流程实现完毕才能执行auto活动3)。本身子过程是延后创建实例的,也就是说当流程实例化的时候,先实例化的是普通流程,只有当流程推进到了子过程活动的时候,才会实例化该子过程,这样就可以根据传来的参数的个数,实例化子过程。

[img]/upload/attachment/134701/49be0c8d-bbdf-3afb-b6fa-8596a21b83cc.jpg[/img]
图wp12a:非同步的多实例(子过程实现方式)


[flash=500,400]http://www.workflowpatterns.com/patterns/control/images/cp12_flash.swf[/flash]
图wp12:非同步的多实例(flash)


[b][color=red]WP_13、Multiple Instances with design time knowledge(设计时确定的同步多流程模式)[/color][/b]
描述:一个活动可以激活多次产生多个实例。而产生的实例的个数在流程设计时就事先知道了。一旦所有的实例都执行完成,就会激活其他活动(也就是说这里采取的是同步方式)。

这里有2种设计方式:
首先是基于活动方式,在相关活动上有规则来确定是否能多个实例化,以及实例化的个数。
流程实例启动后,执行到当前活动节点,就会根据模型定义实例化指定的个数。当多个实例执行完毕,在激活后续的auto活动3。
[img]/upload/attachment/134703/826bc997-89f0-3060-9741-212dcea8d47d.jpg[/img]
图wp13:设计时确定的多实例模式(自动活动实现方式)


第二种方式是借助子过程的方式,通过传递参数的方式,并根据参数的个数来实例化子流程的个数。这里的子流程需要设定为同步机制。这样当多个子过程实例完成后才激活auto活动3。

[img]/upload/attachment/134705/36d1044c-8630-34d3-a6cf-dc9a4096c5af.jpg[/img]
图wp13a:设计时确定的多实例模式(子过程实现方式)


[flash=500,400]http://www.workflowpatterns.com/patterns/control/images/cp13_flash.swf[/flash]
图wp13:设计时确定的多实例模式(flash)


[color=red][b]WP_14、Multiple Instances with run time knowledge(运行时确定的同步多流程模式)[/b][/color]
描述:一个活动可以激活多次产生多个实例。而产生的实例的个数是变化的,取决于实例的特点或者可用资源数目,但是在流程执行过程的某个时期,在这个活动的实例产生以前,要产生的实例个数是能确定的。所有的实例都运行完成后,激活后续活动在流程设计阶段并不确定有多少个执行路径。
也就是说多实例在设计的是不清楚,只有到了运行时候,才知道具体的活动实例个数。只有当这些实例都执行完毕,才执行后续的auto活动3,即采取同步模式。


这里有2种设计方式:

首先是基于活动方式,活动本身有规则来控制是否能多个实例化,缺省是实例化1次,缺省实例化是流程实例化的时候完成。当auto活动2发现特定参数传来了一个集合类似的数据(比如List),就根据List.size在内存中创建新的时候,并在完成的时候持久化到数据库中。
当多个实例执行完毕,在激活后续的auto活动3。

第二种方式是借助子过程的方式,设置实例化的次数以及子过程为同步方式,这样当多个子过程实例完成后才激活auto活动3。


[flash=500,400]http://www.workflowpatterns.com/patterns/control/images/cp14_flash.swf[/flash]
图wp14:运行时确定的多实例模式(flash)


[color=red][b]WP_15、Multiple Instances without run time knowledge(运行时不确定的多流程模式)[/b][/color]
描述:一个活动可以激活多次产生多个实例。而产生的实例的个数在设计流程时既不知道,在运行时也不知道。所有的实例都运行完成后,激活后续活动。即同步模式。

例子:订购100 台电脑,涉及多个供应商,但是每个供应商供应多少台电脑是不知道的,因此供应商的数量事先也不确定。但是当每次供应商送货后,就会将现在所拥有的电脑数量和所需的100 台进行比较,来决定是否要下一个供应商继续送货。因为有太多的不可控制的因素,在实际使用中引擎不支持该种模式。

[flash=500,400]http://www.workflowpatterns.com/patterns/control/images/cp15_flash.swf[/flash]
图wp14:运行时不确定的多实例模式(flash)

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



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

相关文章

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. ‌虚

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

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

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

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

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

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

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

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

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R