Activiti任務參數和流程參數的對比

前言

Activiti的參數有兩種類型,一類是流程參數,一類是任務參數;流程參數是通過RuntimeService服務組件設置,在設置的過程中需要傳入執行流ID;任務參數是通過TaskService服務組件設置,在設置的過程中需要傳入任務ID;所以我們可以形象的認爲流程參數是和執行流綁定到了一起,任務參數是和任務綁定到了一起。流程參數可以查看這篇文章《Activiti流程參數的設置方式和作用域》,任務參數可以查看這篇文章《Activiti任務參數的設置方式和作用域》

一:參數的設置方式對比

1:任務參數的設置方式

流程啓動之後,當走到某個任務節點時,用taskService.setVariable(任務Id,參數名,參數值)或者taskService.setVariableLocal(任務Id,參數名,參數值)的方式設置任務參數;

2:流程參數的設置方式

在流程啓動之後,用runtimeService.setVariable(執行流Id,參數名,參數值)或者runtimeService.setVariableLocal(執行流Id,參數名,參數值)的方式設置參數;設置流程參數依靠執行流,可以是主執行流,也可以是子執行流。

二:參數作用域的對比

1:任務參數的作用域

(1)、通過taskService.setVariable(任務Id,參數名,參數值)方式設置的參數,被放到了公共作用域中,整個流程結束之前,在整個流程的任何地方、通過任何方式都能獲取到,即可以通過taskService.getVariable(任務Id,參數名,參數值)獲取到,也可以通過runtimeService.getVariable(主/子執行流Id,參數名,參數值)或runtimeService.getVariableLocal(主執行流Id,參數名,參數值)獲取到。

(2)、通過taskService.setVariableLocal(任務Id,參數名,參數值)方式設置的參數,被放到了當前任務的私有作用域中,只能在當前任務中通過taskService.getVariableLocal(任務Id,參數名,參數值)或taskService.getVariable(任務Id,參數名,參數值)方式獲取到;當前任務執行結束,或者被刪除後,參數就會失效。

2:流程參數的作用域

(1)、通過runtimeService.setVariable(主/子執行流Id,參數名,參數值)方式設置的參數,被放到了公共作用域中,在整個流程結束之前,在整個流程的任何地方、通過任何方式都能獲取到,即可以通過taskService.getVariable(任務Id,參數名,參數值)獲取到,也可以通過runtimeService.getVariable(主/子執行流Id,參數名,參數值)或者runtimeService.getVariableLocal(主執行流Id,參數名,參數值)獲取到。

(2)、通過runtimeService.setVariableLocal(主執行流Id,參數名,參數值)方式設置的參數,被放到了公共作用域中,在整個流程結束之前,在整個流程的任何地方、通過任何方式都能獲取到,即可以通過taskService.getVariable(任務Id,參數名,參數值)獲取到,也可以通過runtimeService.getVariable(主/子執行流Id,參數名,參數值)或者runtimeService.getVariableLocal(主執行流Id,參數名,參數值)獲取到。

(3)、通過runtimeService.setVariableLocal(子執行流Id,參數名,參數值)方式設置的參數,被放到了當前執行流的私有作用域中,只能在當前執行流中通過runtimeService.getVariableLocal(子執行流Id,參數名,參數值)或者runtimeService.getVariable(子執行流Id,參數名,參數值)獲取到;當前子執行流執行結束,參數就會失效。

三:公共作用域,私有作用域

1:任務參數可以被放到一個公共作用域中,也可以被放到當前任務的私有作用域中;

2:流程參數可以被放到一個公共作用域中,也可以被放到當前執行流的私有作用域中;

3:總結髮現無論是 任務參數的公共作用域,還是流程參數的公共作用域,是同一個作用域,所以只要是放到公共作用域的任何參數,通過任何方式都可以獲取到;

4:任務參數的私有作用域只在當前任務下,只能通過當前任務獲取;

5:流程參數的私有作用域只在當前執行流下,只能通過當前執行流獲取;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章