认识BPMN2.0

💖专栏简介

✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。

✔️文章中只包含演示核心代码及测试数据,完整代码可查看作者的开源项目snail-camunda

✔️请给snail-camunda 点颗星吧😘

💖说在前面

本篇只对BPMN2.0中常用元素图标的认识以及简单的介绍,但并不深入讲解,后续在使用过程中再逐个分析。

💖Tasks

🧡Service Task

Service Task用于调用服务。在 Camunda 中,这是通过调用 Java 代码实现某些逻辑。

有以下4种方式调用逻辑代码:

  1. 实现 JavaDelegate 或 ActivityBehavior 的类
  2. 计算解析为委派对象的表达式
  3. 调用方法表达式
  4. 求值表达式

🧡Send Task

Send Task用于发送消息。在 Camunda 中,是通过调用 Java 代码来完成的。

🧡User Task

User Task用于对需要由人工参与完成的工作进行建模。当流程执行到达User Task时,将在分配给该节点的用户创建对应的任务。

🧡Script Task

Script Task是一项自动化活动。当流程执行到达脚本任务时,将执行相应的脚本。

🧡Receive Task

Receive Task是让流程保持等待状态,直到接收特定的消息才继续。

🧡Task Markers

以上仅列举了一些常见的任务,除了各种类型的任务外,我们还可以将任务标记为循环、多个实例或补偿。标记可以与任务类型结合使用。如果活动是多实例的,则活动底部的三条短线表示。三条垂直线表示实例将并行执行,而三条水平线表示顺序执行

💖Gateways

🧡Exclusive Gateway

通常称之为排他网关,使用排他网关时,仅选择一个序列流(流程的两个元素之间的连接器)。如果多个序列流的计算结果为“true”,则仅选择第一个序列流来继续流程。

如果无法选择序列流(没有条件的计算结果为“true”),则这将导致运行时异常,除非您定义了默认流。可以在网关本身上设置一个默认流程,以防没有其他条件匹配 - 就像编程语言中的“else”一样。

🧡Conditional and Default Sequence Flows

序列流可以定义一个条件。当条件的计算结果为“true”时,将选择该传出序列流。当以这种方式选择多个序列流时,将生成多个执行,并以并行方式继续该过程。注意:网关将以特定方式处理具有条件的序列流,具体取决于网关类型。

conditionalExpressions 可以是UEL表达式 和脚本一起使用。使用的表达式或脚本应解析为布尔值,否则在评估条件时会引发异常。<![CDATA[]]>这个标记所包含的内容将表示为纯文本

设置默认的序列流,当其他设置了条件的序列流都为"false"时就会走该序列流。

🧡Parallel Gateway

通常称之为并行网关,是基于传入和传出序列流来实现功能的。并行网关不评估条件。如果在与并行网关连接的序列流上定义了条件,则会忽略这些条件。

  • Fork:所有传出序列流并行执行,为每个序列流创建一个并发执行。
  • Join:到达并行网关的所有并发执行在网关等待,直到每个传入序列流的执行到达为止。

🧡Inclusive Gateway

通常称之为包容网关,可以看作是排他网关和并行网关的结合。它既可以定义传出序列流的条件,也可以接收多个序列流。

  • Fork:为结果是“true”的序列流创建一个并行执行。
  • Join:到达包容网关的所有并发执行在网关等待,直到每个具有流程令牌的传入序列流的执行到达为止。这是与并行网关的一个重要区别。也就是包容网关将只等待被执行的传入序列流。

🧡Event-based Gateway

