activiti 概述

BPM,Business Process Management,业务流程管理,activiti 就是管理的工具框架;

activiti 规范

各类元素(节点)说明,包括属性、功能等;

启动、结束事件(Event)

负责流程开始、结束

启动事件

空启动事件
定时启动事件
异常启动事件
消息启动事件

启动事件都是“捕获型”的,等待触发(类推观察者模式)

结束事件

空结束事件
异常结束事件
取消结束事件
终止结束事件

顺序流(sequence flow)

标准顺序流
条件顺序流

任务

用户任务
脚本任务
webservice 任务
业务规则任务
邮件任务
Mule 任务
Camel 任务
手动任务
Java service 任务
Shell 任务
接收任务

用户任务

需要用户参与,必须人为触发来完成任务;

多实例

任务可以多次执行,比如会签。可以顺序执行(多人顺序审批),并行执行(多人同时执行)。
image.png

网关 gateway

控制流程走向。

排他网关,exclusive gateway,只有一个条件执行。
并行网关,将一个流程拆分(fork)为多个路径并行,或者将多条线路合并(join)。并行网关上不能设置条件(即使设置了也会被忽略)。
包容网关,可以设置条件,又可以执行多条线路。
事件网关,为中间捕获事件而设置的。
image.png

子流程 subprocess

调用活动 call activity

事件子流程

事务子流程

边界事件

环境准备

  1. IntelliJ IDEA安装actiBPM插件,从以下地址下载插件,从本地选择安装:

https://plugins.jetbrains.com/plugin/7429-actibpm/versions

  1. 解决流程节点中文名称乱码,IDEA\bin目录下,在idea.exe.vmoptions和idea64.exe.vmoptions末尾增加:

-Dfile.encoding=UTF-8

流程 activiti 步骤

  1. 部署 activiti 引擎
  2. 流程定义,bpmn图
  3. 流程定义部署
  4. 启动一个流程的实例
  5. 实例的相关操作:查询待办任务,处理待办任务,
  6. 流程结束

1)部署activiti
Activiti是一个工作流引擎(其实就是一堆jar包API),业务系统使用activiti来对系统的业务流程进行自动化管理,为了方便业务系统访问(操作)activiti的接口或功能,通常将activiti环境与业务系统的环境集成在一起。
2)流程定义
使用activiti流程建模工具(activity-designer)定义业务流程(.bpmn文件)。.bpmn文件就是业务流程定义文件,通过xml定义业务流程。
3)流程定义部署
向activiti部署业务流程定义(.bpmn文件)。使用activiti提供的api向activiti中部署.bpmn文件(一般情况还需要一块儿部署业务流程的图片.png)
4)启动一个流程实例(ProcessInstance)
启动一个流程实例表示开始一次业务流程的运行,比如员工请假流程部署完成,如果张三要请假就可以启动一个流程实例,如果李四要请假也启动一个流程实例,两个流程的执行互相不影响,就好比定义一个java类,实例化两个对象一样,部署的流程就好比java类,启动一个流程实例就好比new一个java对象。
5)用户查询待办任务(Task)
因为现在系统的业务流程已经交给activiti管理,通过activiti就可以查询当前流程执行到哪了,当前用户需要办理什么任务了,这些activiti帮我们管理了
6)用户办理任务
用户查询待办任务后,就可以办理某个任务,如果这个任务办理完成还需要其它用户办理,比如采购单创建后由部门经理审核,这个过程也是由activiti帮我们完成了,不需要我们在代码中硬编码指定下一个任务办理人了。
7)流程结束
当任务办理完成没有下一个任务/结点了,这个流程实例就完成了