设置流程变量

localVariable 与 Variable 区别:

Variable:

                   1、普通变量(或叫global变量),关联流程实例,流程未完结前都可查询得到

                   2、从数据库看,表act_ru_variable或表act_hi_varinst中的TASK_ID_为空

                   3、同一流程实例,同名Variable只存在一个,再次赋值时覆盖前一个值,版本号加一

localVariable:1、任务变量,关联流程任务,任务完成前可查看,任务完结后即使流程未完结也无法查到

                            2、从数据库看,表act_ru_variable或表act_hi_varinst中的TASK_ID_关联任务ID

                            3、localVariable在同一流程实例内可重名,但需关联不同task,否则类似再次赋值。

                            2、绑定了变量的任务结束后,要再次访问localVariable需要查询历史变量记录。

相同点:任何时候都可在act_hi_varinst表中查看


 实现Serializable接口的类可作为变量值存储,因为实现序列化,所以需要填写序列化版本号保证存储前后类定义不变。
     public class Loan implements Serializable {

	private static final long serialVersionUID = -8809463095791864892L;

	private int id;
	private double money;
	private Date time;
	private String reason;

	public Loan() {
		super();
	}

	public Loan(int id, double money, Date time, String reason) {
		super();
		this.id = id;
		this.money = money;
		this.time = time;
		this.reason = reason;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public double getMoney() {
		return money;
	}

	public void setMoney(double money) {
		this.money = money;
	}

	public Date getTime() {
		return time;
	}

	public void setTime(Date time) {
		this.time = time;
	}

	public String getReason() {
		return reason;
	}

	public void setReason(String reason) {
		this.reason = reason;
	}

}

一、启动流程时设置变量

           Map<String,Object> map = new LinkedHashMap<String,Object>();
           map.put("变量名", "变量值");
	   ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(ProcessKey,map);

二、完成任务时设置变量

                    

           Map<String,Object> map = new LinkedHashMap<String,Object>();
	   map.put("变量名", "变量值");
	   taskService.complete(taskId, map);

三、设置任务变量

         PS、也可调用taskService.setVariablesLocal(taskId,map);将变量与任务绑定,         

      @Test
      public void setTaskVarible(){
        TaskService taskService = processEngine.getTaskService();
        String taskId = "2504";//任务ID
        taskService.setVariable(taskId, "债权人", "A");//1、通过任务ID,指定添加变量名,变量值
 
        Map<String,Object> map = new LinkedHashMap<String,Object>();
        map.put("债务人", "B");//集合中key为变量名,value为变量值
        taskService.setVariables(taskId, map);//2、通过任务ID,通过map集合添加
 
        Loan loan = new Loan(1,1000,new Date(),"流动资金不足");//添加实现Serializable接口的对象作为变量值
        taskService.setVariable(taskId, "借款详细", loan);//3、添加对象
   }

四、设置流程变量

             PS、也可调用runtimeService.setVariableLocal();,默认关联流程当前任务

@Test
     public void setInstanceVarible(){
           String executionId = "2501";
           RuntimeService runtimeService = processEngine.getRuntimeService();
           runtimeService.setVariable(executionId, "债权人", "A");//1、通过流程ID,指定添加变量名,变量值
           Map<String,Object> map = new LinkedHashMap<String,Object>();
           map.put("债务人", "B");//集合中key为变量名,value为变量值
           runtimeService.setVariables(executionId, map);//2、通过流程ID,通过map集合添加
 
           Loan loan = new Loan(1,1000,new Date(),"流动资金不足");//添加实现Serializable接口的对象作为变量值
           runtimeService.setVariable(executionId, "借款详细", loan);//3、添加对象
}

五、获取流程变量

      

@Test
	public void getRuntimeVarible(){
		RuntimeService runtimeService = processEngine.getRuntimeService();
		String executionId = "2501";
		
		String varValue = (String)runtimeService.getVariable(executionId, "债权人");//1、通过变量名取值
		
		Map<String,Object> map = runtimeService.getVariables(executionId);//2、通过执行对象ID获取所有 变量值
		
		List<String> list = new ArrayList<String>();
		list.add("债务人");//集合保存变量名
		runtimeService.getVariables(executionId, list);//3、通过执行对象ID获取特定名字的变量值			
	}


六、查询历史变量

     

@Test
	public void getHistoryProcessVariable(){
		HistoryService historyService = processEngine.getHistoryService();
		List<HistoricVariableInstance> list = historyService.createHistoricVariableInstanceQuery().variableName("债权人").list();
		
	}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值