流程發起人


設置認證用戶

identityService.setAuthenticatedUserId("用戶ID");
認證用戶的作用是設置流程發起人:

    在流程開始之前設置,會自動在表ACT_HI_PROCINST 中的START_USER_ID_中設置用戶ID:

  用來設置啟動流程的人員ID,引擎會自動把用戶ID保存到activiti:initiator中

1 //流程發起前設置發起人,記錄在流程歷史中
2 identityService.setAuthenticatedUserId("kitty");
3 //開始流程
4 runtimeService.startProcessInstanceByKey("XML中的ID");
5 //查詢流程發起人
6 logger.info(historyService.createHistoricProcessInstanceQuery()
7                 .startedBy("ketty").singleResult().getProcessDefinitionId());

 

// 根據用戶查詢用戶有權限開啟的流程定義

processDefinitionQuery.startableByUser("用戶ID");

動態指定任務辦理人

手動設置任務辦理人

 1 <usertask id="hrAudit" name="人事審批" activiti:assignee="${hrUserId}"></usertask> 

動態指定任務辦理人,只要在任務完成的時候傳遞activiti:assignee屬性中的變量即可

1 Map<String, Object> variables = new HashMap<String, Object>();
2 
3 variables.put("hrUserId", hrUserId);
4 
5 taskService.complete(taskId, variables);

自動設置任務辦理人

下面的代碼是利用initiator功能,設置一個名稱(不是變量而是變量名)到啟動事件上,並且在啟動流程時調用一些下面的方法:

 1  identityService.setAuthenticatedUserId(currentUserId); 

其中currentUserId表示當前用戶,也就是啟動流程的人,配置如下所示:

 

 1 <startevent id="startevent1" name="Start" activiti:initiator="applyUserId"></startevent>

2 <usertask id="reportBack" name="銷假" activiti:assignee="${applyUserId}"></usertask> 

這樣流程啟動之后如果任務流轉至"銷假"節點則會自動把任務分配給啟動流程的人。

獲取流程發起人

如果在啟動流程的時候調用了下面的代碼:

 1 identityService.setAuthenticatedUserId(currentUserId); 

引擎會記錄啟動人,即在ACT_HI_PROINST表的START_USER_ID字段,可以通過下面的代碼獲取。

 1 HistoricProcessInstance hi = historyService.createHistoricProcessInstanceQuery().singleResult();

2 hi.getStartUserId(); 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM