Activiti 基本操作之“受理人變量”


Markdown

在 Activiti 流程引擎中,盡管通過 setAssignee(taskId, userId) 可以設置受理人,但這畢竟要先把下一步的任務查出來才能設置,比較繁瑣;借助 Activiti 的 activiti:assignee 屬性就可以自動化設置,即在當前任務完成之時就給下一個任務的受理人賦值。

這本質上是在設置一個局部變量,為流程的單個用戶任務服務。

不提倡的 setAssignee 的方式

taskService.complete(task.getId(), vars);
// 下一步的用戶任務
task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
taskService.setAssignee(task.getId(), addModel.getCurrentTracer().toString());

為了設置受理人,在已經完成任務后,還需要把下一步的任務再次查詢出來,比較繁瑣。

提倡 activiti:assignee 動態設置

1.在流程設計中為 Assignee 指定變量“${assigneeUserId}”

Markdown

其對應的 XML 配置為:

<userTask id="usertask2" name="報項審核(業務經理)" activiti:assignee="${assigneeUserId}"></userTask>

2. 針對變量賦值

vars = new HashMap<>();
 
// 完成任務
vars.put("assigneeUserId", addModel.getCurrentTracer().toString());
taskService.complete(task.getId(), vars);

只需關心完成當前任務即可,Activiti 會自動把參數 assigneeUserId 的值作為下一步用戶任務的 Assignee_ 字段的值。

3. 驗證

查詢運行時任務表 act_ru_task 的記錄,可見 Assignee_ 字段已經有了值。

Markdown


免責聲明!

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



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