IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> BPMN Events(一)——Camunda Workflow开发实践 -> 正文阅读

[开发测试]BPMN Events(一)——Camunda Workflow开发实践

前言

我在前面详细的介绍了几种网关和任务,其中的排他网关,并行网关,包容网关都属于基于数据的网关(Data-based inclusive gateways),它们必须依赖现有的条件做出选择。BPMN Process Token与Gateway——Camunda Workflow 开发实践_郭麻花的博客-CSDN博客

在上篇博客的末尾,我介绍了一种无法结束Workflow Instance的情况,那种情况应如何解决呢。

这次,我主要来介绍一些基于事件的网关,BPMN当中事件主要分为两类,Catching eventsThrowing events

Message?Event

消息对于做过微服务的同学来说并不陌生,我们可以利用RabbitMQ来搭建一个分布式消息总线,以此来实现事件驱动的程序设计,BPMN当中也为我们提供了几种基于Message的事件。

Message Intermediate Catch Event

如图所示,我添加了一个Message Intermediate Catch event在Task A之后,它会一直等待Message的出现才会往下进行。?

使用Postman查询当前订阅消息事件,并触发。

Message Boundary Event(Interrupting)

将上图中的Message Event拖拽到Task A上,它就会自动从Intermediate Event变为Boundary Event。 ?

?

  • 如果我们直接Complete Task A会发现ProcessToken并没有发生复制,而是来到了Task B;
  • 而如果在Task A进行期间,Message事件发生,那么workflow将来到Task C。

这是Boundary Event的一个重要形式,它是Event-based Gateways当中的一种方式。

当然Message Boundary Event(Interrupting)还有一种non-Interrupting模式

Message Boundary Event(non-Interrupting)

这种non-Interrupting模式的特点是:Message事件发生,ProcessToken会复制而不是直接向下传递。

Timer?Intermediate?Event

Timer 有三种模式

1. Date(定时执行)?

<timerEventDefinition>
  <timeDate>2011-03-11T12:13:14Z</timeDate>
</timerEventDefinition>

2. Duration(逾期执行)

<timerEventDefinition>
  <timeDuration>P10D</timeDuration>
</timerEventDefinition>

3. Cycle(循环执行)

? 重复3次,每次间隔10 小时

<timerEventDefinition>
  <timeCycle>R3/PT10H</timeCycle>
</timerEventDefinition>

?也可以使用 cron 表达式指定时间周期,如从整小时开始的每 5 分钟触发一次触发器:

0 0/5 * * * ?

Timer Event的种类

同时Timer与Message极为类似,同样分为Intermediate Boundary 两种。Boundary又分为Interrupting non-Interrupting。这里不再赘述它们的区别。

1. Timer?Intermediate Event

Task A完成,ProcessToken复制,超时后Timer Event触发,激活Task B。

?2. Timer Boundary Event(Interrupting)

Task A未完成,超时后Timer Event触发,ProcessToken向下传递,激活Task B。

?3.?Timer Boundary Event(non-Interrupting)

Task A未完成,超时后Timer Event触发,ProcessToken复制并向下传递,循环重复激活Task B。

?

?Conditional Event

?Conditional Event是一种简单好用的Event,当我们仅仅希望等待某个条件为Ture再继续往下进行的时候,可以使用Conditional Event。

?如上图所示,workflow会等待Price > 50条件满足才会往下进行,让我们为Instance添加一个variable: Pirce =?40。此时不满足?Conditional Event的条件,因此workflow不会往下进行。

当我们我们修改Price = 60之后,满足条件的Conditional Event才会对ProcessToken放行。

?Termination Event

在上一篇博客当中,我们讲到了两个可能会导致workflow Instance无法正常结束的例子。其实我们可以使用Termination Event来终止workflow当中多余的任务。

?如图,不同于End Event, Termination Event不仅会销毁当前ProcessToken,也会将workflow当中未到达终点的ProcessToken一起销毁,从而结束整个workflow instance。

Signal Event

Signal Event与message类似,它们最大的区别在于Signal 不需要消息接收者,它可以作为Start Event,开启一个新的Workflow Instance。

?另外,SignalMessageTimer 一样,都分为Intermediate/Boundary 两种,Boundary 也分为Interrupting non-Interrupting两种模式,这里不再赘述。

?

?

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 23:01:13  更:2022-04-07 23:01:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 1:42:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码