工作流模式_多实例模式(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

相关文章

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业