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,一经查实,立即删除!

相关文章

c#异步编程

1.创建任务的几种方法 public void TaskAsync1(){//异步编程Task task new Task(() >{//Thread.Sleep(1000);Console.WriteLine("Task 的使用");});task.Start();}public void TaskAsync2(){Task.Factory.StartNew(() > { Console.WriteLine("创建异步线…

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

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

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

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

Java奠基】对象数组练习

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

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

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

python数据分析numpy基础之abs()用法和示例

1 python数据分析numpy基础之abs()用法和示例 python的通用函数ufunc (Universal functions)是一种对ndarray多维数组中的数据执行元素级运算的函数,即对数组的每个元素都调用通用函数。numpy的通用函数分为一元ufunc和二元ufunc。一元ufunc接收一个ndarray入参进行…

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

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

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

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

java回忆性记录5

java回忆性记录5 for循环 循环语句,属于重复结构中的流程控制语句,一旦条件符合就会执行循环,反之则不会。假如让计算机再屏幕打印500次我们不可能傻傻的把打印语句输出500次。依稀记得在没有学习循环语句的时候自己傻傻的ctrlc 、ctrlv了几…

第四篇: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…

15.Swift闭包

Swift 闭包 在 Swift 中,闭包是一种自包含的函数代码块,可以在代码中被传递和使用。闭包可以捕获并存储其所在上下文中的任意变量和常量的引用,这就是所谓的闭包的特性。闭包在 Swift 中被广泛用于函数式编程和异步编程,具有灵活…

二级C语言笔试9

(总分89.5,考试时间90分钟) 一、选择题 1. 下列对队列的叙述正确的是 。 A) 队列属于非线性表 B) 队列按“先进后出”原则组织数据 C) 队列在队尾删除数据 D) 队列按“先进先出”原则组织数据 2. 下列关于栈的描述中错误的是( )。 A) 栈是先进后出的…

weilai8游戏爬虫

#!/usr/bin/python # -*- coding: UTF-8 -*- #!/usr/bin/python # -*- coding: UTF-8 -*- import os,csv import re import random import time import requests from lxml import etreefrom urllib.parse import quote, unquotepage=98 sess = requests.Session()#创建一个ses…

linux系统上tomcat简介以及安装tomcat

tomcat简介以及安装 Tomcat简介安装环境安装jdk安装tomcat浏览器访问 Tomcat简介 Tomcat是一个开源的Web服务器和servlet容器,由Apache软件基金会开发和维护。它是一种流行的Java Web应用服务器,用于运行Java编写的Web应用程序。 Tomcat提供了一个轻量级…

基于javaEE的ssm仓库管理系统

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

hexo部署到gitee(码云)

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

Java多态原理

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