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

Springboot +Flowable,详细解释啥叫流程实例(一)

一.简介

上一篇中学习了Flowable 中的流程模板(流程定义)的部署问题,这一篇来学习什么叫流程实例。
部署之后的流程模板,还不能直接运行,例如我们部署了一个请假流程,现在 张三想要请假,他就需要开启一个请假流程,李四 想请假,他也需要开启一个请假流程,这开启的请假流程就是流程实例,**而我们一开始部署的请假流程,则类似于一个模版,基于此模版,我们可以开启很多个具体的流程实例。
**从这个角度来看,之前定义的 ProcessDefinition 就类似于一个 Java 类,今天要学习的 ProcessInstance 则相当于一个 Java 对象。

二.捋清概念:

首先我们需要先捋清三个概念:

流程定义 ProcessDefinition
流程实例 ProcessInstance
执行实例 Execution

1.流程定义 ProcessDefinition

流程定义 ProcessDefinition 。将一个流程 XML 文件部署到 flowable 中,这就是一个定义好的流程了,基于这个定义好的流程,我们可以开启很多流程实例。

2.流程实例 ProcessInstance

流程实例 ProcessInstance 就是通过流程定义启动的一个流程,他表示一个流程从开始到结束的最大的流程分支,流程实例和流程定义的关系就类似于 Java 对象和 Java 类之间的关系。

3.执行实例 Execution

执行实例 Execution 稍微有点难以理解。

首先从类的关系上来看,ProcessInstance 就是 Execution 的子类。

流程实例通常是执行实例的根结点,即在一个流程中,出口和入口可以算是一个流程实例的节点,而中间的过程则是执行实例。

假如流程本身就是一条线,那么流程实例和执行实例基本上是一样的,但是如果流程中包含多条线,例如下图:

在这里插入图片描述
这张图中有并行网关,并行任务执行的时候,每一个并行任务就是一个执行实例,这样大家就好理解了。

结论就是:在一个流程实例中,除了开始和结束之外,其他的都是执行实例。即使流程只有一条线,中间的也都是执行实例,只不过此时的执行实例等于流程实例而已。

三.五种流程启动方式

当我们将流程部署好之后,接下来启动流程,我们有五种不同的方式去启动一个流程。

1.通过流程定义的 id 去启动

首先就是通过流程定义的 id 去启动一个流程,对应的方法名称就是 RuntimeService#startProcessInstanceById,该方法有好几个重载的方法,不同的重载方法只是传递的参数不同而已,其他基本上都是一样的。

2.通过流程的 key 去启动

也可以通过流程定义的 key 去启动一个流程,这个流程定义的 key 其实就是流程 XML 文件中的 id,这个对应的方法名是 RuntimeService#startProcessInstanceByKey。

3.通过流程的 key+tenantId 去启动

有这样一种情况,例如我有两个子系统 A 和 B,A 和 B 中都有一个请假流程的定义,现在当我想要启动一个流程的时候,怎么知道是启动 A 的请假流程还是启动 B 的请假流程呢?此时我们可以通过租户 ID 即 tenantId 去区分,所以,流程启动就还有一个方法 RuntimeService#startProcessInstanceByKeyAndTenantId。

4.通过流程的 message 去启动

通过消息去启动一个流程,对应的方法是 RuntimeService#startProcessInstanceByMessage。

5.通过流程的 message+tenanId 去启动

通过消息+租户 ID 去启动一个流程,对应的方法是 RuntimeService#startProcessInstanceByMessageAndTenantId。

《肖申克的救赎》

生命可以归结为一种简单的选择:要么忙于生存,要么赶着去死。

懦怯囚禁人的灵魂,希望可以感受自由。强者自救,圣者渡人。

希望是件美丽的东西,也许是最好的东西。美好的东西是永远不会死的。

每个人都是自己的上帝。如果你自己都放弃自己了,还有谁会救你?

《熔炉》

我们一路奋战,不是为了能改变世界,而是为了不让世界改变我们。

现实如水母,看似美好无害实质总是致命伤人。

我们来到世界上,都是孤独的旅行,即使身边有人相伴,最终也会各奔东西!

世界上最美丽最珍贵的,反而是听不见且看不清的,只有用心才能感受得到。

《教父》

人可以不断犯错,但绝不能犯要命的错。

不要憎恨你的敌人,那会影响你的判断力。

人并非生来就伟大,而是越活越伟大。

《活着》

人是为了活着本身而活着,而不是为了活着之外的任何事物而活着。

以笑的方式哭,在死亡的伴随下活着。

