变量的赋值有以下几种
-
runtimeService.setVariable(executionId,varName,val)
act_ru_variable表会多一条基于executionId的变量记录:
如果后面有task要处理,task里面均能访问这个实例的变量值
如果这不是首个任务,则不能用它进行变量值的变更,因为任务完成时会被当时的任务变量再次覆盖(相当于赋值无效了),所以若要在各任务中更改全局变量的值,一定要用下面说的两种方法 -
taskService.setVariable(task.getId(),varName,val)
通过任务服务设置的任务变量,在任务complete时会同步到流程实例中去,也就是说亦会生成一条task_id_为空的变量名和变量值相同的记录 ,而且当存在同名的流程变量,这个操作亦会将其覆盖。
还有一个setVariableLocal的,目前没发现与setVariable有什么区别 -
taskService.complete(String taskId, Map<String, Object> variables)
任务完成时附带变量列表,这个亦会更新流程变量,作用跟taskService.setVariable相同,只是它同时做两件事,变量赋值和完成操作。