当前位置: 首页 > 编程日记 > 正文

驰骋工作流引擎JFlow与activiti的对比之4种包含多实例的模式

为什么80%的码农都做不了架构师?>>>   hot3.png

4种包含多实例的模式

  1. 无同步的多实例(MIwithout)

在流程中,一个活动可以激活多个实例,每个实例相互独立,并不需要在后面进行同步。

例子:比如用户购买了N本书,于是后续的支付账单、更新客户可以以本书为单位各自执行。

365c09f63bfa247c0989087cf8c3d908630.jpg

ACTIVITI 中的支持情况:

支持这种模式,但是不允许在后面进行结束动作。

939fdd243e08e07f1187318c37190abdaac.jpg

JFLOW中的支持情况:

分合流与父子流程支持这种模式,分合流上面已经讲过,下面说下父子流程。

第一种情况:发起子流程后,等所有的子流程执行完成后,父流程继续下一步骤或者结束。

第二种情况:发起子流程后,无论子流程是否执行完成,都执行到下一步或者结束。

04b79f1fc1a4c430663f6179620d32a76ed.jpg

父流程:

7baaf56b5792d75a678146ae925146dc455.jpg

  1. 设计时确定的多实例(MIwith  a  Priori  Design  Time  Knoledge)

在流程中,被激活的多个实例需要在某个聚合点聚合,而实例的个数在设计的时候就已经知晓率。

8233f5fb56caf01d51cecd88a6fd187e88f.jpg

ACTIVITI 中的支持情况:

对于设计时已经知道实例数量的,最简单的就是使用多个Task节点来实现多个实例。

JFLOW中的支持情况:

合流节点处理各个子线程的任务比率。

完成率 = 子线程上已经完成的数据/所有子线程数量*100%

该节点对于合流节点与分合流节点有效,当子线程的完成率达到该值的时候,该节点的待办才能显示出来,否则该节点的人员不能处理待办。如果合流节点的处理人能够看到待办,他就可以对该流程进行操作,比如:发送、删除、退回、删除子线程等等。

  1. 运行时确定的多实例(MI with a Priori RunTime Knoledge)

在流程中,被激活的多个实例需要在某个聚合点聚合,而实例的个数在设计的时候并不知道,只有在运行时根据条件来决定需要激活多少个实例。

afb79950130394e7545cc54c091fabbdfd9.jpg

ACTIVITI 中的支持情况:

对于运行时可以知晓实例数量的,可以通过设置JOIN节点的multipliclty来实现。

82463692264802e340819d17472b89641b3.jpg

JFLOW中的支持情况:

同表单分合流配合节点访问规则可以实现这个功能。

cb21d51a1b8a1213e0bf6a235b4563c5385.jpg

  1. 运行时无法确定的多个实例(MI without a Priori RunTime Knoledge)

在流程中,被激活的多个实例需要在某个聚合点聚合,而实例的个数在设计的时候并不知道,该模式与上一个模式的区别就是,在产生的实例执行时或者已经执行完时,仍然有新的实例产生。

例子:比如要采购100台电脑,涉及到多个供应商,但是每个供应商供应多少台电脑是不知道的,因此供应商的数量也是不确定的,但是每次供应商送货来后,就会将所拥有的电脑数量和所需的100台进行比较,来决定是否要下一个供应商进行供应。

ACTIVITI 中的支持:与运行时确定的多个实例的实现方式一样。

ecfda4547ceff40998390e5e88c0986b4eb.jpg

JFLOW中的支持:

这种方式属于JFlow的父子流程来实现,开始节点启动一个任务,需要采购100台电脑,需要发起n此的选择供应商采购的子流程,每个子流程完成后,就访问父流程节点信息,进行相关的业务处理(就是是否启动下一个子流程,如果满足100,就不启动子流程了,直接完成父流程的任务,结束主流程.)。

转载于:https://my.oschina.net/ccflow/blog/2995242

相关文章:

Embarcadero Dev C++ 中文输出乱码

解决方式:保证编译器和文件的编码方式一样。 1. 编译器的编码方式 Embarcadero Dev C 界面 2. cpp文件编码方式 Notepad界面

关于登录记住密码使用cookie的详解

