流程变量持久化在variable表中
1:通过ExecutionService设置变量
save:
String name = "price";
Double price = 100d;
String executionId = "financeApprove.150001"; //每个task对应一个;每次流程启动时的执行id,存放于execution表中的id字段
pe.getExecutionService().setVariable(executionId, name, price);
Map<String, String> map = new HashMap<String, String>();
map.put("name", "lily");
map.put("sex", "male");
pe.getExecutionService().setVariables(executionId, map);
read:
String name = "price";
Set<String> names = pe.getExecutionService().getVariableNames("financeApprove.150001");
for (String item : names) {
//System.out.println(item);
Object obj = pe.getExecutionService().getVariable("financeApprove.150001", item);
System.out.println(obj);
}
//通过taskid获取//
String taskId="500003";
names =pe.getTaskService().getVariableNames(taskId)
Map<String, Object> map=pe.getTaskService().getVariable(taskId, names);
//遍历map
2:通过TaskService设置变量
save
//使用TaskService设置主要是针对某一task进行设置,作用域和ExecutionService的作用域是一样的,可以相同的方式获取数据
String taskId="";
Map<String, String> map = new HashMap<String, String>();
map.put("taskname", "taskTOM");
map.put("taskdes", "taskFAT");
pe.getTaskService().setVariables("150002", map);
read和ExecutionService读取方式一样
3:启动流程实例时设置变量(因为是启动时设置所以会生成一个新的executionid)
save
String executionId = "financeApprove-1";
Map<String, String> map = new HashMap<String, String>();
map.put("startname", "startTOM");
map.put("startdes", "startFAT");
ProcessInstance processInstance = pe.getExecutionService().startProcessInstanceById(executionId, map);
4:执行task时设置变量
Map<String, String> map = new HashMap<String, String>();
map.put("dotaskname", "dotaskTOM");
map.put("dotaskdes", "dotaskFAT");
String taskId = "200004";
pe.getTaskService().completeTask(taskId, "to manager", map); //需要指定路线