Activiti7(流程引擎)简单笔记,附带作者执行的Demo代码文件

文章目录

  • 一、Activiti7流程基础
    • 1、最简单的流程
    • 2、流程值表达式
    • 3、方法表达式
    • 4、节点监听器
    • 5、流程变量
    • 6、候选人
    • 7、候选人组
    • 8、流程网关
      • 排他网关
      • 并行网关
      • 包容网关
      • 事件网关
  • 二、Activiti7流程事件
    • 1、定时器事件
      • 定时器开始事件
      • 定时器中间事件
      • 定时器边界事件
    • 2、消息事件
      • 消息开始事件
      • 消息中间事件
      • 边界事件
    • 3、错误事件
      • 错误开始事件
      • 错误边界事件
      • 错误结束事件
    • 4、信号事件
      • 信号开始事件
      • 信号中间事件
      • 信号边界事件
    • 5、其他事件
      • 终止结束事件
      • 取消结束事件
      • 补偿事件
  • 参考文档

一、Activiti7流程基础

1、最简单的流程

  • 审批人直接在流程中写死,每次启动流程同一个节点,审批人都是一样的
  • 局限:审批人不可更改
    在这里插入图片描述

2、流程值表达式

  • 需要设置流程变量
  • 解决流程启动时,设置审批人的作用。每次启动流程都需要给每个审批节点设置审批
  • 局限:流程启动之后,审批人就不可更改
    在这里插入图片描述
    在这里插入图片描述

3、方法表达式

  • 当流程走到该节点会立即调用该方法,该方法的返回值就是审批人
  • 优点:审批人更灵活,流程可以走到该节点再设置审批人。在java程序中判定审批人是谁
    在这里插入图片描述
    在这里插入图片描述

4、节点监听器

  • 监听器的主要作用是,当该节点触发了事件之后,会触发java对应的方法
  • 优点:原来的节点有设置默认审批人了,通过监听器修改为新的审批人,同时可以操作流程变量,流程变量可以给【流程值表达式】赋值的
  • TaskListern主要用于节点的监听,共有四个事件:分别是:“create”、“assignment”、“complete”、“delete”,当流转到这个节点是触发create事件,当被委托是触发assignment事件,当事件完成时, 因为activity会删除相应数据表中的节点信息所以会同时触发complete和delete事件。
    在这里插入图片描述

在这里插入图片描述

5、流程变量

  • 可以给流程值表达式赋值,监听器可以获取到该变量
  • 全局变量:可以在流程启动的时候赋予变量,作用在整个所有流程实例中,流程完全走完才会被删除。
  • 局部变量:主要是针对流程节点和子流程实例,当流程节点结束,或者子流程实例结束时局部变量会被删除。当给主流程实例赋予局部变量时,等同于全局变量。
  • activiti变量 全局变量和局部变量

在这里插入图片描述

6、候选人

  • 候选人可以拾起任务,拾起之后其他候选人就不能再拾起这个任务了,只有拾起的人才可以审批。拾起的人在这个节点中变成了审批人。
  • 候选人拾起之后,也可以归还,归还之后当前节点可以由其他候选人拾起
  • 优点:单个审批节点只能有一个审批人,解决多人审批的问题

在这里插入图片描述
在这里插入图片描述

7、候选人组

  • 通过候选人组直接查询审批任务,选择候选人组中的候选人拾起该任务,拾起之后即可审批任务
  • 优点:解决一个节点需要配置多个候选人的问题
  • 候选人组下的候选人并不是存在流程中,而是存在外部业务中。

在这里插入图片描述

在这里插入图片描述

8、流程网关

  • 可控制流程的执行流向,常用于拆分或合并复杂的流程场景。
  • 优点:解决流程单向流动的问题,可以让流程通过逻辑判断,走向不同的节点。

排他网关

  • 用于在流程中进行条件判断,根据不同的条件选择不同的分支路径。只有满足条件的分支会被执行,其他分支会被忽略。
  • 多条路只会走一条路
    在这里插入图片描述

并行网关

  • 用于将流程分成多个并行的分支,这些分支可以同时执行。当所有分支都执行完毕后,流程会继续向下执行。
  • 不用设置条件,需要所有子流程走完才能走到下一个节点
  • 该网关一定是成双成对出现的,少一个要么缺少开始,要么缺少结束,少一个流程启动就会报错。
    在这里插入图片描述

包容网关

  • 用于根据多个条件的组合情况选择分支路径。可以选择满足任意一个条件的分支执行,或者选择满足所有条件的分支执行。
  • 排他网关和并行网关的结合体。单条线可以设置条件,也可以不设置条件,不设置条件=满足条件。
  • 满足条件的所有子流程走完,才会走到下一个节点。
  • 该网关也一定是成双成对的
    在这里插入图片描述

事件网关

  • 用于根据事件的触发选择分支路径。当指定的事件触发时,流程会选择对应的分支执行。

二、Activiti7流程事件

1、定时器事件

  • SpringBoot整合Activiti7——定时器事件(九)

定时器开始事件

  • 不用发起,部署直接运行
  • 定时启动,持续时间启动(timeDuration),一般使用方式。部署之后,持续时间到了启动流程
  • 作者定义了30个3秒启动一次的服务任务(循环启动),因为Activiti7是隔一段时间执行定时任务,所以可能会导致并不是3秒输出一次。因为Activiti7扫描的时间可能大于3秒
  • 主要是解决一个定时启动的业务问题
    在这里插入图片描述

定时器中间事件

  • 持续时间(timeDuration),一般使用方式
  • 解决审批之后,不是立马到下一个节点,有缓冲的时间。
  • 在这缓冲的时间可以做一系列防错处理

在这里插入图片描述

定时器边界事件

  • 解决审批人长时间不处理审批任务的问题。
  • 中断事件:当触发了事件之后,流程走向中断流程。中断流程一般设置为其他人审批。定时任务一般设置为持续时间,持续时间到了之后直接触发。
  • 非中断事件:当触发了事件之后,原流程不受影响,新增一个子流程走中断流程。中断流程一般设置为通知事件。循环通知用户审批。定时任务一般设置为循环事件。
    在这里插入图片描述

2、消息事件

消息开始事件

  • 部署之后,发送消息,触发流程启动
    在这里插入图片描述

消息中间事件

  • 只有接收了消息之后,才会流向下一个节点
    在这里插入图片描述

边界事件

  • 发送消息之后,会发生对应的流程事件
  • 非中断事件,接收消息之后,会通知用户审批
    在这里插入图片描述

3、错误事件

错误开始事件

  • 错误事件不能启动流程实例
  • 错误事件一定是中断的
    在这里插入图片描述

错误边界事件

  • 当前流程报错之后,进行兜底处理
    在这里插入图片描述

错误结束事件

在这里插入图片描述

4、信号事件

  • 作用:并行流程实例之间的协作,动态流程控制,异常处理。

信号开始事件

  • 通过全局信号启动
    在这里插入图片描述

信号中间事件

  • 抛出信号不会中断流程
  • 接收到信号的流程启动执行
    在这里插入图片描述

信号边界事件

在这里插入图片描述

5、其他事件

终止结束事件

  • 子流程控制结束

在这里插入图片描述
在这里插入图片描述

取消结束事件

  • 处理事务子流程
  • 触发取消边界事件,并自动触发补偿任务,补偿任务需要在审批人下面
  • 流程设计器可能有问题需要自己在【补偿自动任务】手动加上isForCompensation=“true”
    在这里插入图片描述

补偿事件

  • 用于处理流程中发生异常或错误的特殊事件
  • 作用,作者目前也没看懂
    在这里插入图片描述

参考文档

  • 2023全新讲解Activiti7工作流框架-手把手教学-快来学习起来吧
  • 工作流-流程实例【ProcessInstance】与执行实例【Execution】

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

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

相关文章

【Java EE初阶十二】网络编程TCP/IP协议(一)

1. 网络编程 通过网络,让两个主机之间能够进行通信->就这样的通信来完成一定的功能,进行网络编程的时候,需要操作系统给咱们提供一组API,通过这些API来完成编程;API可以认为是应用层和传输层之间交互的路径&#xf…

多旋翼无人机飞行控制详解,四旋翼无人机飞控原理深入解析

在四旋翼无人机中,相邻的两个螺旋桨旋转方向是相反的。如图所示,三角形红箭头表示飞机的机头朝向,螺旋桨M1、M3的旋转方向为逆时针,螺旋桨M2、M4的旋转方向为顺时针。当飞行时,M2、M4所产生的逆时针反作用力&#xff0…

Java奠基】对象数组练习

目录 商品对象信息获取 商品对象信息输入 商品对象信息计算 商品对象信息统计 学生数据管理实现 商品对象信息获取 题目要求是这样的: 定义数组存储3个商品对象。 商品的属性:商品的id,名字,价格,库存。 创建三个…

双活工作关于nacos注册中心的数据迁移

最近在做一个双活的项目,在纠结一个注册中心是在双活机房都准备一个,那主机房的数据如果传过去呢,查了一些资料,最终在官网查到了一个NacosSync 的组件,主要用来做数据传输的,并且支持在线替换注册中心的&a…

学生学习知识点总结作文试题练习题考试资讯网站源码

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买) 资源简介 学生学习知识点总结作文试题练习题考试资讯网站源码+WAP手机版+采集优化版-整站打包 整站打包源码,简洁大…

