Activiti流程变量
设置流程变量
1.基本类型
public void setProcessVariables(){
/*正在执行的流程或者任务*/
RuntimeService runtimeService = processEngine.getRuntimeService();
TaskService taskService = processEngine.getTaskService();
/*设置流程变量*/
taskService.setVariable("任务ID","变量的名称","变量名");//一次只能设置一个变量
runtimeService.setVariable("执行对象ID","变量的名称","变量名");//一次只能设置一个变量
Map map=new HashMap<String, Object>();
map.put("请假天数:",3);
// map.put("变量的名称","变量名");
taskService.setVariables("任务ID",map);//一次可以设置多个变量
runtimeService.setVariables("执行对象ID",map);//一次可以设置多个变量
runtimeService.startProcessInstanceById("流程的key",map);//启动流程实例的同时设置变量
taskService.complete("任务ID",map);//完成任务的同时设置变量
}
2.JavaBean类型
JavaBean必须实现序列化Serializable 接口
public class Person implements java.io.Serializable {
private static final long serialVersionUID = 8379071759772449529L;
private Integer id;
private String name;
private String education;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEducation() {
return education;
}
public void setEducation(String education) {
this.education = education;
}
}
@Test
public void setProcessVariabless() {
String processInstanceId = "1301";//流程实例ID
String assignee = "小白";//任务办理人
TaskService taskService = processEngine.getTaskService();//获取任务的Service,设置和获取流程变量
// 查询当前办理人的任务ID
Task task = taskService.createTaskQuery()
.processInstanceId(processInstanceId)//使用流程实例ID
.taskAssignee(assignee)//任务办理人
.singleResult();
// 设置流程变量【javabean类型】
Person p = new Person();
p.setId(1);
p.setName("哈哈");
taskService.setVariable(task.getId(), "人员信息", p);
System.out.println("流程变量设置成功~~");
}
获取流程变量
1.基本类型
public void getProcessVariables(){
/*正在执行的流程或者任务*/
RuntimeService runtimeService = processEngine.getRuntimeService();
TaskService taskService = processEngine.getTaskService();
/*获取流程变量*/
runtimeService.getVariable("执行对象ID","变量的名称");//获取变量的值
taskService.getVariable("任务ID","变量的名称");//获取变量的值
runtimeService.getVariables("执行对象ID");//获取变量的map(变量的名称,获取变量的值)
taskService.getVariables("任务ID");//获取变量的map(变量的名称,获取变量的值)
List list=new ArrayList<>();
list.add("请假天数");
list.add("请假原因");
//list.add("变量名");
runtimeService.getVariables("执行对象ID",list);//获取变量的map(变量的名称,获取变量的值),list是需要获取变量的名称
taskService.getVariables("任务ID",list);//获取变量的map(变量的名称,获取变量的值),list是需要获取变量的名称
}
2.JavaBean类型
@Test
public void getProcessVariabless() {
String processInstanceId = "1301";//流程实例ID
String assignee = "小白";//任务办理人
TaskService taskService = processEngine.getTaskService(); //获取当前办理人的任务ID
Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).taskAssignee(assignee).singleResult(); //获取流程变量【javaBean类型】
Person p = (Person) taskService.getVariable(task.getId(), "人员信息");
System.out.println(p.getId()+" "+p.getName());
System.out.println("获取成功~~");
}
查询历史的流程变量
@Test
public void getHistoryProcessVariables() {
List<HistoricVariableInstance> list = processEngine.getHistoryService().createHistoricVariableInstanceQuery()//创建一个历史的流程变量查询
.variableName("请假天数").list();
if (list != null && list.size() > 0) {
for (HistoricVariableInstance hiv : list) {
System.out.println(hiv.getTaskId() + " " + hiv.getVariableName() + " " + hiv.getValue() + " " + hiv.getVariableTypeName());
}
}
}