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 文档

相关推荐
GreenTea2 小时前
7000 万 QPS、500 PB:OpenAI 如何用一个 Python 存储平台撑住 10 亿用户
后端·架构
Flynt3 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
Bs_MoneyMagnet3 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
GreenTea3 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
Bs_MoneyMagnet5 小时前
基于springboot+vue的心理咨询预约与随访平台的设计与实现 源码+文档
vue.js·spring boot·后端·spring·毕业设计·旅游·计算机毕业设计
IT_陈寒6 小时前
Vue的响应式更新把我坑惨了,原来问题出在这
前端·人工智能·后端
陌シ未央ゞ7 小时前
基于BM25算法和RRF实现的混合索引(java版)
人工智能·spring boot·后端·算法
第五页的你7 小时前
SpringBoot基础设施配置(Redis序列化,JJWT新版)
后端
吃饱了得干活7 小时前
RabbitMQ 原理解析(下):存储、集群与可靠投递
后端·rabbitmq
SelectDB7 小时前
某头部保险公司基于 SelectDB 的统一 OLAP 架构实践
后端