多模态(二)--- CoCa原理与源码解读

1 CoCa简介 CoCa代表Contrastive Captioner 的缩写,代表模型用两个目标函数训练出来的,一个是Contrastive Loss,一个是Captioning Loss。 2 CoCa训练流程 利用ViT对image进行encoder编码获得图像特征token对图像特征进行attention pooling…

第四篇:SQL语法-DDL-数据定义语言

大年初一限定篇😀 (祝广大IT学习者、工作者0 error 0 warning!) 一,DDL数据库操作 (一)库的查询操作 1.列出所有已定义数据库 show databases; 2.查询当前所处数据库 select database(); &…

基于Linux的HTTP代理服务器搭建与配置实战

在数字化世界中,HTTP代理服务器扮演着至关重要的角色,它们能够帮助我们管理网络请求、提高访问速度,甚至在某些情况下还能保护我们的隐私。而Linux系统,凭借其强大的功能和灵活性,成为了搭建HTTP代理服务器的理想选择。…

【C语言——打印乘法口诀表】

乘法表: 我们可以定义一个i控制行的变化,外加看上图的表得知我们需要用到循环结构,i是行需要不停的加加,因此,for循环比较好用,可以用两个嵌套的循环,外层循环即用到的i表示的是每一行的打印&am…

【从Python基础到深度学习】4. Linux 常用命令

1.配置root用户密码 root用户为系统默认最高权限用户,其他用户密码修改命令与root用户修改密码命令相同 sudo passwd root 2.添加用户(henry) sudo useradd -m henry -s /bin/bash 3.配置henry用户密码 Xshell下连接新用户(hen…

基于javaEE的ssm仓库管理系统

仓库管理系统的重中之重是进销存分析这一板块,在这一板块中,顾名思义能够查询到近期的进货记录,包括每日的进货单据,单品推移(即某一商品的库存变化),方便我们核对库存差异。同时也需要查询到每日的销售数据&#xff0…

hexo部署到gitee(码云)

引言 Hexo 是一个基于Node.js的静态博客框架,而 Gitee(也被称为码云)是一个国内的代码托管平台,支持 Git 版本控制系统,与 GitHub 类似。将 Hexo 部署到 Gitee Pages 可以让你的博客受益于 Gitee 的国内服务器&#xf…

Java多态原理

参考 虚方法 JVM杂记:对多态实现原理、虚方法表、虚方法、静态解析、动态链接的一些思考_多态和方法表的关系-CSDN博客 静态分派与动态分派 (JVM)Java虚拟机:静态分派 & 动态分派 原理解析 - 掘金 虚方法表 JVM 栈帧&am…

C++——二叉树

引入 map和set特性需要先铺垫二叉搜索树,而二叉搜索树也是一种树形结构 二叉搜索树的特性了解,有助于更好的理解map和set的特性 1.二叉搜索树的概念及优缺点 1.1二叉搜索树的概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或…

Python中使用opencv-python进行人脸检测

Python中使用opencv-python进行人脸检测 之前写过一篇VC中使用OpenCV进行人脸检测的博客。以数字图像处理中经常使用的lena图像为例,如下图所示: 使用OpenCV进行人脸检测十分简单,OpenCV官网给了一个Python人脸检测的示例程序,…

Backtrader 文档学习- Plotting - Plotting Date Ranges

Backtrader 文档学习- Plotting - Plotting Date Ranges 1.概述 1.9.31.x版本增加了绘制部分图形的功能。 可以使用策略实例中保留完整长度的时间戳数组的索引或者使用实际的datetime.date 或datetime.datetime 实例来限制需要绘制的内容。 仍然可以使用标准的cerebro.plot…

静态时序分析:建立时间分析

静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在静态时序分析中,建立时间检查约束了触发器时钟引脚(时钟路径)和输入数据引脚(数据路径)之间的时序关系&#x…

android中实现设备尺寸适配

1、引言 设备尺寸适配的重要性想必就不用我多说了,在我发布的历史文章中我曾谈过Qt中的设备尺寸适配问题,那这里我就来教大家如何在android中做设备尺寸适配。在android中设备尺寸适配的方式有好几种,但我喜欢的还是使用获取设备真实尺寸然后…

c语言游戏实战(4):人生重开模拟器

前言: 人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 网页版游戏: 人生重开模拟器 (ytecn.com) 1.实现一个简化版的人生重开模拟器 (1) 游戏开始的时…

PLC在物联网中位置—承上启下,与上位机下位机的关联。

谈到物联网,就绕不开PLC,本文着重介绍PLC的定义、与单片机的区分,价值、物联网中的位置,以及和上位机、下位机的关联,让友友们对PLC有个全面的认知。 一、什么是PLC PLC是可编程逻辑控制器(Programmable L…