Activiti 工作流引擎

2,815 阅读4分钟

Activiti 工作流引擎

1 介绍

Activiti 是目前使用最为广泛的开源工作流引擎,我们在学习Activiti 的时候,需要注意的是Activiti官方只提供了后台相关功能,并没有与前端进行整合,这就需要我们自己去整合。学习Activiti的一个重点就是它提供的25张表,然后就是它的一些API.

1.1 工作流WorkFolw

完全自动执行的经营过程,根据一系列现成的规则,将文档、信息或任务在不同的执行者之间进行传递和执行。(业务的一个完成的审批流程,如请假、出差)

1.2 引擎

传统的流程审批:状态驱动

**痛点:**虽然开发便捷,但是流程变动修改复杂

**引擎:**自动处理、通过配置解耦

规则引擎、表达式引擎、工作流引擎

1.3 建模语言BPMN

BPM(Business Process Management 业务流程管理)

BPMN(Business Process Model And Notation 业务流程模型和符号)

通过一组符号来描述业务流程这发生的各种事件。

StartEvent 开启 EndEvent 结束

Task {

UserTask 用户任务 ScriptTask 脚本任务

Service Task 服务任务 MailTask 邮件任务

ManualTask 手册任务 ReceiveTask 介绍任务 BusinessRuleTask 商业规则任务 CallActivityTask 呼叫活动任务

}

SubProcess 子流程 Pool 集中 Lane 小路

Gateway{

ParallelGateway 并行网关 ExclusiveGateway 独占网关 InclusiveGateway 包含网关 EventGateway 事件网关

}

BoundaryEvent 边界事件 IntermediateCatchingEvent 中间处理事件

IntermediateThrowingEvent 中间事件 Annotation 注解

1.4 Activiti 使用步骤

  • 引入Activiti
  • 定义流程
  • 部署流程
  • 启动流程实例
  • 用户查询待办任务
  • 用户办理待办任务
  • 流程结束

1.5 特点

  • 一个流程中,执行对象可以存在多个,但是流程实例只能有一个。
  • 当流程按照规则只执行一次的时候,那么流程实例就是执行对象。

2 Activiti 核心25张表

image.png

ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。

ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。

ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。

ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。

ACT_GE_*: 'GE'表示general。通用数据, 用于不同场景下,如存放资源文件。

3 Activiti 核心API

各个Service的作用:

ProcessEngine 核心 流程引擎

可以构建其它类

RepositoryService管理流程定义
RuntimeService执行管理,包括启动、推进、删除流程实例等操作
TaskService任务管理
HistoryService历史管理(执行完的数据的管理)
IdentityService组织机构管理
FormService一个可选服务,任务表单管理
ManagerService使用Activiti的定制环境中基本上不会用到。 它可以查询数据库的表和表的元数据。另外,它提供了查询和管理异步操作的功能。

ProcessDefinition

流程定义类。可以从这里获得资源文件等。

ProcessInstance

代表流程定义的执行实例。如某员工请了一天的假,她就必须发出一个流程实例的申请。一个流程实例包括了所有的运行节点。我们可以利用这个对象来了解当前流程实例的进度等信息。流程实例就表示一个流程从开始到结束的最大的流程分支,即一个流程中流程实例只有一个。

Execution

Activiti用这个对象去描述流程执行的每一个节点。在没有并发的情况下,Execution就是同ProcessInstance。流程按照流程定义的规则执行一次的过程,就可以表示执行对象Execution。

4 Activiti 核心

4.1 流程变量

businessKey 业务ID

Map<String, Object> 流程变量 variables

  • Global 变量
  • Local 变量

4.2 网关

  • ParallelGateway 并行网关

    所以分支都执行,后边需要加一个并行网关来聚合

  • ExclusiveGateway 独占网关

    只会选择一条分支执行

  • InclusiveGateway 包含网关

    会选择多条符合条件的分支执行,后边也需要聚合

  • EventGateway 事件网关