没有什么比时间更具有说服力了,因为时间无需通知我们就可以改变一切。

你的命是爹娘给的,你不要命了也得先去问问他们。

《我不是药神》

世界上只有一种病,穷病,这种病你没法治,你也治不过来。

人间最高贵的是善良,是对生命的致敬。

《指环王》

把手握紧,里面什么也没有;把手放开,你得到的是一切。

我宁愿和你共度凡人短暂的一生,也不愿一个人看尽这世界的沧海桑田。

20.幸福的家庭都是相似的,不幸的家庭各有各的不幸。

或许有一天,人类变得萎缩懦弱,舍弃朋友,断绝友谊,但今天决不会这样。
《饮食男女》

22.人生不能像做菜,把所有的材料都准备好了才下锅。

什么叫做“可惜”啊,要心中有个“惜”字儿,才知道可惜。

其实一家人,住在一个屋檐下,照样可以各过各的日子,可是从心里产生的那种顾忌,才是一个家之所以为家的意义。

《让子弹飞》

世界上本没有路,有了腿便有了路。

如果你活着,早晚都会死;如果你死了,你就永远活着。

赚钱嘛,不寒碜

相关文章:

Springboot +Flowable,详细解释啥叫流程实例(一)

一.简介 上一篇中学习了Flowable 中的流程模板(流程定义)的部署问题,这一篇来学习什么叫流程实例。 部署之后的流程模板,还不能直接运行,例如我们部署了一个请假流程,现在 张三想要请假,他就需…...

信息安全复习十:Web与电子商务安全

一、章节梗概 1.信息安全的学科内容 2.Web和电子商务安全问题提出 3.安全套接字协议SSL与传输层安全协议TLS 4.安全电子交易(SET)简要介绍 复习: 密码学内容:对称密钥密码、公开密钥密码、报文鉴别 PKI:数字签名、数字证书、信任关系 身份认…...

flutter 启动其他app server或者页面失败

1.目标Service 设置 android:exported"true" 2.目标Service需要声明自定义权限。客户端需要声明权限。 3.目标Service需要添加<intent-filter></intent-filter> 检查以上的声明和权限&#xff0c; 如果还是不行 说明是 Android 11引入了*包可见性*’ …...

【linux-进程2】进程控制

&#x1f308;环境变量 &#x1f344;初识 系统带的命令可以直接运行&#xff08;ls ll命令等&#xff09;&#xff0c;但是我们自己写的命令必须要带上路径才能运行&#xff08;./myproc&#xff09;&#xff0c;这是什么原因导致的&#xff1f;如果我们也想自己写的命令直接…...

【五一创作】多域名环境和Office 365混合部署方案

目录 一、多域名环境是什么? 二、Office 365是什么? 三、多域名环境与Office 365的结合 总结 一、多域名环境是什么? 多域名环境指的是一个企业拥有多个域名,这些域名可能隶属于不同的子公司、部门或者品牌,但是都归属于同一个母公司。例如,一个中国电信集团旗下有…...

Vue:路由route

一、概念 1、组成 每一个路由都由 key 和 value 组成。 keyvalue路由 route。 2、本质 路由的本质&#xff1a;一个路由表达了一组对应关系。路由器的本质&#xff1a;管理多组对应关系。 3、路由的工作原理 点击之后路径变化——>路由器监视到变化——>根据路径…...

Windows系统被faust勒索病毒攻击勒索病毒解密服务器与数据库解密恢复

在近期&#xff0c;一种名为faust后缀的勒索病毒威胁已经引起了全球计算机系统安全领域的关注。faust勒索病毒是一种基于RSA加密算法的恶意软件&#xff0c;能够加密目标计算机系统上的所有文件&#xff0c;并向用户勒索赎金来承诺解密恢复操作。下面为大家介绍一下Windows系统…...

Java面试题总结 | Java面试题总结7- Redis模块(持续更新)

Redis 文章目录 Redisredis的线程模型Redis的Mysql的区别Redis和传统的关系型数据库有什么不同&#xff1f;Redis常见的数据结构zset数据结构Redis中rehash过程redis为什么不考虑线程安全的问题呢Redis单线程为什么还能这么快&#xff1f;为什么Redis是单线程的&#xff1f;red…...

虹科案例 | 如何通过智能、非接触式测量解决方案,提高起重机的安全和效率?

PART 1 案例详情 自建造初期以来&#xff0c;起重机行业已经走了很长一段路。技术的使用在行业进步中发挥了重要作用&#xff0c;降低了使用桥式起重机的危险性。特别是&#xff0c;智能、非接触式测量解决方案通过使用高架升降机更安全、更高效、更高效&#xff0c;为行业的进…...

