文章目录
- 一、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】