工作流Activiti5流程變量 任務變量 setVariables 跟 setVariablesLocal區別


工作流Activiti5流程變量 任務變量 setVariables 和 setVariablesLocal區別 

因為網上的資料比較少。結合源碼把相關API寫下來。

設置流程級別變量:

runtimeService.startProcessInstanceById(
                    template.getTemplateId(), variables);

runtimeService.setVariables(executionId, variables);

 

taskService.complete(String.valueOf(taskId), variables); //流程變量  這個開始我以為是設置任務變量 看了一下源碼才發現是流程級別的

 

 

設置任務級別變量:

taskService.setVariable(String.valueOf(taskId), "va", "2"); //任務級別 變量

 

變量表:

select * from act_hi_varinst 

 

setVariables 和 setVariablesLocal區別?

 

可以簡單認為,variable都是針對processInstance的。

local可能是針對某個execution分支的,也可能針對task的。

這里就要談一下變量的作用域,變量肯定是依附於某個流程里的概念而存在的,所以才能在流程流轉過程中使用這些變量。

默認的變量都是流程實例級別的,也就是說,分支execution和task都可以讀取到對應processInstance里的變量。

與之相對的就是local變量,簡單來說就不是processInstance范圍的變量,如何區分global和local呢?差別就是local的作用范圍小,如果是分支execution的local變量,就只能在execution分支生存期使用。

比如並發分支結束了,變量也就沒了

比如task結束了,變量也就沒了。

local變量的好處是,可以在每個分支使用同名的變量,互相之間不受影響,會簽multi-instance就是通過local局部變量實現的。

 


免責聲明!

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



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