基于事件的网关是基于事件做出决策。网关的每个传出序列流都需要连接到一个中间捕获事件。当流程执行到达基于事件的网关时,网关的行为类似于等待状态:执行被挂起。此外,还为每个传出序列流创建一个事件订阅。对于这种网关的使用有如下限制:

  • 基于事件的网关必须具有两个或多个传出序列流。
  • 基于事件的网关后面只能接 intermediateCatchEvent 类型的元素。 (引擎尚不支持在基于事件的网关之后接收任务。
  • 连接到基于事件的网关的 intermediateCatchEvent 必须具有单个传入序列流。

💖Events

🧡Start Events

启动事件:是在流程或子流程的开始位置定义。引擎至少需要一个启动事件来实例化进程。

🧡None Events

空白事件:子流程必须要有一个空白事件。

🧡Message Events

1、比如启动事件又可以定义为消息启动事件【Message Start Event】,而消息启动事件的使用有如下限制:

  • 消息启动事件的名称在给定的流程定义中必须是唯一的。否则引擎会在部署进程定义时引发异常。
  • 消息启动事件的名称在所有已部署的流程定义中必须是唯一的。否则引擎会在部署流程定义时引发异常。
  • 流程版本控制:在部署流程定义的新版本时,将取消先前版本的消息预订。对于新版本中不存在的消息事件,也是如此。

2、消息中间捕获事件【Message Intermediate Catching Event】。当令牌到达消息中间捕获事件时,它将在那里等待,直到具有正确名称的消息到达。

🧡Timer Events

计时器事件是由定义的计时器触发的事件。它们可以用作开始事件、中间事件或边界事件。

计时器使用 ISO 8601 时间格式进行配置,比如2024-03-11T12:13:14Z

还有很多就不全说了,很多都不常用,感兴趣的可以自己试试。

💖Subprocess

🧡Embedded Subprocess

嵌入式子流程是整个流程的一部分,在使用时也是有一些限制:

  • 一个子进程只能有一个空白启动事件,不允许有其他启动事件类型。子流程必须至少有一个结束事件。请注意,BPMN 2.0 规范允许省略子流程中的开始和结束事件,但当前的引擎实现不支持这一点。
  • 序列流不能跨越子进程边界。

🧡Call Activity

调用活动引用的流程位于流程定义外部。调用活动的主要用例是具有可重用的流程定义,该流程定义可以从多个其他流程定义中调用。

当流程执行到达调用活动时,将创建一个新的流程实例,该实例用于执行子流程,从而可能像在常规流程中一样创建并行子执行。主流程实例会一直等到子流程完全结束,然后继续执行原始流程。

🧡Event Subprocess

事件子流程是由事件触发的。可以在主流程或任何子流程级别添加。用于触发事件子流程的事件是使用 start 事件配置的。因此,事件子流程不支持空白启动事件。可以使用消息事件、错误事件、信号事件、计时器事件或补偿事件等事件触发事件子流程。

🧡Transaction Subprocess

事务子流程也是一个嵌入式子流程,可用于将多个活动分组到一个事务中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/657682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32单片机基本原理与应用(四)

直流电机驱动控制原理 1、电机正反转控制 在STM32中&#xff0c;直流电机的正反转控制主要通过改变电机输入电源的极性来实现。当电机的电压极性发生变化时&#xff0c;电机的旋转方向也会相应改变。在硬件电路中&#xff0c;可以通过继电器或晶体管等电子开关来切换电机的电源…

【TCP】重传与超时机制

前言 在网络通信的世界里&#xff0c;传输控制协议&#xff08;TCP&#xff09;扮演着一个至关重要的角色。它确保了数据的可靠传输&#xff0c;就像邮差确保每一封信都能准确无误地送达收件人手中一样。但是&#xff0c;网络环境充满了不确定性&#xff0c;数据包可能会因为各…

新书速览|Docker与Kubernetes容器运维实战

帮助读者用最短的时间掌握Docker与K8s运维技能 内容简介 随着云计算和容器技术的发展&#xff0c;Docker与Kubernetes已经成为各个企业首选的部署工具&#xff0c;使用它们可以提高系统的部署效率和运维能力&#xff0c;降低运维成本。本书是一本为初学者量身定制的Docker与Kub…

STM32F407移植OpenHarmony笔记4

上一篇写到make menuconfig报错&#xff0c;继续开整。 make menuconfig需要/device/soc/*下面有对应的Kconfig文件。 直接去gitee下载stm32的配置文件拿来参考用。 先提取Kconfig文件&#xff0c;后面再添加其它文件。https://gitee.com/openharmony/device_soc_st/tree/Open…

arcgis 如何将线路转为路面

在出外业的时候&#xff0c;用手机软件测出来的路&#xff08;线要素&#xff09;&#xff0c;需要转换成路面。具体操作如下&#xff1a; 1.打开线图层 2.菜单-地理处理-缓冲区 在缓冲区中&#xff0c;输入要转换的线要素&#xff0c;在线性单位下方填写要转换的面的宽度&am…

《Numpy 简易速速上手小册》第10章:Numpy案例研究和实践技巧(2024 最新版)

文章目录 10.1 实际案例分析10.1.1 基础知识10.1.2 完整案例&#xff1a;天气数据分析10.1.3 拓展案例 1&#xff1a;股票价格分析10.1.4 拓展案例 2&#xff1a;信号处理 10.2 Numpy 最佳实践10.2.1 基础知识10.2.2 完整案例&#xff1a;高效数组操作10.2.3 拓展案例 1&#x…

vue-cli初始化项目很慢?

第一种情况 大部分是由于npm的镜像源不是淘宝的 cmd输入npm config get registry查看是不是淘宝的&#xff0c;是的话看第二种情况试试不是的话输入npm config set registry https://registry.npm.taobao.org 第二种情况 vue-cli配置文件不是使用淘宝镜像源的 找到文件.vue…

已实现:vue、h5项目如何使用echarts实现雷达图、六边形图表

说实话&#xff0c;要说图表里&#xff0c;最强的应该属于echarts了&#xff0c;不管是接入难度上&#xff0c;还是样式多样性上&#xff0c;还有社区庞大程度上&#xff0c;都是首屈一指的&#xff0c;反观有的人习惯用chart.js了&#xff0c;这个无可厚非&#xff0c;但是如果…

微信小程序如何实现实时显示输入内容

如下所示&#xff0c;在许多场景中需要实时显示用户输入&#xff0c;具体实现见下文。 .wxml <input type"text" placeholder"请输入{{item.value}}(必填)" style"width:80%;" bindinput"get_required_value" data-info"{{it…

科技云报道:新趋势下,国产数据库或“春山可望”

科技云报道原创。 从540亿元到1286亿元——这是中国通信标准化协会大数据技术标准推进委员会针对中国数据库行业给出的一份预测报告。 报告指出&#xff0c;未来五年&#xff0c;中国数据库行业将从百亿级市场跨越成为千亿级市场。 最近两年&#xff0c;中国的数据库行业似乎…

Ubuntu 22.04 中文乱码解决方案

sudo apkg-reconfigure locales 按空格键选中

Jenkins自动化打包

Jenkins自动化打包 下载安装 我们直接从官网https://www.jenkins.io/download/ 下载所需的Jenkins文件 如上图所示, 选择Windows版本,下面就是一路安装即可,需要注意的是,选择作为系统服务选项, 不要自己设置账号密码登录. Web配置 安装完根据提示在浏览器打开 http://lo…

iZotope RX 10.4.2 mac激活版 音频修复和增强工具

iZotope RX 10 for Mac是一款专业的音频修复软件&#xff0c;旨在提供强大、精确的工具&#xff0c;让用户能够清晰、纯净地处理音频。以下是其主要功能和特点&#xff1a; 软件下载&#xff1a;iZotope RX 10.4.2 mac激活版下载 强大的降噪功能&#xff1a;iZotope RX 10采用了…

动态住宅IP可以用来注册亚马逊电商吗?

注册亚马逊店铺可以用动态IP&#xff0c;只要是独立且干净的网线就没问题&#xff0c;亚马逊规则要求一个IP地址只能出现一个亚马逊店铺&#xff0c;若使用不当会导致关联账户。所以现在非常多人使用指纹浏览器搭配代理IP 固定ip可以给我们的账户带来更多的安全&#xff0c;要知…

输电线路导线舞动在线监测装置:“舞动”不再!守护电网安全!

输电线路导线舞动会影响输电线路的运行安全&#xff0c;其影响因素主要包括以下几个方面&#xff1a; 1、风力影响&#xff1a;风力是导致输电线路导线舞动的主要原因之一。在风的激励下&#xff0c;会对导线施加较大的侧向压力&#xff0c;导线会随风摆动&#xff0c;发生扭转…

iOS17使用safari调试wkwebview

isInspectable配置 之前开发wkwebview的页面的时候一直使用safari调试&#xff0c;毕竟jssdk交互还是要用这个比较方便&#xff0c;虽说用一个脚本插件没问题。不过还是不太方便。 但是这个功能突然到了iOS17之后发现不能用了&#xff0c;还以为又是苹果搞得bug&#xff0c;每…

Skywalking trace UI页面中字段信息详解,包括端点、跨度类型和Peer

刚上手Skywalking的同学可能对 trace UI 页面信息中的字段信息不是很了解&#xff0c;在这里就给大家一一讲解&#xff0c;重点关注端点、跨度类型和Peer 服务 :服务的名称 实例&#xff1a;服务对应的实例 端点&#xff1a;端点(Endpoint) 对于特定服务所接收的请求路径, 如…

Word莫名其妙开启兼容模式将其永久取消的方法

这是因为Word模板文件被意外更改了 找到Word模板文件&#xff0c;目录在C:\Users\15976\AppData\Roaming\Microsoft\Templates 15976替换成你自己的用户名&#xff0c;不确定的就先点进C/Users看一看&#xff0c; AppData是隐藏文件夹&#xff0c;显示隐藏文件夹才能看见&am…

点餐APP开发需要用到的一些源代码

在数字化日益普及的今天&#xff0c;点餐APP已经成为人们日常生活的重要组成部分&#xff0c;从校园食堂到高级餐厅&#xff0c;从快餐外卖到定制化营养餐&#xff0c;点餐APP的多样性和便利性满足了不同用户的需求&#xff0c;本文将深入探讨在开发一款点餐APP时可能用到的源代…

Vim实战:使用 Vim实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…