3.5.3.4 通过当前任务设置
代码语言:javascript复制@Test
public void setGlobalVariableByTaskId(){
//当前待办任务id
String taskId="1404";
TaskService taskService = processEngine.getTaskService();
Holiday holiday = new Holiday();
holiday.setNum(3);
//通过任务设置流程变量
taskService.setVariable(taskId, "holiday", holiday);
//一次设置多个值
//taskService.setVariables(taskId, variables)
}
注意:
任务id必须是当前待办任务id,act_ru_task中存在。如果该任务已结束,报错:
也可以通过 taskService.getVariable()获取流程变量。
3.5.4测试
正常测试:
设置流程变量的值大于等于 3 天
设计流程变量的值小于 3 天
异常测试:
流程变量不存在
流程变量的值为空 NULL,price 属性为空
UEL 表达式都不符合条件
不设置连线的条件
3.5.5注意事项
1、 如果 UEL表达式中流程变量名不存在则报错。
2、 如果 UEL表达式中流程变量值为空 NULL,流程不按 UEL 表达式去执行,而流程结束 。
3、 如果 UEL表达式都不符合条件,流程结束
4、 如果连线不设置条件,会走 flow 序号小的那条线
操作数据库表
设置流程变量会在当前执行流程变量表插入记录,同时也会在历史流程变量表也插入记录。
SELECT * FROM act_ru_variable #当前流程变量表
记录当前运行流程实例可使用的流程变量,包括 global 和 local 变量
Id_:主键
Type_:变量类型
Name_:变量名称
Execution_id_:所属流程实例执行 id,global 和 local 变量都存储
Proc_inst_id_:所属流程实例 id,global 和 local 变量都存储
Task_id_:所属任务 id,local 变量存储
Bytearray_:serializable 类型变量存储对应 act_ge_bytearray 表的 id
Double_:double 类型变量值
Long_:long 类型变量值
Text_:text 类型变量值
SELECT * FROM act_hi_varinst #历史流程变量表
记录所有已创建的流程变量,包括 global 和 local 变量
字段意义参考当前流程变量表。