流程图拖拽视觉编程-流程编辑器

目录 一、简介 二、流程编辑器-视图实现 三、参考资料 一、简介 前期文章&#xff1a; 流程图拖拽视觉编程--概述_Jason~shen的博客-CSDN博客 本期内容&#xff1a; 本期将介绍流程编辑器模块的实现方法&#xff0c;效果图如下所示。该模块基于QT Graphics/View实现&…...

6.hashcode与equals区别与联系

1.hashCode介绍 hashCode() 的作用是获取哈希码&#xff0c;也称为散列码;它实际上是返回一个int整数。 这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode() 定义在JDK的Object.java中&#xff0c;这就意味着Java中的任何类都包含有hashCode() 函数。 2.equals介…...

智能家居“落地者”:三翼鸟用场景方案持续链接大众消费

互联网分析沙龙(techxue)原创 作者 &#xff5c; 锡海 编辑 &#xff5c; 七喜 从上海车展再到AWE2023展会&#xff0c;只要有大型活动的地方&#xff0c;都能看到人潮汹涌的景象&#xff0c;久违的烟火气又回来了。数据显示&#xff0c;社会消费已出现较为强劲反弹&#xff0…...

【MATLAB图像处理实用案例详解(12)】——利用BP神经网络实现图像压缩

目录 一、图像压缩二、BP神经网络实现图像压缩原理三、算法步骤3.1 图像块划分3.2 归一化3.3 建立BP神经网络3.4 保存结果 四、效果演示 一、图像压缩 常见的文件压缩软件如WinZip、WinRAR等采用的是无损压缩&#xff0c;能够完全恢复原文件内容。多媒体信息具有信息量大、冗余…...

java学习之枚举

目录 一、枚举引出 二、分析问题 三、 解决方案-枚举 四、枚举的二种实现方式 五、应用案例 六、小结 一、枚举引出 package enum_;public class Enumeration01 {public static void main(String[] args) {Season spring new Season("春天", "温暖")…...

IPsec中IKE与ISAKMP过程分析(主模式-消息2)

IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息1&#xff09;_搞搞搞高傲的博客-CSDN博客 IPsec协议族中IKE&#xff08;Internet Key Exchange&#xff09;是一种基于ISAKMP的协议&#xff0c;它为建立IPSec安全通信隧道提供了一种无痕密钥交换的机制。简单来说&#xff…...

KDZR-10A三相直流电阻测试仪

一、产品概述 直流电阻的测量仪是变压器、互感器、电抗器、电磁操作机构等感性线圈制造中半成品、成品出厂试验、安装、交接试验及电力部门预防性试验的项目&#xff0c;能有效发现感性线圈的选材、焊接、连接部位松动、缺股、断线等制造缺陷和运行后存在的隐患。 为了满足感…...

C语言入门篇——指针篇

目录 1、指针 1.1内存地址 1.2基地址 1.3指针变量 2、指针类型 2.1指针-整数 2.2指针的解引用 3、特殊指针 3.1野指针 3.2空指针 4、指针运算 4.1指针-指针 4.2指针的关系运算 5、指针和数组 6、二级指针 7、指针数组 1、指针 1.1内存地址 内存是电脑上特别重…...

Python小姿势 - Python学习笔记:如何使用Python创建一个简单的计算器

Python学习笔记&#xff1a;如何使用Python创建一个简单的计算器 在本教程中&#xff0c;我们将学习如何使用Python创建一个简单的计算器。我们将学习如何使用Python的内置函数input()和print()&#xff0c;以及如何使用Python的运算符来完成这个项目。 首先&#xff0c;让我们…...

庖丁解牛 - FLAME: Taming Backdoors in Federated Learning

文章目录 论文笔记 - FLAME: Taming Backdoors in Federated Learning1. 基本信息2. 研究动机3. 基本原理3.1 面临挑战分析3.2 FLAME 算法总体概述3.3 FLAME 算法设计思想3.3.1 Dynamic Model Filtering3.3.2 Adaptive Clipping3.3.3 Adaptive Noising4. 结论论文笔记 - FLAME:…...

C++设计模式20:状态模式

C++ 23种设计模式系列文章目录 创建型模式 第1式 工厂方法模式 第2式 抽象工厂模式 第3式 单例模式 第4式 建造者模式 第5式 原型模式 结构型模式 第6式 适配器模式 第7式 桥接模式 第8式 组合模式 第9式 装饰器模式...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...