文章目錄
- 1.流程變量概念
- 2.設定流程變量
- 2.1.在啟動流程執行個體時設定
- 2.2.在辦理任務時設定
- 3.流程變量支援的類型
- 4.擷取流程變量
1.流程變量概念
使用流程變量進行業務資料的傳遞,例如請假原因、天數等資訊。
2.設定流程變量
2.1.在啟動流程執行個體時設定
在啟動流程執行個體時,可以添加流程變量。這是添加流程變量的一種時機。
/**
* 設定流程變量方式一:在啟動流程執行個體時設定
*/
@Test
public void test1() {
String processDefinitionKey = "HelloWorldKsy";
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("key1", "value1");
variables.put("key2", 200);
ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey(processDefinitionKey, variables);
System.out.println(pi.getId());
}
說明:
1) 在啟動流程執行個體時,通過重載startProcessInstanceByKey的方法可以加載流程變量。
2) 第二個參數要求是Map<String ,Object>類型,意味着可以添加多個流程變量。
3) 當這段代碼執行完以後,會在資料庫表act_ru_variable中添加兩行記錄。
2.2.在辦理任務時設定
在辦理任務時,有時候任務辦理完成以後,要傳遞一些資訊到系統中。這個時候可以利用TaskService這個類來添加流程執行個體。
/**
* 設定流程變量方式二:在辦理任務時設定
*/
@Test
public void test3() {
String taskId = "50006";
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("user", new User(1,"小王"));
pe.getTaskService().complete(taskId, variables);
}
3.流程變量支援的類型
Jdk中提供的資料類型(
String
、
Integer
、
List
、
Map
…)
自定義的實體類(要求實作序列化接口
Serializable
)
如圖是從官網列出來的流程變量的類型:
從圖中可以看出包括了大部分封裝類型和Date、String和實作了Serializable接口的類的類型。
4.擷取流程變量
/**
* 擷取流程變量方式一:使用RuntimeService的方法擷取
*/
@Test
public void test6() {
String executionId = "2501";
Map<String, Object> variables = pe.getRuntimeService().getVariables(executionId);
// System.out.println(variables);
Set<String> set = variables.keySet();// key2 key1 user
for (String key : set) {
Object value = variables.get(key);
System.out.println(key + " = " + value);
}
Object value = pe.getRuntimeService().getVariable(executionId, "user");
System.out.println(value);
}