下面是我看的一篇文章引用过来,很易懂 设置cookie每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie:document.cookie"userId828";如果要一次存储多个名/值对,可以使用分号加空格(;…

Linux服务器---安装tftp-server

安装tftp-server1、安装tftp-server[rootlocalhost weijie]# yum install -y tftp-serverLoaded plugins: fastestmirror, refresh-packagekit, securityRunning TransactionInstalling : tftp-server-0.49-8.el6.i686 1/1 Verifying : tftp…

linux指令 2>1 到底是个啥

训练好深度学习模型之后对其进行测试,测试的脚本如上图。 我对第11行感到不解,经过检索Linux重定向和文件描述符相关知识后,明白了 2代表着标准错误 1代表者标准输出(默认是屏幕) >代表流向 那么第11行代码的含义也就是,将…

新生 语不惊人死不休 —— 《无限恐怖》读后有感

开篇声明,我博客中“小心情”这一系列,全都是日记啊随笔啊什么乱七八糟的。如果一不小心点进来了,不妨直接关掉。我自己曾经写过一段时间的日记,常常翻看,毫无疑问我的文笔是很差的,而且心情也是瞬息万变的…

中国大学MOOC-C程序设计(浙大翁恺)—— 时间换算

时间换算(10分)题目内容:UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果…

作为一个程序员,数学对你到底有多重要(转)

每个计算机系毕业的人,大都学过不少数学课,而且不少学校的计算机系的数学课,通常比一般的其他工科专业的数学要难一些,比如不上高等数学,而是学数学分析,不上线性代数而去上高等代数。但是,大部…

如何在vsc上选择远程miniconda特定的虚拟环境中的Python解释器(4步)

前提: 已经通过remote development插件连上了远程服务器 远程服务器上已经创建了安装了python的虚拟环境 步骤: 点击“查看” 点击“命令面板” 输入/选择 Python:Select Interpreter 然后就能选择远程miniconda中已经创建的虚拟环境了 我的minico…

Java数据类型简单认识

Java是一种强类型编程语言,因而在声明变量的时候必须声明数据类型,java语言有基本数据类型和引用数据类型这两大数据类型,基本数据类型有8种分别是4种整型、2种浮点类型、1种用于Unicode表示字符单元的字符类型和1种表示真值的布尔类型;引用数…

Intel 6系列芯片组设计缺陷 全球出货暂停

美国当地时间周一,Intel公司官方宣布,今年1月初刚刚伴随Sandy Bridge系列“第二代Core架构处理器”推出的6系列芯片组(代号Cougar Point)发现了设计方面的问题。虽然目前Intel已经对该设计在芯片级别进行了修正,但在新…

PrestaShop 网站漏洞修复如何修复

2019独角兽企业重金招聘Python工程师标准>>> PrestaShop网站的漏洞越来越多,该网站系统是很多外贸网站在使用的一个开源系统,从之前的1.0初始版本到现在的1.7版本,经历了多次的升级,系统使用的人也越来越多&#xff0c…

shell脚本中的case语句使用要点

1.双分号(;;) 用于case语句中一个分支的结束。 可类比C里面switch...case语句,在case语句之后,若所有语句都输完,后面跟着的"break;"。 2.星号加右小括号*) 可类比C里面switch...case语句中的"default:"。 3.结束符…

Netty - ByteBuf

2019独角兽企业重金招聘Python工程师标准>>> 1.ByteBuf类 - Netty的数据容器 ByteBuf维护了两个不同的索引: readerIndex:用于读取writerIndex:用于写入起始位置都从0开始: 名称以read或者write开头的方法会更新ByteBu…

不要做浮躁的嵌入式系统工程师

每天读一遍,思考一下:我是否浮躁? 1、不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,就会知道自己和别人思路的差异。 2、初学者请不要看…

Codeforces Round #300 A. Cutting Banner 水题

A. Cutting Banner Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/538/problem/ADescription A large banner with word CODEFORCES was ordered for the 1000-th onsite round of Codeforcesω that takes place on the Miami beach. Unfo…

ImportError:cannot import name ‘display‘ File “XX“, line 5, in <module> from IPython import display

导入错误问题的一个解决思路是,推断这是模块间版本不兼容带来的问题,先把模块卸载掉,再用conda install安装上。也就是让conda去协调模块间兼容性。

[高级]android应用开发之intent的妙用二

