使用者任務分配辦理人:
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...