Flowable学习笔记

Flowable的实体基本概念:

1 流程定义(Process Definition)和流程实例(Process Instance)。

前者定义流程的模板(比如请假的审批规则),后者是每个运行时生成的流程实例(比如某次请假的审批申请)。所以前者使用Flowable的RepositoryService管理,后者使用RuntimeService管理。

2 事件(event)、任务(task)、顺序流(sequence flow)、网关(gateway)

事件是系统预设的操作节点,常用的事件有startEvent和endEvent,标记一个流程定义的起始和结束。

任务是最常见的操作节点,是工作流的核心组成部分。用户任务是需要用户界面操作的(比如上级审批、老板审批),服务任务是系统处理的(比如执行某些条件后,标记完成向下流转)等。用户任务需指定任务执行人,服务任务需指定执行的服务(如java类)。

流是将不同的事件或任务连接起来的有向箭头。流上可以附加条件,仅条件满足时才流动。

网关用于统筹不同的流,通过排他网关(根据条件N选1),并行网关(无条件N个并行),相容网关(根据条件N选m),事件网关(根据事件和逻辑决定选择),实现流的条件。排他网关举例:请假<4天,A审批;>=4天,B审批。

3 活动(activity)

是BPMN 2.0概念,意为每个执行节点。event、task、flow、gateway都是一个activity。每个活动有一个id,唯一标志。

4 执行(execution)

指当前流程实例执行到的节点,可以理解为一个指针,指向当前活跃的活动(activity)。一个流程实例同一时间点可能有多个执行(如并行网关指向多个task)。

其他概念:

1 部署(deployment)

指将定义的流程xml作为流程定义存储到数据库,使其支持生成流程实例的过程。

2 任务执行人

执行人可以通过assignee(指定某个人执行)、candidateUsers(指定某些人执行)、candidateGroups(指定某些组合执行)来完成一个或多个执行人指定。执行人按先到先得的规则进行任务执行。

3 事件监听器(Listener)

Flowable对不同实体定义了许多事件(注意:该事件不是上文提到的event实体,而是一个动作触发的告知事项)。事件(在可用时)提供type, executionId, processInstanceIdprocessDefinitionId

事件监听器对上述事件进行监听可以对指定的activity定义一个Listener。

常用的示例:

1)TaskListener:对task的监听关联的create, assignment, comleted, deleted四种事件。可以使用TaskListener对指定的Task进行监听。TaskListener 的事件类型和执行时机是与任务相关的,它可以访问任务相关的信息,并可以对任务进行操作(例如设置任务的执行人 指定任务的代理人 发送通知 等),因此通常用于处理与任务相关的事件。

2)ExecutionListener:对activity(包括sequenceFlow)的监听关联的start, take, end三种事件,可以使用ExecutionListener监听(也可以对event节点监听),可以捕获的事件:1.流程实例的启动和结束。2.流程执行转移。3.活动的启动和结束。4.网关的启动和结束。5.中间事件的启动和结束。6.启动事件的结束,和结束事件的启动。ExecutionListener 的事件类型和执行时机都是固定的,它不能直接访问任务相关的信息(例如任务的候选人、任务的执行者等)。

3)FlowableEventListener,资料较少,目前理解是全局事件监听器,用于定义整个流程实例中,指定的event执行逻辑(包括每种实例的每个event),对processInstance中的所有task对应的event生效。功能更普适,但配置成本更高,且对所有同类型事件生效(如Task-Created等)。和上述的两种Listener互为补充。

中文用户文档:Flowable BPMN 用户手册 (v 6.3.0)

代码攻略:采用springboot+flowable快速实现工作流_spring boot 工作流 vue-CSDN博客

https://www.cnblogs.com/zhlblogs/p/14041899.html

https://juejin.cn/post/7250044327882948667

事件监听器 :: Jmix 文档

相关推荐
晴子呀13 分钟前
Spring底层原理大致脉络
java·后端·spring
andrew_121936 分钟前
腾讯 IEG 游戏前沿技术 二面复盘
后端·sql·面试
Lill_bin1 小时前
JVM内部结构解析
jvm·后端·spring cloud·微服务·云原生·ribbon
evanYang_1 小时前
Spring Boot配置文件敏感信息加密
spring boot·后端·oracle
customer082 小时前
【开源免费】基于SpringBoot+Vue.JS网上超市系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
计算机学姐3 小时前
基于python+django+vue的医院预约挂号系统
开发语言·vue.js·后端·python·mysql·django·tornado
我爱李星璇3 小时前
Spring Boot 常用注解
java·spring boot·后端
孟林洁3 小时前
xxl-job、Quartz、power-job、elastic-job对比选型
后端
ZachOn1y3 小时前
Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 新一代垃圾回收器 ZGC 收集器
java·开发语言·jvm·后端·java-ee·个人开发
Java码农杂谈3 小时前
浅谈Tair缓存的三种存储引擎MDB、LDB、RDB
java·redis·分布式·后端·阿里云·缓存