activiti 文档_Activiti极简入门教程

activiti极简入门

大纲

1.activiti简介

2.BPMN2.0流程定义规范

3.常用场景实战(demo)

权限管理

串行审批

并行审批

activiti简介

什么是工作流

工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型表达并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。

https://zh.wikipedia.org/wiki/%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%8A%80%E6%9C%AF

什么是activiti

Activiti is a light-weight workflow and Business Process Management (BPM) Platform.

Its core is a super-fast and rock-solid BPMN 2 process engine for Java.

It's open-source and distributed under the Apache license.

https://github.com/Activiti/Activiti

什么是BPMN

业务流程模型和标记法BPMN, Business Process Model and Notation)[译注1]是一套图形化表示法,用于以业务流程模型详细说明各种业务流程。

https://zh.wikipedia.org/wiki/%E4%B8%9A%E5%8A%A1%E6%B5%81%E7%A8%8B%E6%A8%A1%E5%9E%8B%E5%92%8C%E6%A0%87%E8%AE%B0%E6%B3%95

activiti特点

1.数据持久化

Activiti数据持久化使用MyBatis,通过最优的SQL语句执行Command。

2.引擎service接口

| service接口 | 功能 |

| RespositoryService | 用于管理流程仓库,例如:部署、删除、读取流程资源 |

| IdentifyService | 用户管理、组管理 |

| RuntimeService | 处理运行状态流程实例、任务 |

| TaskService | 管理、查询任务 |

| FormService | 读取流程、任务相关的表单数据 |

| HistoryService | 查询历史数据 |

| ManagementService | 引擎管理,查询引擎配置、数据库等信息 |

3.流程设计器

Activiti团队专门设计了用来设计BPMN2.0规范的流程设计器——Eclipse Designer.

Idea中插件 actiBPM.

4.原生支持spring

轻松地进行spring集成

5.分离运行时与历史数据

提高运行时数据操作的效率

6.activiti数据表结构

| 表名 | 解释 | 功能 |

| ACT_RE_* |repository |流程信息 |

|ACT_RU_* | runtime | 运行实例信息 |

| ACT_ID_* |identity |用户和组信息 |

|ACT_HI_* | history | 历史信息 |

| ACT_GE_* | general | 系统信息 |

activiti BPMN2.0规范流程定义

启动事件与结束事件

Activiti可以调用API触发启动事件。

1.空启动事件

定义

<startEvent 

启动

runtimeService

保存启动事件用户信息,方便后续直接调用

<startEvent 

2.定时启动事件

设定事件启动

| 属性名 | 功能 |

| timeDate | 一次性启动时间 |

| timeDuration | 某个流程后间隔多长时间启动 |

| timeCycle | 周期性任务 |

<startEvent 

3.异常启动事件

抛出异常时启动,常用于启动子流程

4.空结束事件

结束事件,无返回信息

<endEvent 

5.异常结束事件

结束事件,抛出异常信息

6.终止结束事件

提前结束流程时使用

7.取消结束事件

取消事务子流程时使用

顺序流

1.标准顺序流

连接流程定义中的原件

<sequenceFlow 

2.条件顺序流

满足指定条件才会执行

<sequenceFlow 

任务

1.用户任务

用户任务必须有人参与

| 属性名 | 功能 |

| assignee | 指定任务处理人 |

| cadidateUsers | 指定候选人 |

| cadidateGroups | 指定候选组 |

| dueDate | 设置任务到期时间 |

<userTask 

2.脚本任务、WebService任务、JavaService任务、业务规则任务、邮件任务、Mule任务、Caml任务、手动任务、shell任务

网关

网关用于控制流程走向

1.排他网关

排他网关与条件顺序流配合使用,执行条件满足的一条路线

(1)如果多个网关结果为true,执行第一个为true的网关路线

(2)如果所有网关结果均为false,抛异常

<userTask 

2.并行网关

并行网关将单条线路拆分成多条线路,最终再合并,主要操作有

拆分(fork):并行执行所有顺序流,并未每条顺序流创建一条执行线路。

合并(join):所有从并行网关拆分并执行完成的线路均在此等候,直到所有执行完了才继续向下执行。

<parallelGateway 

3.包容网关

包容网关是排他网关和并行网关的组合,可以为并行执行的线路设定执行前提条件

常用场景实战

全部基于以上介绍的小知识点实现,基于springboot,代码地址

lyyang233/activiti-study​github.com
4a8147e451a0d5c9a6a537dca1e04a4f.png

权限管理

用户和组的使用,配合用户任务设置候选人的功能实现权限控制

(1)新建用户和组

(2)将用户加入指定组

(3)设置用户任务候选用户或候选组

(4)候选人中领取任务

(5)候选人完成任务

详情见demo

串行审批

使用排他网关,实行串行审批,跳级审批,打回功能

详情见demo

并行审批

使用排他网关、并行网关,实现并行审批、逻辑打回功能

详情见demo

常见问题

1.类冲突

使用springboot集成activiti的时候,需要在启动项中排除org.activiti.spring.boot 中的SecurityAutoConfiguration类

@SpringBootApplication

2.resource默认加载流程定义文件不能为空

启动web服务的时候,resource下必须有processes文件夹、且文件夹内必须有.bpmn流程定义文件

3.idea流程定义插件显示问题

actiBPM定义候选人之后,移动到其他组件再点回去会显示为空,需要用文本形式查看源文件

4.流程定义允许重名

流程定义主键为流程id,用户定义流程交互的标识一般为流程名,重复定义流程名之后,使用流程名启动流程实例可能启动错误的流程

5.事务一致性

用户认领task后,服务停止,task仍保留

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值