Activiti工作流-实战篇(用Activiti框架快速开发我们的工作流)

06/12 10:35
阅读数 78

一、前言

我实习的第一份工作接触到的就是工作流,那时正好带我的师兄他负责审批流的架构和开发,然后我就在大神的胯下茁壮成长。当时确实对我来说非常有挑战性,还好师兄的架构做的不错,底层的框架用的就是Activiti。不过说实话,学到了很多东西,顺便分享一下我们当时是怎么巧妙的用Activiti框架快速实现我们的工作流。


二、最后的成品

1.PC端

pc端干的事情,主要是流程的定义和流程的发起,还有我的工作台

流程定义:
在这里插入图片描述

我的工作台:
在这里插入图片描述


app上,可以让用户快速处理工作

发送消息通知:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

如果你们开发中遇到一些问题,我们可以共同探讨探讨!

三、开发前的准备

在这里插入图片描述

流程定义:流程该怎么走,可以理解为模板
流程实例:发起一个请假申请,这请假申请就是一个流程实力
任务:一个请假流程中有需要很多人审批,每个审批就是一个任务。
在这里插入图片描述

流程定义:描述审批流程走向

运行时数据:(何为运行时:一个流程发起后,还没结束,该流程就是处于运行时;一个轮到你处理的任务,该任务就是运行时,处理完后,就不是运行时了)

流程:一个未结束的审批流。审批流结束的时候数据会被删除。
任务:当前审批流到达的执行点。执行点执行完成后,数据会被删除,并且到下一个执行点。
流程变量:一个流程,或者一个任务中的变量。可以自定义变量来记录审批的状态。

历史数据:

流程:流程开始就会记录历史数据,并且记录开始时间,结束时间要等流程结束才会记录。
任务:执行中任务不会在历史库中落库,当任务执行完成后,会在历史库落库。
任务评论:执行任务时可以添加评论信息,直接进历史表。
流程变量:对应运行时的流程变量,结束后会进来。
附件:审批的附件表。可以存对象,存文件,存url等。


在这里插入图片描述


注意的地方

1.巧用表中的字段

delete_reason 直接存放流程实例的状态:通过,未通过,撤销
在这里插入图片描述

这里可能要手动去改变表中的字段。

2.学会用Native Query

activiti提供了Native Query(使用基于MyBatis的sql语句方式查询)方式自定义查询:

List<Task> tasks = taskSersive.createNativeTaskQuery()
 .sql("Select * from" + managementService.getTableName(Task.class)
 +"where  NAME_ = #{taskNmae} ")
.parameter("taskNmae","人事审批").list();

3.activiti里面有很多Join查询,我们最好单表查询

这里也需要我们把多表查询的接口,用Native Query查询

4.activiti的链式编程

5.activiti监听器的使用

6.activiti和spring整合使用

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部