Activiti 基本操做之「受理人變量」

Markdown

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

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

不提倡的 setAssignee 的方式

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

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

提倡 activiti:assignee 動態設置

1.在流程設計中爲 Assignee 指定變量「${assigneeUserId}」

Markdown

其對應的 XML 配置爲:code

<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_ 字段的值。xml

3. 驗證

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

Markdown

相關文章
相關標籤/搜索