当前位置: 首页 > news >正文

Camunda BPMN 基础组件

Camunda基础

一、参与者

参与者(Participants)是参与流程的对象,表示流程中活动的执行者,可以是一个组织、角色、系统或者个人。
图例1
图示为基础事件,除此之外还有:

  • 消息开始事件(Message Start Event),是消息和开始事件的结合。表示接收到从另一个参与者发出的消息从而触发了一个开始事件。
  • 消息流(Message Flow),代表流程中参与者双方之间消息的流动,也就是收发消息。
  • 定时器中间事件(Timer Intermediate Event),是定时器和中间事件的结合。代表在流程执行过程中由定时器触发的事件。
  • 排他网关(Exclusive Gateway),也叫互斥网关、异或网关。网关用来控制流程中的分支进行发散或者汇聚。排他网关表明多条分支路径只有一条可以执行。
  • 并行网关(Parallel Gateway),用来对并行的事件进行建模。当并行网关用于分支汇聚时,所有分支都执行完成后才会沿着顺序流继续执行下去。
二、任务

在这里插入图片描述
服务任务(Service Task)是任务的一种,它的工作一般由软件自动完成,比如一个 Web 服务或者一个自动化的应用。服务任务如图所示。服务任务用于调用服务。在 Camunda 中,这是通过调用 Java 代码或为外部执行者提供一个工作单元来完成的。

在这里插入图片描述
用户任务(User Task)用于为那些需要由人工参与者完成的工作建模。当流程执行到一个用户任务时,将在分配该任务的用户或组的任务列表中创建一个新任务。当任务完成后,流程引擎(简称引擎)会期望得到一个确认,这既可以是单击一个代表完成的按钮,也可以是由用户提供一些数据作为输入。

最常用的就是用户任务,一般在审批中使用,除此之外还有接收任务(Receive Task)、脚本任务(Script Task)、业务规则任务(Business Rule Task)、发送任务(Send Task)等。

三、网关

在流程中,通常需要做出选择,也就是进行业务决策。在 BPMN 中,这个决策用网关(Gateway)来表示。网关也叫逻辑门,用来控制顺序流的分叉(Fork)和连接(Join)。所谓的分叉,就是把顺序流(Sequence Flow)发散开去,变成两个或者多个分支;而连接则相反,把两个或者多个分支合并成一个。

  1. 排他网关( XOR 网关)
    在这里插入图片描述
    依次评估所有传出序列流,并选择第一个条件评估结果为真(True)的序列流来继续这个流程。与包含网关不同,它只可以选择一个序列流进行执行。

  2. 条件序列流(可实现网关功能)

在这里插入图片描述
序列流可以定义一个条件。当离开 BPMN 2.0 的活动时,默认行为是评估传出序列流上的条件。当条件评估的结果为真时,将被选为传出序列流。当以这种方式选择多个序列流时,将生成多个执行,并以并行方式继续进行。注意,这对于网关是不同的。网关会根据网关类型的不同以相应的方式来处理带有条件的序列流。

  1. 并行网关
    在这里插入图片描述

网关还可以用于为流程中的并发性建模。在流程模型中引入并发性最直接的网关是并行网关,它允许分叉到多个执行路径或连接多个传入的执行路径。
(1)Fork。所有传出序列流都是并行执行的,将为每个序列流创建一个并发执行。
(2)Join。到达并行网关的所有并发执行都在网关等待,直到所有传入序列流的执行都
到达,然后这个流程继续进行。

并行网关与其他网关类型的一个重要区别是它不会评估条件。如果在连接到并行网关的序列流上定义了条件,那么它们将被地忽略掉。

  1. 包含网关

在这里插入图片描述
包含网关可以看作排他网关和并行网关的结合。与排他网关类似,可以定义传出序列流的条件,而包含这些条件的网关将对它们进行评估然而,主要的区别在于包含网关可以接收多个序列流,就像并行网关一样。包含网关的功能是基于传入和传出序列流的:
(1)Fork。对所有传出序列流进行条件评估,对每个条件评估结果为真的序列流都会创建一个并发执行,以并行地执行。
(2)Join。到达包含网关的所有并发执行都在网关等待,直到拥有流程令牌的所有传入
序列流的执行都到达为止。这是与并行网关的一个重要区别。 注意,如果同一个包含网关有多个传入和传出序列流,那么包含网关可以同时具有 Fork和 Join 的行为。在这种情况下,网关将首先连接(Join)所有拥有流程令牌的传入序列流,然后将条件评估结果为真的传出序列流分割成多个并行执行路径。

四、事件

