流程变量可以是流程中一系列参数,比如办理人(Assignee),消息(message)等。这些流程变量使得activiti能够应用于更为复杂的业务中,使得流程变得更加灵活可控。
场景(一)
图一:没有使用流程变量
图二:使用流程变量
上面两个流程定义只是是否应用流程变量的一个简单例子,但可以看出,应用流程变量可以使得流程图更符合我们的业务需要。
场景(二)
图一:
将Assignee办理人配死
如果需要改变办理人,怎么办?
图二:
代码中控制办理人
在启动流程时,给参数赋值。
//设置流程参数,办理人
Map<String,Object> map=new HashMap<String,Object>();
map.put("inputUser","小李");
场景(三)
在项目开发中,最常用的是与业务相结合的变量参数了。比如员工管理中的员工姓名、性别等信息,请假管理中的请假人员、请假时长、请假原因等。
需求:新员工报道流程,保存员工信息。
// 与任务相关的service
TaskService taskService = processEngine.getTaskService();
//假定一个任务id
String taskId = "1604";
// 方法一:设置流程变量,使用基本数据类型
/*taskService.setVariableLocal(taskId, "请假天数", 5); // local 与任务绑定
taskService.setVariable(taskId, "请假日起", new Date());
taskService.setVariable(taskId, "请假原因", "回家探亲。hi");*/
//方法二:使用javabean类型
Person person=new Person();
person.setId(122);
person.setName("ysx");
taskService.setVariable(taskId, "人员信息",person);
上篇博客我们介绍了与activiti自带的数据库,其中,act_hi_varinst,act_ru_variable都与流程变量的存储相关。员工信息保存到业务数据库后,流程变量信息会保存到流程库的这两张表中。