工作流框架--activiti(三)--流程变量

    流程变量其实是一个需要用户填写的变量。拿请假来说,请假原因,请假时间,请假人等信息都是用户自己写的,可是这个请假的流程实例是一个,它是不会变的。如果总经理没空办理这个请假审批,他还可以通过流程变量指定某一个人来处理这个审批,使activiti工作流更加的灵活。

也因此:

          流程变量会有作用范围:一个流程变量对一个一个流程实例。

          而且各个流程实例的流程变量是互相不影响的。

流程变量的作用:

        1、用来传递业务参数

        2、指定下一个连线对应的流程对象完成任务

        3、动态的指定任务的办理人

 

流程变量有3中设置方法:

  

         /**与流程实例,执行对象(正在执行)*/

RuntimeService runtimeService =processEngine.getRuntimeService();

/**与任务*/

TaskService taskService =processEngine.getTaskService();

 

//设置流程变量的方法(3种)

//1、设置流程变量

runtimeService.setVariable(executionId, variableName, value);//表示使用执行对象ID,和流程变量的名称,设置流程变量的值(一次一个)

runtimeService.setVariables(executionId, variables);//使用执行对象ID,和Map集合设置流程变量,map集合的key就是流程变量的名称,value就是流程变量的值(可设置多个)

 

//2、设置任务的流程变量

taskService.setVariable(executionId, variableName, value);//表示使用任务ID,和流程变量的名称,设置流程变量的值(一次一个)

taskService.setVariables(executionId, variables);//使用任务ID,和Map集合设置流程变量,map集合的key就是流程变量的名称,value就是流程变量的值(可设置多个)

 

//3、还可以任务完成时设置

runtimeService.startProcessInstanceByKey(processDefinitionKey, variables);//启动流程的同时设置流程变量,用Map集合

taskService.complete(taskId, variables);//完成任务的同时,设置流程变量,用Map集合

 

上面示例中的map中的value值,也可以是javabean:

示例如下:

/**设置流程变量*/

public void setVariables(){

TaskService taskService =processEngine.getTaskService();

//任务id

String taskId="1504";

//设置流程变量

//taskService.setVariableLocal(taskId, "请假天数", 3);//local表示与当前任务ID绑定

taskService.setVariable(taskId, "请假天数", 3);

taskService.setVariable(taskId, "请假日期", new Date());

taskService.setVariable(taskId, "请假原因", "回家看病");

 

//第二种使用javabean设置,Javabean需要实现Serializable接口

//使用javabean设置流程变量

Person p =new Person();

p.setId(10);

p.setName("婉儿");

taskService.setVariable(taskId, "人员信息", p);

 

}

 

获取流程变量的方法:

/*********获取流程变量*****/

runtimeService.getVariable(executionId, variableName);//使用执行对象id和变量名称,获取变量值

runtimeService.getVariables(executionId);//使用执行对象id,获取所有流程变量,放到map

runtimeService.getVariables(executionId, variableNames);//使用执行对象id,获取流程变量的值。但是可以通过设置流程变量的名称存放到集合中,获取指定流程变量名称的流程变量的值。

 

taskService.getVariable(executionId, variableName);//使用任务id和变量名称,获取变量值

taskService.getVariables(executionId);//使用任务id,获取所有流程变量,放到map

taskService.getVariables(executionId, variableNames);//使用任务id,获取流程变量的值。但是可以通过设置流程变量的名称存放到集合中,获取指定流程变量名称的流程变量的值。

示例如下:

/**获取流程变量*/

public void getVariables(){

TaskService taskService =processEngine.getTaskService();

//任务id

String taskId="1504";

//获取流程变量,使用基本数据类型

Integer days=(Integer)taskService.getVariable(taskId, "请假天数");

Date date=(Date)taskService.getVariable(taskId, "请假日期");

String reason=(String)taskService.getVariable(taskId, "请假原因");

//使用Javabean获取

Person p =(Person)taskService.getVariable(taskId, "人员信息");

 

}

 

流程变量的类型:

工作流框架--activiti(三)--流程变量_第1张图片



你可能感兴趣的:(Activiti工作流)