Activiti框架 2 按角色分配走流程

2021-10-06 07:11:01 字數 3195 閱讀 1627

在activiti框架搭建好之後,我們要怎麼使用這個框架呢?很簡單,官方為我們提供了7個介面,分別操控框架的對應內容,下面我們來一起學習,簡單的走一套完整的流程吧。

一、建立測試類,引入測試用到的配置檔案

下邊是官方為我們提供的7大介面,他們的作用如下

;//key值

private

final

int version =1;

//版本號

//service介面的父類,可以直接獲取下邊的service

private processengine processengine;

//activiti的七大service類

private repositoryservice repositoryservice;

private runtimeservice runtimeservice;

private historyservice historyservice;

private managementservice managementservice;

private taskservice taskservice;

private identityservice identityservice;

private formservice formservice;

@before

public

void

init()

二、部署流程

/** 

* 流程定義(流程圖的設計)好以後,需要部署

* 流程部署涉及到的幾個動作和表

* 流程部署表 act_re_deployment

* 流程定義表 act_re_procdef

* 流程資源表 act_ge_bytearray

*/@test

public

void

complatetask()

在部署流程執行之後,我們在資料庫中就會發現,多了很多的表,其中檢視 act_re_procdef 在表

三、建立使用者、角色、以及他們的對應關係

/**

* 建立 角色/分組

*/@test

public

void

testprocessdeploy()

四、啟動流程

流程的啟動方法有幾種,我們採用最安全穩定的一種。通過例項id來啟動,保證唯一性。

/**

* 流程的啟動(流程例項的產生) new class->object

* 涉及到的表 :

* act_ru_execution 流程例項表

* act_ru_task 會產生一條待執行的任務記錄

* act_hi_taskinst 也會產生一條歷史任務記錄(注意:endtime is null)

* 注意: 以流程定義的key啟動的話,缺省會進入版本最新的流程

*/@test

public

void

teststartprocess()

五、根據角色查詢task節點
/**

* 根據角色查詢某組的任務

*/@test

public

void

testquerymygrouptask()

}}

六、節點通過——人工

流程申請過來的時候,我們要讓對應的角色來完成任務,保證流程繼續走下去

在分組的情況下,有人要來處理任務的時候,我們要保證只有乙個人正在處理,所以我們用拾取任務來保證工作的唯一性。

/**

* 任務拾取

* 我們設定的任務處理人員暫時都只是候選人 ,並不是實際處理人,必須經過任務拾取的過程來確定誰來處理任務

* 任務拾取的過程,就是給執行任務表指定assginee字段值的過程

*/@test

public

void

claimtask()

/** * 人工節點通過方法

* 流程處理過程:完成個人任務

* 處理流程的步驟:查詢個人任務 完成個人任務

* 涉及到的表:act_ru_task

*/@test

public

void

testcompletemytask()

七、通過節點——自動
/**

* 自動審核通過節點

*/@test

public

void

testcompletemytaskself()

if("usertask2"

.equals

(task.

gettaskdefinitionkey()

))if(

"usertask3"

.equals

(task.

gettaskdefinitionkey()

))system.out.

println

("**********=="

+task.

getname()

+" 流程結束 **********==");

//帶審核意見

processengine.

gettaskservice()

.complete

(task.

getid()

, mapvariables)

;//重新獲取task

task = taskservice.

createtaskquery()

.processinstanceid

(instance.

getprocessinstanceid()

).active()

.singleresult()

;}system.out.

println

("審批完成");

}

v4l2框架v4l2 device API分析

涉及到的結構體 struct v4l2 device在v4l2框架中充當所有v4l2 subdev的父裝置,管理著註冊在其下的子裝置 struct v4l2 device struct device 代表子裝置,包含了子裝置的相關屬性和操作 struct device struct subdev s...

2分鐘讀懂大資料框架Hadoop和Spark的異同

談到大資料,相信大家對hadoop和apache spark這兩個名字並不陌生。但我們往往對它們的理解只是提留在字面上,並沒有對它們進行深入的思考,下面不妨跟我一塊看下它們究竟有什麼異同。解決問題的層面不一樣 首先,hadoop和apache spark兩者都是大資料框架,但是各自存在的目的不盡相同...

2分鐘讀懂大資料框架Hadoop和Spark的異同

談到大資料,相信大家對hadoop和apache spark這兩個名字並不陌生。但我們往往對它們的理解只是提留在字面上,並沒有對它們進行深入的思考,下面不妨跟我一塊看下它們究竟有什麼異同。首先,hadoop和apache spark兩者都是大資料框架,但是各自存在的目的不盡相同。hadoop實質上更...