扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
以请假为例,我们在做工作流的时候一定是需要将我们的业务和工作流来关联起来的,而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
public void saveStartProcess(WorkflowBean workflowBean) {
//获取请假单ID,使用请假单ID,的对象的LeaveBill
Long id = workflowBean.getId();
LeaveBill leaveBill = leaveBillDao.findLeaveBillById(id);
//更新请假单的状态
leaveBill.setState(1);
String key = leaveBill.getClass().getSimpleName();
//从session中获取流程变量
Map
variables.put("inputUser", SessionContext.get().getName()); //表设计唯一
//使用流程变量关联工作流和业务
String objId = key + "." + id; //格式LeaveBill.id
//启动流程实例,同时设置流程变量,//使用正在执行的对象表中的一个字段(Businesskey),让启动实例关联业务
runtimeService.startProcessInstanceByKey(key,objId,variables);
}
效果图如下:
查询(Business_key)
查询的时候,我们需要根据任务ID,查询task对象,然后根据task对象,获取实例ID,之后使用流程实例查询Business_key来获取对应的业务的主键,这样就能查询到
[java]view plain copy
//使用任务ID,查询请假单信息
@Override
public LeaveBill findLeaveByTaskId(String taskId) {
//1,使用任务ID,查询对象task
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
//2.使用任务ID,获取实例ID
String processInstanceId = task.getProcessInstanceId();
//3.使用流程实例,查询
ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
//4.使用流程实例对象获取BusinessKey
String business_key = pi.getBusinessKey();
//5.获取Business_key对应的主键ID
String id = "";
if(StringUtils.isNotBlank(business_key)){
//截取字符串
id = business_key.split("\\.")[1].toString();
}
LeaveBill leaveBill = leaveBillDao.findLeaveBillById(Long.parseLong(id));
return leaveBill;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流