ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();
一、流程變量設置(自定義類型數據必須序列化,存儲在二進制表中blob字段)
①.啓動流程任務時設置流程變量
String processDefinitionKey = "variable";
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());
②.在辦理任務時設置
String taskId = "1206";
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("user", new User(1,"小王"));
pe.getTaskService().complete(taskId, variables);
③.使用RuntimeService的方法設置
String executionId = "601";//流程實例id
String variableName = "key3";
Object value = "value3";
pe.getRuntimeService().setVariable(executionId , variableName , value);
④.使用TaskService的方法設置
String taskId = "704";
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("key4", 400);
variables.put("k5", "v5");
pe.getTaskService().setVariables(taskId , variables);
二、流程變量獲取
①.使用RuntimeService的方法獲取
String executionId = "1201";
Map<String, Object> variables = pe.getRuntimeService().getVariables(executionId);
Set<String> set = variables.keySet();
for (String key : set) {
Object value = variables.get(key);
}
Object value = pe.getRuntimeService().getVariable(executionId, "user");
//System.out.println(value);
Collection<String> variableNames = new ArrayList<String>();
variableNames.add("key2");
variableNames.add("user");
Map<String, Object> map = pe.getRuntimeService().getVariables(executionId, variableNames);
System.out.println(map);
②.使用TaskService的方法獲取
String taskId = "1305";
Map<String, Object> variables = pe.getTaskService().getVariables(taskId );
System.out.println(variables);