Activiti流程 关于自定义sql查询
由于才接触Activiti不久,对于表结构也不熟悉,甚至可以说连那些表对应的实体类都搞不清楚,又不能通过Activiti自带的链式查询实现;在这种情况下跟不知道怎么通过sql去实现自己想要的查询。上网看了些别人关于Activiti的介绍也不是很多,有的时候在自己模棱两可情况下看了别人的资料更不知道该怎么做了。
例如:我现在需要做个流程的已办事项,结果activiti的人都知道,activiti会将我们正在执行的任务复制一份在历史表中,要是这个任务完成了的话,他就会将正在执行的任务表中的数据清除使历史任务表中的数据结束时间有值,但是如果正在执行的任务没有完成的话,我们历史表就会用一条数据,如果现在将这条数据展示给用户的话,用户的体验就会很不好。
通常我们会使用链式查询出历史表中的所有数据:
List<HistoricTaskInstance> tasks = historyService.createHistoricTaskInstanceQuery().taskAssignee(organid)
.orderByHistoricActivityInstanceStartTime().desc().listPage(pagin.getStartResult(), pagin.getPageSize());
这样查询出来的任务列表他包含了结束时间为空的数据,直接给用户展示的话,用户的体验就不好了。
如果我使用拼写sql的形式去查询“END_TIME_ is not null”就直接 简单的多。但是我们该怎么写这个sql呢?
List<HistoricTaskInstance> tasks = historyService.createNativeHistoricTaskInstanceQuery()
.sql("select * from " + managementService.getTableName(HistoricTaskInstance.class)+" H where H.END_TIME_ is not null and H.ASSIGNEE_ like #{organid} order by H.END_TIME_ desc")
.parameter("organid", "%"+organid+"%")
.listPage(pagin.getStartResult(), pagin.getPageSize());
代码中标红处:1、通过managementService接口找到我们需要使用的class类直接转换为对应的表,这样的话 我们不需要去知道这个实体所对应的表文件是“谁”了。
2、使用了模糊查询,看网上别人的帖子,最开始以为activiti的模糊查询跟其他的模糊查询是一样的,可是自己试了下后,总是表示拼写的sql从在错误。才发现“%”拼错地方了这个东西需要拼写到参数这边,而不是拼写到sql语句中。
问题:其实在做已办事项的时候 我遇到一个问题,虽然后面我通过歪点子解决了这个问题,但是心里其实还是很想知道 activiti大神 或者是activiti正常的思维是怎么解决类似的问题的。
由于我这儿的流程很多,在已办中用于区分开不同分类的流程,使其分发走不同的业务Action;必须需要一个属性来区分,故而将其流程的key定义为每个业务类的类名(类名不能重复);那么问题来了,如何在历史任务中获得ProcessDefinitionKey
问题描述:
如果是待办事项的话 我们可以很轻松的从ProcessInstance对象中拿到ProcessDefinitionKey(这个字段我是用的是对应流程业务类的类名),但是在已办事项中这个字段从HistoricProcessInstance这个对象中拿不到的。不知道给位使用过activiti的同仁们是怎么做到的。
解决方案:
我对于activiti的存放是这样的:我在启动流程的时候设置了流程BUSINESS_KEY(业务类的类名.业务的ID),由于我的流程的key对于的也是业务类的类名所以这儿就能偷到这个懒,当然有些人这个BUSINESS_KEY是直接存放的业务ID。
Activiti流程 关于自定义sql查询的更多相关文章
- CI中自定义SQL查询,LIKE模糊查询的处理
参考: /** * 据用户输入的关键字查询相册信息;照片墙搜索框功能 * @param $keyWord 关键字 * @param $pageNum 页码,第几页 * @param $pageSize ...
- activiti自定义流程之自定义表单(二):创建表单
注:环境配置:activiti自定义流程之自定义表单(一):环境配置 在上一节自定义表单环境搭建好以后,我就正式开始尝试自己创建表单,在后台的处理就比较常规,主要是针对ueditor插件的功能在前端进 ...
- phpcmsv9自定义sql语句查询模型实现
在phpcmsv9中,自定义sql语句查询可不太好实现,传入sql语句查询很容易被内部转入生成一系列莫名其妙的sql语句,比如最佳前缀等等,直接造成sql语句查询错误,在此也提供两种解决办法,1修改底 ...
- activiti自定义流程之自定义表单(三):表单列表及预览和删除
注:(1)环境配置:activiti自定义流程之自定义表单(一):环境配置 (2)创建表单:activiti自定义流程之自定义表单(二):创建表单 自定义表单创建成功,要拿到activiti中使用,自 ...
- vba 自定义菜单与vba通过sql查询
1.自定义菜单 首选需要开发“开发工具”菜单 文件--选项--自定义功能区--开发工具 勾选 .定义用户窗体或者宏 ) 定义用户窗体 Alt+F11进入Microsoft Visual Basic f ...
- spring boot 自定义sql分页查询
1.自定义sql查询分页 @Override public <T> Page<T> pageSQL(@Nonnull String sql, @Nonnull Pageable ...
- 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战 + 执行 Spark SQL 查询 + JDBC/ODBC 服务器
第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ...
- Thinkphp查询 1.查询方式 2.表达式查询 3.快捷查询 4.区间查询 5.组合查询 6.统计查询 7.动态查询 8.SQL 查询
1.使用字符串作为条件查询 $user = M('User'); var_dump($user->where('id=1 AND user="蜡笔小新"')->sele ...
- thinkjs中自定义sql语句
一直以为在使用thinkjs时,只能是它自带的sql语句查询,当遇到类似于这样的sql语句时,却不知道这该怎样来写程序,殊不知原来thinkjs可以执行自定义sql语句 SELECT * from a ...
随机推荐
- 了解RFC协议号
RFC是Request For Comment的缩写,意即“请求注解”,是由IETF管理,所有关于Internet的正式标准都以文档出版,但不是所有的RFC都是正式的标准,很多RFC的目的只是为了提供 ...
- WScript中调用js方法
http://zhidao.baidu.com/question/484374074.html ———————————————————————————————————————————————— Sub ...
- POJ 3259 Wormholes(最短路,判断有没有负环回路)
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 24249 Accepted: 8652 Descri ...
- 【C++专题】static_cast, dynamic_cast, const_cast探讨
首先回顾一下C++类型转换: C++类型转换分为:隐式类型转换和显式类型转换 第1部分. 隐式类型转换 又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion ...
- hdu 1443 Joseph (约瑟夫环)
Joseph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- Light oj 1197 - Help Hanzo (素数筛技巧)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1197 给你a和b求a到b之间的素数个数. 先在小区间素数筛,大区间就用类似素数筛的想法 ...
- HDU 3668 Volume (数学,积分)
题意:求图中交叉圆柱体的体积! 析:大体思路很明确,把两个圆柱的体积加起来 减去中间公共部分的即可!第一步首先得想到公共部分是一个怎样的图形.这个在高数下册例题中有讲到! 中间实线部分就是第一卦限内的 ...
- Jstl标签的使用
一. 配置 JSTL 包括两个 JAR 文件, jstl.jar 和 standard.jar .是什么没有必要管,重在应用( 1+1 ? =2 ,我们没有必要深究,只需要知道这么用就行.). 原文引 ...
- Javascript 原型继承(续)—从函数到构造器的角色转换
对于每一个声明的函数,里边都会带有一个prototype成员,prototype会指向一个对象,现在我们来聚焦prototype指向的这个对象,首先我们会认为,这个对象是一个该函数对应的一个实例对象, ...
- Oracle DataGuard 物理Standby 搭建(下)
主备库切换 Switchover 一般SWITCHOVER切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个DATA GUARD环境不会被破坏,原来DATA GUAR ...