事件(Event)是 BPMN 2.0 执行语义中一个非常重要的概念,是流程运行过程中发生的事情,而这些事情的发生会影响到流程的流转。对每个事件而言,一般会包含两个要素,分别是触发这个事件的原因,以及由此导致的结果。事件包含开始(Start)、中间(Intermediate)和结束(End)三种类型。它既包括事件的开始、结束、边界条件,也包括每个活动的创建、开始、流转等。利用事件机制,可以通过事件控制器为系统增加辅助功能,如与其他业务系统集成、活动预警等。

在这里插入图片描述

在这里插入图片描述
执行流程,如果当任务 2 正在执行的过程中事件 1 发生了,任务 2 会被立即取消,然后开始执行任务 4。
如果任务 2 执行完成后事件 1 才发生,那么这个事件 1 会被忽略掉。

在这里插入图片描述
如果当任务 2 正在执行的过程中事件 1 发生了,任务 2 会继续执行;同时,任务 4也开始执行。如果事件 1 再次发生,上述流程会重复进行。
如果任务 2 执行完毕后事件 1 才发生,那么这个事件 1 会被忽略掉。

事件类型如下种类

  • 空白事件(None Events) 例如图4.1,4.2,4.3 分别都是空白时间,即不做任何处理

  • 消息(Message)事件:消息事件是引用指定消息的事件。消息有名称和有效负载。与信号不同,消息事件总是指向单个收件人。当一条消息从发送方到达接收方时,会触发一个流程的开始。
    在这里插入图片描述

  • 定时器事件(Timer Event)它们可以用作开始事件、中间事件或者边界事件。边界事件可以是中断的,也可以是非中断的。

在这里插入图片描述

  • 升级事件(Escalation Events)是引用一个已命名的升级(Escalation)的事件。它们主要用于从子流程到上层流程的通信。
    在这里插入图片描述
  • 条件事件(Conditional Event)是当满足特定条件时执行的事件。比如温度超过 100℃,或者 CPU 使用率超过 80%,等等。条件与流程是独立的,因此条件事件只能是捕获事件,而且一个条件事件不能触发另一个条件事件。
    在这里插入图片描述
  • 终止事件(Terminate Event)并行的执行多个任务,但是当其中一个任务执行完成后到终止事件后,其他并行任务就不再执行
    在这里插入图片描述
    汇总图例如下:
    在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 汽车的UDS诊断01
  • 深入解析HarmonyOS中的媒体查询及其高级用法
  • 基于spring boot的小型诊疗预约平台的设计与开发
  • k8s rbd image replicapool/xxx is still being used
  • 虚拟机桥接模式下设置静态IP
  • 开始尝试从0写一个项目--前端(四)
  • 阿里云代码库 绑定git使用指引
  • 用博达网站群管理平台设计网站时如何创建二级导航
  • ​Redis 实现计数器和限速器的
  • 【AI学习】人工智能的几种主义
  • 【芯智雲城】类比半导体模拟及数模混合芯片应用和选型指导
  • 网络工程师相关认证
  • 重修设计模式-创建型-单例模式
  • SQL,连结多行的字串并去除重复
  • FreeRTOS 快速入门(四)之队列
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 78. Subsets
  • Android单元测试 - 几个重要问题
  • Angular4 模板式表单用法以及验证
  • CSS 提示工具(Tooltip)
  • DataBase in Android
  • django开发-定时任务的使用
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Python 基础起步 (十) 什么叫函数?
  • python_bomb----数据类型总结
  • Sass 快速入门教程
  • windows下mongoDB的环境配置
  • 编写高质量JavaScript代码之并发
  • 如何选择开源的机器学习框架?
  • 实习面试笔记
  • 事件委托的小应用
  • 带你开发类似Pokemon Go的AR游戏
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​第20课 在Android Native开发中加入新的C++类
  • #13 yum、编译安装与sed命令的使用
  • (4)事件处理——(7)简单事件(Simple events)
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .bat文件调用java类的main方法
  • .CSS-hover 的解释
  • .net 7 上传文件踩坑
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 的程序集加载上下文
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • @RequestBody与@RequestParam
  • @vueup/vue-quill使用quill-better-table报moduleClass is not a constructor
  • [ABC275A] Find Takahashi 题解
  • [cogs2652]秘术「天文密葬法」
  • [Doris]阿里云搭建Doris,测试环境1FE 1BE
  • [flutter]一键将YAPI生成的api.json文件转为需要的Dart Model类的脚本
  • [HTML API]HTMLCollection
  • [Invalid postback or callback argument]昨晚调试程序时出现的问题,MARK一下