flowable-工作流知识图谱

41

image.png

1. 基本概念

  • 流程定义 (Process Definition)

    • 流程定义是一个模型,描述了业务流程的结构和行为。它通常包括各种元素,如任务、网关、事件等,使用BPMN 2.0标准来表示。

    • BPMN 2.0允许精确地描述业务流程的各个方面,支持建模复杂的业务逻辑。

  • 流程实例 (Process Instance)

    • 每个流程定义可以有多个流程实例,代表同一个流程的不同执行。

    • 流程实例在启动后,可以有独立的状态和数据,直到流程完成。

  • 任务 (Task)

    • 任务是流程中的工作单元,可能是手动任务、用户任务、服务任务等。

    • 每个任务都有生命周期,从创建到分配、完成等。

  • 执行 (Execution)

    • 执行是流程运行的动态表现,描述了当前流程实例的状态。

    • 通过执行,可以跟踪流程的当前节点、变量状态等。

  • 用户任务 (User Task)

    • 用户任务是需要用户交互的任务,如填写表单、审批等。

    • 用户任务通常会分配给特定的用户或用户组,并等待他们的操作。

2. 流程引擎组件

  • 流程引擎 (Process Engine)

    • 流程引擎是Flowable的核心组件,负责管理流程定义和实例的执行。

    • 引擎提供API用于启动、暂停、终止流程实例等操作。

  • 资源服务 (Repository Service)

    • 资源服务用于管理流程定义的部署、查询和版本管理。

    • 它允许在引擎中添加或更新流程定义,并提供访问这些定义的接口。

  • 运行时服务 (Runtime Service)

    • 运行时服务管理流程实例的生命周期,包括启动、查询、信号等操作。

    • 它可以操作流程实例的执行和变量,并处理流程运行中的事件。

  • 任务服务 (Task Service)

    • 任务服务提供管理任务的功能,如创建、分配、查询任务等。

    • 任务服务也处理任务的操作,如认领、完成、转移等。

3. BPMN 2.0 元素

  • 开始事件 (Start Event)

    • 表示流程的起始点,当事件发生时触发流程的启动。

    • 开始事件可以是消息、计时器、信号等不同类型。

  • 结束事件 (End Event)

    • 标示流程的结束点,表示流程实例的结束。

    • 结束事件可以是普通的结束、错误结束等类型。

  • 排他网关 (Exclusive Gateway)

    • 用于流程的条件分支,基于条件选择一条路径执行。

    • 排他网关会评估多个条件表达式,仅选择一个为真的路径。

  • 用户任务 (User Task)

    • 定义需要人工处理的任务,通常与用户界面相关。

    • 用户任务可以指定参与者、任务表单、到期时间等。

  • 服务任务 (Service Task)

    • 用于自动执行后台服务任务,如调用外部系统的API、执行脚本等。

    • 服务任务可以配置输入输出参数,用于传递数据。

  • 顺序流 (Sequence Flow)

    • 定义流程元素之间的连接,表示流程的执行顺序。

    • 顺序流可以有条件表达式,以控制流程的动态路径。

4. 部署和执行流程

  • 流程部署

    • 部署流程定义是将BPMN文件上传到Flowable引擎中,使其可用于执行。

    • 部署可以包含多个流程定义,并支持版本管理。

  • 流程启动

    • 启动流程实例时,可以设置初始变量和参与者。

    • 可以通过API、事件、消息等多种方式启动流程。

  • 任务分配

    • 任务可以分配给特定的用户、用户组或角色。

    • 分配机制可以是手动认领、自动分配等。

  • 任务完成

    • 任务完成后,流程继续到下一个节点或任务。

    • 用户任务完成时,可以收集用户输入的数据。

5. 监听器和事件

  • 执行监听器 (Execution Listener)

    • 执行监听器是挂载在流程元素上的回调函数,在特定事件发生时触发。

    • 典型应用包括在节点进入、退出时执行自定义逻辑。

  • 任务监听器 (Task Listener)

    • 任务监听器是任务生命周期中的回调函数,可以在任务创建、分配、完成等阶段触发。

    • 它们可以用于自定义任务的行为,如动态调整任务分配。

  • 事件 (Event)

    • Flowable支持多种事件类型,如启动事件、终止事件、定时器事件等。

    • 事件用于触发特定的流程操作或外部系统交互。

6. 扩展和定制

  • 自定义服务任务

    • Flowable允许开发者编写自定义Java类,实现特定的服务任务逻辑。

    • 自定义服务任务可以在BPMN模型中配置,并与流程引擎集成。

  • 扩展流程引擎功能

    • Flowable提供插件机制,允许开发者扩展引擎的功能,如自定义数据存储、任务分配策略等。

    • 插件可以独立开发,并与核心引擎无缝集成。

7. 持久化和事务

  • 数据库持久化

    • Flowable使用关系型数据库来存储流程实例、任务、变量等数据。

    • 数据库架构可以配置,支持主流的关系型数据库。

  • 事务管理

    • Flowable支持分布式事务管理,确保流程操作的一致性和完整性。

    • 事务管理包括回滚机制,以应对操作失败或异常。

8. 集成和API

  • REST API

    • Flowable提供RESTful API,用于与引擎交互,支持流程定义、实例管理、任务操作等功能。

    • REST API易于集成到不同的系统中,如前端应用、第三方服务等。

  • Java API

    • Flowable的Java API允许开发者通过代码直接控制流程引擎。

    • Java API提供了丰富的接口和方法,用于流程定义、实例管理、任务操作等。