项目实践工作流之Activiti学习(三十三)

2023-11-15 14:30:16 浏览数 (2)

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 变量

字段意义参考当前流程变量表。

0 人点赞