Activiti工作流-實戰篇(用Activiti框架快速開發我們的工作流)

藍星花發表於2018-12-01

一、前言

我實習的第一份工作接觸到的就是工作流,那時正好帶我的師兄他負責審批流的架構和開發,然後我就在大神的胯下茁壯成長。當時確實對我來說非常有挑戰性,還好師兄的架構做的不錯,底層的框架用的就是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整合使用

相關文章