activiti5使用者任務分配

2021-09-01 22:16:54 字數 1835 閱讀 2170

使用者任務分配辦理人:

1.使用者任務可以直接分配給乙個使用者,這可以通過humanperformer元素定義。 humanperformer定義需要乙個 resourceassignmentexpression

來實際定義使用者

eg:

kermit

任務只有乙個使用者的時候在activiti中,使用者叫做執行者。 擁有執行者的task不會出現在其他人的任務列表中, 只能出現執行者的個人任務列表中。

直接分配給使用者的任務可以通過taskservice像下面這樣獲取:

listtasks = taskservice.createtaskquery().taskassignee("kermit").list();

2.任務也可以加入到人員的候選人員列表中。需要使用potentialowner元素。 用法和humanperformer元素類似,注意它需要指定表示式中的每個

專案是人員還是群組 (引擎猜不出來)。

eg:user(kermit), group(management)

分配給候選使用者列表或組的任務可以通過taskservice像下面這樣獲取:

listtasks = taskservice.createtaskquery().taskcandidateuser("kermit").list();

//listtasks = taskservice.createtaskquery().taskcandidategroup("kermit").list();

此時對應辦理人必須拾取任務,方能辦理成功,任務被其中乙個人拾取後,其他人不可見此任務

任務拾取方法: processengine.gettaskservice().claim(taskid, userid);

ps: 如果沒有顯示指定設定的是使用者還是群組, 引擎會預設當做群組處理。所以下面的設定與使用group(accountancy)效果一樣。

accountancy

3.activiti對任務分配的擴充套件

當分配不複雜時,使用者和組的設定非常麻煩。 為避免複雜性,可以使用使用者任務的自定義擴充套件。

assignee屬性:這個自定義擴充套件可以直接把使用者任務分配給指定使用者。

它和使用上面定義的humanperformer 效果完全一樣。

candidateusers屬性:這個自定義擴充套件可以為任務設定候選人。

它和使用上面定義的potentialowner 效果完全一樣。 注意它不需要像使用potentialowner通過user(kermit)宣告, 因為這個屬性只能用於人員。

candidategroups屬性:這個自定義擴充套件可以為任務設定候選組。

ps:這三個屬性都可以通過流程變數動態指定值,多值需要用逗號隔開

4. 如果上面的方式還不滿足需求,還可以使用建立事件的任務*** 來實現自定義的分配邏輯:

delegatetask會傳遞給tasklistener的實現, 通過它可以設定執行人,候選人和候選組:

public class myassignmenthandler implements tasklistener

5. 使用spring時,可以使用表示式 把任務***設定為spring**的bean, 讓這個***監聽任務的建立事件。

下面的例子中,執行者會通過呼叫ldapservice這個spring bean的findmanagerofemployee方法獲得。

流程變數emp會作為引數傳遞給bean。

也可以用來設定候選人和候選組:

ps:注意方法返回型別只能為string或collection(對應候選人和候選組):

public class fakeldapservice

public listfindallsales()

**:

Activiti使用者任務分配

原始出處 作者資訊和本宣告。否則將追究法律責任。一 前言 上篇博文 activiti工作流引擎使用者管理 中已介紹了如何自定義自己的使用者管理模組。然而困惱大多數新手的另乙個問題 如何將任務分配給有層級關係的組織結構使用者呢?例如,我只想把任務分配給我上級部門的領導審批,而上級部門的任務又只分配給指...

如何跑起Activiti5

最近想自己搭個架子,需要用到工作流,想看看activiti。下面是跑例子的過程 2 將activiti 5.5.zip在本地解壓 5 在dos視窗 activiti5 setup下執行命令 ant demo.start 說明 3 apache tomcat 6.0.32.zip,activiti m...

Activiti5 常用方法

任務委託 簽收了的 taskservice.delegatetask taskid,userid 未簽收的 taskservice.addcandidateuser taskid,userid 有乙個節點的id怎麼得到這個節點的activity processdefinitionentity.fin...