jbpm
中的起始任務
什麼是起始任務
所謂起始任務就是在開始狀態(start-state)中定義的任務(task)。如下定義(注意:開始狀態只能有乙個任務):
...
起始任務的建立執行
如果定義了起始任務,就可以通過建立起始任務來啟動流程的執行,而不是通過向根令牌發訊號的方式。如下**:
//建立起始任務
taskinstance taskinstance = processinstance.gettaskmgmtinstance.createstarttaskinstance();
.........
//完成起始任務,繼續流程執行
taskinstance.end();
起始任務的參與者
起始任務的任務例項在建立時,其參與者會自動從身份鑑定元件獲取,這從jbpm的原始碼中可以得知,如下**片斷:
public class tasgmgmtintance extends moduleinstance()……}
public abstract class securityhelp()}
身份鑑定元件是jbpm提供的安全機制中用來鑑定參與者身份的,這是乙個開放的介面,jbpm基於的前提是把身份鑑定交給使用者來完成。jbpm自己有乙個預設實現(在jbpm.cfg.xml中配置),針對於這個預設實現,可以使用jbpmcontext.setactorid(actorid)來設定已經過鑑定的參與者(可檢視jbpmcontext類相關原始碼),建立起始任務時自動取的參與者就是通過jbpmcontext.setactorid(actorid)所設定的(注意:具體所設定的參與者的鑑定過程需要使用者在事先已經完成;這個設定只存在於所建立的jbpmcontext生命週期內)。有關身份鑑定更多資訊請查閱相關資料。
當然我們也可以呼叫taskinstance.setactorid()自己設定起始任務的參與者。
起始任務的用途
l流程起始需要乙個過程
當流程的起始不單單只是乙個狀態,而需要乙個過程的時候,我們需要起始任務。例如:乙個請假審批流程,使用者填寫請假單進行儲存,而不是即刻進行流程流轉執行;而該使用者下次登入時應該可以看到自己未完成的請假單,並繼續流程執行(提交審批)。這時我們就可以在使用者首次填寫請假單進行儲存時,建立流程例項及起始任務,而當使用者再次登入就可以看到自己未完成的工作,選擇提交審批時完成任務,並繼續流程的流轉。
l捕獲流程的發起者
在起始任務中使用泳道,來捕獲流程的發起者。當起始任務的任務例項建立時,參與者會自動被儲存在起始任務的泳道中,在以後的**中可以通過processinstance.gettaskmgmtinstance().getswimlaneinstance(「swimlanename」).getactorid()獲取到發起者。
jbpm的任務管理實現
乙個流程定義有乙個taskmgmtdefinition 乙個taskmgmtdefinition對應多個actor,同時對應多個task 乙個actor有多個task,可以從taskmgmtdefinition中通過task的名稱直接獲取相應的task 乙個流程例項有乙個taskmgmtinstan...
jbpm的任務管理實現
乙個流程定義有乙個taskmgmtdefinition 乙個taskmgmtdefinition對應多個actor,同時對應多個task 乙個actor有多個task,可以從taskmgmtdefinition中通過task的名稱直接獲取相應的task 乙個流程例項有乙個taskmgmtinstan...
jbpm4 4中取的我的任務
jbpm4.4提供兩個介面可以獲取該使用者的待處理任務 乙個是個人的任務 taskservice.findpersonaltasks userid 另乙個是取得該使用者對應的候選任務 taskservice.findgrouptasks userid 有時我們需要在乙個列表中顯示該使用者的所有任務,...