相信做android应用开发的朋友对intent组件都已经是相当熟悉了,这里鄙人总结一下intent的妙用,希望对大家有帮助。 intent妙用之列出所有已安装的应用程序列表 装载:http://blog.csdn.net/android_tutor/article/details/5724634 这篇文章写的…

windows 自动化目录大纲(各企业架构不一样,按需选择)

有需要做自动化的联系979122932,一起交流学习转载于:https://blog.51cto.com/7763608/2338668

Java设计模式之虚拟代理模式

描述:虚拟代理模式(Virtual Proxy)是一种节省内存的技术,它建议创建那些占用大量内存或处理复杂的对象时,把创建这类对象推迟到使用它的时候。在特定的应用中,不同部分的功能由不同的对象组成,应用启动的时候&#xff…

(已解决)ImportError attempted relative import with no known parent package

想要调用同一目录下的另一个py文件中的类,以下或许是可行的解决方案。 需要做到两点 1. 将主调文件的名称改为__init__.py 2. from 被调文件的文件名称(删去末尾.py) import 类名 不要在被调文件的文件名称前面加点! 我的目录结构 我的调用方式 fro…

小红点功能控件

写在前面 本意是想把做过的东西沉淀一下,防止重复造轮子。后来想想自己在实现这个的过程中还是走了一点弯路的。虽然网上找的轮子很多,其实大多都华而不实或者功能太多,工作中实现的东西最重要的不是功能炫,而是稳定,一…

根据条件查找数组中的一条数据并放入缓存

protected MemberInfo GetCacheMemberInfo(string userName) { MemberInfo minfo new MemberInfo();//实体 minfo System.Web.HttpRuntime.Cache.Get("HotPP_" userName) as MemberInfo;//读缓存 if (minfo null) { M…

看我如何下载韩寒博客文章笔记

str()将整型数据转化为字符型数据转载于:https://www.cnblogs.com/sunshinewxz/p/4461432.html

怎样知道pip install 可以安装包的哪些版本

方法一: 思路很清晰,故意不给版本号,然后系统就告诉你,这样不行呀,可以用以下XX,XX,XX版本号 例如安装torchtext

异步编程之Promise(2):探究原理

异步编程系列教程: (翻译)异步编程之Promise(1)——初见魅力异步编程之Promise(2):探究原理异步编程之Promise(3):拓展进阶异步编程之Generator(1)——领略魅力异步编程之Generator(2)——剖析特性异步编程之co——源码分析动手实现Promise 在…

PC端、移动端手机竖拍原图压缩上传顺时针旋转90°的解决方案

问题背景 最近在做的项目中,不管是移动端还是后台系统都涉及到了手机照片压缩上传的问题,做完功能测试的时候发现图片回显的时候有些顺时针旋转了90(竖拍照片,不管是ios还是android都存在这问题),后来百度了…

perl:cpanm安装方式的一种取代方法

笔者现在有一个cpanfile,里面需要安装的perl模块,github的作者给出的指令是 cpanm --installdeps . 而笔者的服务器没有cpanm,因为不是管理员也无法用apt安装 经过一番搜索,发现以下的替代方式: 依次在命令行输入 1…

elementUI源码修改的爬坑之旅

今天由于项目需要,想在Tree组件的前面增加一个icon图标,根据不同类型增加不同的图标,我修改了elementUI的源代码,发布到npm上去成功使用,记录下过程中所碰到的问题,首先看下最后的效果: 下面简单…

Sublime text3 快捷方式(windows平台)

1.Goto Anything-快速查找(ctrl P) 输入函数名可以快速找到函数输入#文本可以快速进行文件内文本匹配2.命令模式CtrlShiftP:打开命令面板 CtrlP:搜索项目中的文件 CtrlW:关闭当前打开文件 CtrlShiftW&#xf…

(已解决)ubuntu20.04 jar xvf XXX.zip报错-java.io.EOFException:Unexpected end of ZLIB input stream

报错截图 如下 我在服务器上解压缩defects4j-repos.zip,但是出现了如上错误。通过SFTP我把这个压缩包传到了本地win10上面,进行解压缩。本地解压缩软件(有图形界面的好处显现了)告诉我这个文件已经损坏。 原因分析 由于运行脚本涉及到一堆的文件下载&am…