免费的平面设计网站,喀什市建设局网站查证件,物业公司简介模板,网站建设广告素材流程变量在整个工作流中扮演很重要的作用。例如#xff1a;请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。流程变量的作用域范围是只对应一个流程实例。也就是说各个流程实例的流程变量是不相互影响的。这篇博文就简单的为大家介绍下流程变量的设置和获取。
…流程变量在整个工作流中扮演很重要的作用。例如请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。流程变量的作用域范围是只对应一个流程实例。也就是说各个流程实例的流程变量是不相互影响的。这篇博文就简单的为大家介绍下流程变量的设置和获取。
一、设置流程变量 流程变量的设置方式有两种一是通过基本类型设置第二种是通过JavaBean类型设置。
1.基本类型 /**设置流程变量*/Testpublic void setProcessVariables(){String processInstanceId 1301;//流程实例IDString assignee 张三;//任务办理人TaskService taskService processEngine.getTaskService();//获取任务的Service设置和获取流程变量//查询当前办理人的任务IDTask task taskService.createTaskQuery().processInstanceId(processInstanceId)//使用流程实例ID.taskAssignee(assignee)//任务办理人.singleResult();//设置流程变量【基本类型】taskService.setVariable(task.getId(), 请假人, assignee);taskService.setVariableLocal(task.getId(), 请假天数,3);taskService.setVariable(task.getId(), 请假日期, new Date());}2.JavaBean类型
首先定义JavaBean类。
package cn.gome.d_processVariables;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;}}然后通过JavaBean设置流程变量。这里要注意的是Javabean类型设置获取流程变量除了需要这个javabean实现了Serializable接口外还要求流程变量对象的属性不能发生编号否则抛出异常。 /**设置流程变量去哪个表里查*/Testpublic void setProcessVariables(){String processInstanceId 1301;//流程实例IDString assignee 张三;//任务办理人TaskService taskService processEngine.getTaskService();//获取任务的Service设置和获取流程变量//查询当前办理人的任务IDTask 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(流程变量设置成功~~);} 数据库对应表act_ru_variable细心的你可以看到通过JavaBean设置的流程变量在act_ru_variable中存储的类型为serializable变量真正存储的地方在act_ge_bytearray中。二、获取流程变量 1.基本类型
/**获取流程变量*/
Test
public void getProcessVariables(){String processInstanceId 1301;//流程实例IDString assignee 张三;//任务办理人TaskService taskService processEngine.getTaskService();//获取当前办理人的任务IDTask task taskService.createTaskQuery().processInstanceId(processInstanceId).taskAssignee(assignee).singleResult();//获取流程变量【基本类型】String person (String) taskService.getVariable(task.getId(), 请假人);Integer day (Integer) taskService.getVariableLocal(task.getId(), 请假天数);Date date (Date) taskService.getVariable(task.getId(), 请假日期);System.out.println(person day date);}2.JavaBean类型 /**获取流程变量*/
Test
public void getProcessVariables(){String processInstanceId 1301;//流程实例IDString assignee 张三;//任务办理人TaskService taskService processEngine.getTaskService();//获取当前办理人的任务IDTask 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(){ListHistoricVariableInstance 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());}}
}