activiti如何让业务对象和对应的流程关联
public void startProcess(Long id) {
//1. 获取业务对象
LeaveBill bill = this.get(id);
if(bill!=null){
// 修改业务对象状态
bill.setState(1);
// 请假单状态 0初始录入,1.开始审批,2为审批通过
this.update(bill);
//2. 添加流程变量(Map)
Map<String,Object> vars = new HashMap<>();
vars.put("inputUser", bill.getUser().getName());
// 添加变量来描述业务对象的信息
String classType =bill.getClass().getSimpleName();
vars.put("classType", classType);
vars.put("objId", bill.getId());
//3. 启动流程
// 获取流程定义key
String key = classType;
// 获取业务键 产生规则: className+“.”+objId
String businessKey = classType +"." + bill.getId();
this.workflowService.startProcess(key,businessKey,vars);
}
}
public String getBusinessObjId(String taskId) {
//1 获取任务对象
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
//2 通过任务对象获取流程实例
ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
//3 通过流程实例获取“业务键”
String businessKey = pi.getBusinessKey();
//4 拆分业务键,拆分成“业务对象名称”和“业务对象ID”的数组
// a=b LeaveBill.1
String objId = null;
if(StringUtils.isNotBlank(businessKey)){
objId = businessKey.split("//.")[1];
}
return objId;
}
ProcessInstance processInstance =runtimeService.createProcessInstanceQuery().processInstanceBusinessKey("LeaveBill.1").singleResult();
Task task =taskService.createTaskQuery().processInstanceBusinessKey("LeaveBill.1").singleResult();
activiti如何让业务对象和对应的流程关联的更多相关文章
- Liferay7 BPM门户开发之47: 集成Activiti待办已办任务清单和流程启动
首先增加两个Portlet,分别用于待办处理.流程启动.待办是别人发起的流程,流到自己这里的流程:流程启动用于发起新的流程. 程序文件放置于 在ACtivit中待办概念分两种,1是指派给你的,专门的指 ...
- Activiti系列:是否可以让某些流程的信息写到历史表,而另外一些不写?
一.起因 打算使用activiti的定时启动事件来定时启动流程,然后再在该流程中针对每个用户启动另外一个流程实例来计算每个用户的实时账单,系统的用户数一般是1000~2000(此处假设是200 ...
- 基于Activiti工作流引擎实现的请假审核流程
概要 本文档介绍的是某商用中集成的Activiti工作流的部署及使用,该框架用的Activiti版本为5.19.0.本文档中主要以一个请假流程为例子进行说明,该例子的流程图如下: 这是一个可以正常运作 ...
- Java工作流引擎 Activiti springmvc 后台框架源码 SSM 流程审批
工作流模块----------------------------------------------------------------------------------------------- ...
- Activiti业务键(businessKey)
问题:如何让业务对象和对应的流程 关联? 发现ProcessInstance 有个方法getBusinessKey()可以得到一个businessKey. ProcessInstance 对应数据库中 ...
- 【Activiti】为每一个流程绑定相应的业务对象的2种方法
方式1: 在保存每一个流程实例时,设置多个流程变量,通过多个流程变量的组合来过滤筛选符合该组合条件的流程实例,以后在需要查询对应业务对象所对应的流程实例时,只需查询包含该流程变量的值的流程实例即可. ...
- Activiti工作流学习(一)部署对象和流程定义
一.前言 前一段时间在工作中,使用了流程审批,对api的调用非常不熟悉,都是调用别人写好的接口在界面上进行显示,基本了解了流程审批的主要步骤,现对流程审批进行学习,主要是调用api进行CRUD操作,感 ...
- 多数据库下activiti的流程定义缓存问题
我们使用activiti(5.14版本号)作为流程引擎,今天在产品中发现一个问题,某流程的审批记录中, 活动实例表中记录的活动名称(ACT_HI_ACTINST表的ACT_NAME)居然是该流程中不存 ...
- activiti 一个流程的运转步骤 以请假流程为例
---为了加深对activiti的理解记忆,对自己做的一个流程进行自述.加强记忆 请假实例 一.设计请假的流程图以及流程文件,完善对应数据项,比如用户信息,请假单信息 --请假单 --流程图 --流程 ...
随机推荐
- 执行Java脚本firefox启动成功,不运行test方法,且提示NullPointerException
在ideal中新建maven项目,将录制好的Java脚本文件,直接复制到项目中,添加相关的依赖脚本. 代码不报错之后,运行录制好的Java脚本,启动了firefox之后,不执行test方法,报错Nul ...
- oracle dataguard参数
在整个dg配置中,最复杂的也许就是参数的配置了,并且有许多参数都可以延伸出去讲很多,所以今天我们来看看dg的参数配置,顺便加上一点dataguard进程相关的信息,帮助理解. 在配置dg的过程中,我们 ...
- Does Daemon Thread Exit with Main Thread?
主线程(进程)退出后,主线程创建的守护线程也会退出吗? 通过下面的代码测试: Demo1: 进程创建普通线程 #!/usr/bin/python3 # FileName: daemonThread.p ...
- thunk函数
1.函数参数求值的策略 a.传值策略(c语言) 传值策略就是在进入函数体之前将 参数计算之后 将参数的值传入到函数体之中. let x = 8 f(x + 1)//参数为 f(9)//传进去的值实际上 ...
- linxu系统压缩解压命令
使用cat命令进行文件的纵向合并 两种文件的纵向合并方法 归档文件和归档技术 归档的目的 什么是归档 tar命令的功能 tar命令的常用选项 使用tar命令创建.查看及抽取归档文件 使用tar命令创建 ...
- [转]Unix/Linux开源世界资源链接汇总
转自:http://blog.csdn.net/21aspnet/article/details/6754126 最后更新:2012.12.04 说明:好东西在后面,Linux镜像基本涵盖全球主要下载 ...
- [Python]返回函数,装饰器拾遗
def lazy_print(*args): def pr(): print(args) return pr 当我们调用lazy_print()时,返回的并不是求和结果,而是求和函数: >> ...
- Hbase1.0伪分布式集群启动失败问题
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/7340681.html 转载请注明出处 最近抽空折腾自己的虚拟机环境时启动伪分布式Hbase集群一直失败, ...
- iOS开发之plist文件操作
之前在想用代码去实现很多界面上能用interface builder可以拖进去的功能,现在想想真是够无知的啊.不仅效率低下,而且对于代码的维护带来不少麻烦,这段时间一直在反思看了design+code ...
- 访问ashx一般应用程序
浏览器中的地址栏键入要访问页面的地址:回车(是和服务器软件打交道)----向服务器发送请求(以http协议为基础,服务器按照此协议解释理解接收到的数据),服务器接收到发送的请求,根据请求信息知道当前所 ...