JBPM中的起始任務

2021-04-09 02:29:56 字數 1347 閱讀 7183

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 有時我們需要在乙個列表中顯示該使用者的所有任務,...