码迷,mamicode.com
首页 > 其他好文 > 详细

activiti之流程变量值Business_key

时间:2017-10-17 20:07:20      阅读:758      评论:0      收藏:0      [点我收藏+]

标签:activiti

以请假为例,我们在做工作流的时候一定是需要将我们的业务和工作流来关联起来的,而Activiti给我们提供了一个便利就是Business_key,而这个字段就是专门用来存储我们的业务关键字。

       例如我们有一个请假的业务,而我的请假信息都已经编写到数据库的表(tb_leaveBill)中了,但是我怎么样把我的请假信息关联到activiti的数据库表中,对了,就是用给定的Activiti的Business_key,而这里有一个小技巧,例如我的javaBean叫做LeaveBill,而我的请假信息的ID为1,那么我就可以让他写成leaveBill.1,技巧就是业务Bean.业务ID,这样我们就能Business_key的设置了

        启动流程实例(Business_key)

[java] view plain copy

  1. public void saveStartProcess(WorkflowBean workflowBean) {  

  2.     //获取请假单ID,使用请假单ID,的对象的LeaveBill  

  3.     Long id = workflowBean.getId();  

  4.     LeaveBill leaveBill = leaveBillDao.findLeaveBillById(id);  

  5.     //更新请假单的状态  

  6.     leaveBill.setState(1);  

  7.     String key = leaveBill.getClass().getSimpleName();  

  8.     //从session中获取流程变量  

  9.     Map<String,Object> variables = new HashMap<String,Object>();  

  10.     variables.put("inputUser", SessionContext.get().getName());  //表设计唯一  

  11.     //使用流程变量关联工作流和业务  

  12.     String objId = key + "." + id;  //格式LeaveBill.id  

  13.     //启动流程实例,同时设置流程变量,//使用正在执行的对象表中的一个字段(Businesskey),让启动实例关联业务  

  14.     runtimeService.startProcessInstanceByKey(key,objId,variables);  

  15.       

  16. }  

        效果图如下:

  技术分享

       查询(Business_key)

      查询的时候,我们需要根据任务ID,查询task对象,然后根据task对象,获取实例ID,之后使用流程实例查询Business_key来获取对应的业务的主键,这样就能查询到

[java] view plain copy

  1. //使用任务ID,查询请假单信息  

  2.     @Override  

  3.     public LeaveBill findLeaveByTaskId(String taskId) {  

  4.         //1,使用任务ID,查询对象task  

  5.         Task task = taskService.createTaskQuery().taskId(taskId).singleResult();  

  6.         //2.使用任务ID,获取实例ID  

  7.         String processInstanceId = task.getProcessInstanceId();  

  8.         //3.使用流程实例,查询  

  9.         ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();  

  10.         //4.使用流程实例对象获取BusinessKey  

  11.         String business_key = pi.getBusinessKey();  

  12.         //5.获取Business_key对应的主键ID  

  13.         String id = "";  

  14.         if(StringUtils.isNotBlank(business_key)){  

  15.             //截取字符串  

  16.             id = business_key.split("\\.")[1].toString();  

  17.               

  18.         }  

  19.         LeaveBill leaveBill = leaveBillDao.findLeaveBillById(Long.parseLong(id));  

  20.         return leaveBill;  

  21.     } 


activiti之流程变量值Business_key

标签:activiti

原文地址:http://15201565095.blog.51cto.com/12905158/1973217

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!