2017.2.21 activiti实战--第十三章--流量数据查询与跟踪(一)查询接口介绍及运行时数据查询
学习资料:《Activiti实战》
第十三章 流量数据查询与跟踪
本章讲解运行时与历史数据的查询方法。主要包含三种:标准查询,Native查询,CustomSql查询。
13.1 Query API
Activiti的查询API分为:
1 标准查询
以Java对象的方式,创建一个指定类型的Query对象,然后链式编程查询。
缺点:不支持复杂的查询。
2 Nativit查询
采用标准SQL的方式查询,因此支持复杂的查询。
缺点:仅支持部分对象的查询。
(1)Query接口与NativeQuery
Query接口:
(I)Query<...>
asc() T
desc() T
count() long
singleResult() U
list() List<U>
listPage(int,int) List<U>
NativeQuery接口(可以看到与Query无区别):
1 (I)NativeQuery<...>
2 asc() T
3 desc() T
4 count() long
5 singleResult() U
6 list() List<U>
7 listPage(int,int) List<U>
Query接口的子接口:
UserQuery
GroupQuery JobQuery
ProcessDefinitionQuery
DeploymentQuery
ModelQuery
TaskQuery
ExecutionQuery
ProcessInstanceQuery HistroricProcessInstanceQuery
HistroricTaskInstanceQuery
HistroricActivityInstanceQuery
HistroricDetailQuery
HistroricVariableInstanceQuery
NativeQuery接口的子接口(正如前面所说,NativeQuery只支持部分流程对象):
1 UserQuery
2 GroupQuery 4 JobQuery
5 ProcessDefinitionQuery
6 DeploymentQuery
7 ModelQuery
NativeTaskQuery
NativeExecutionQuery
NativeProcessInstanceQuery NativeHistroricProcessInstanceQuery
NativeHistroricTaskInstanceQuery
NativeHistroricActivityInstanceQuery
15 HistroricDetailQuery
16 HistroricVariableInstanceQuery
(2)使用xxxService创建查询
运行时与历史数据涉及到的Service有:RuntimeService,TaskService,HistoryService。
这里以TaskService为例:
(I)TaskService
createTaskQuery() TaskQuery
createNativeTaskQuery() NativeTaskQuery
13.2 运行时数据查询
运行时涉及到的Service是:RuntimeService,TaskService。
(1)流程对象对应的数据库表
Activiti提供了通过流程对象获取对应表名的接口,比如:
1 String tableName = managementService.getTableName(Task.Class)
//此时返回的tableName = "ACT_RU_TASK"
下面列出流程对象对应的数据库表名。
类名 | 表名 |
**.task.Task | ACT_RU_TASK |
**.runtime.Job | ACT_RU_JOB |
**.runtime.Execution | ACT_RU_EXECUTION |
**.runtime.ProcessInstance | ACT_RU_EXECUTION |
**.repository.ProcessDefinition | ACT_RE_PROCDEF |
**.repository.Deployment | ACT_RE_DEPLOYMENT |
**.history.HistoricProcessInstance | ACT_HI_PROCINST |
**.history.HistoricActivityInstance | ACT_HI_ACTINST |
**.history.HistoricDetail | ACT_HI_DETAIL |
**.history.HistoricVariableUpdate | ACT_HI_DETAIL |
**.history.HistoricFormProperty | ACT_HI_DETAIL |
**.history.HistoricTaskInstance | ACT_HI_TASKINST |
**.history.HistoricVariableInstance | ACT_HI_VARINST |
(2)任务查询
任务查询的时候,一般都需要满足分页查询的要求。所以标准查询无法做到,采用Native查询。从前面的接口介绍中可以看出,NativeTaskQuery是有的。
List<Task> tasks = taskService.createNativeTaskQuery()
.sql("SELECT * FROM ACT_RU_TASK T WHERE T.NAME_ = #{taskName}" ) //此处的表明也可通过managementService.getTableName(Task.Class)获得
.parameter("taskName","人事审批")
.listPage();//使用list()则不分页
如果不需要分页,采用标准查询也可以完成task的查询功能。
如果要条件查询,只需要修改sql语句,把 = 换做 like 即可。
(2)查询参与的流程
需求:查询已经办理过的流程,以及跟踪流程的办理情况。
使用标准查询:
//第9章时已经介绍过ProcessInstance与Execution的关系为一对多
List<ProcessInstance> processInstanceList = runtimeService.createProcessInstanceQuery().list(); List<Execution> executionList = runtimeService.createExecutionQuery().list();
但是ProcessInstanceQuery与ExecutionQuery均没有提供"查询某个用户相关的流程"这个接口。所以这时需要用到Native查询。
native查询的用法前面已经讲过。sql语句如下:
--用于native查询的sql语句
SELECT RES.* FROM ACT_RU_EXECUTION RES
LEFT JOIN ACT_HI_TASKINST ART
ON ART.PROC_INST_ID_ = RES.PROC_INST_ID_
WHERE ART.ASSIGNEE_ = #{userId}
AND ACT_ID_ IS NOT NULL
AND IS_ACTIVE_ = 'TRUE'
ORDER BY START_TIME_ DESC
2017.2.21 activiti实战--第十三章--流量数据查询与跟踪(一)查询接口介绍及运行时数据查询的更多相关文章
- 2017.2.21 activiti实战--第七章--Activiti与spring集成(一)配置文件
学习资料:<Activiti实战> 第七章 Activiti与容器集成 本章讲解activiti-spring可以做的事情,如何与现有系统集成,包含bean的注入.统一事务管理等. 7.1 ...
- 2017.2.28 activiti实战--第七章--Spring容器集成应用实例(五)普通表单
学习资料:<Activiti实战> 第七章 Spring容器集成应用实例(五)普通表单 第六章中介绍了动态表单.外置表单.这里讲解第三种表单:普通表单. 普通表单的特点: 把表单内容写在 ...
- 2017.2.20 activiti实战--第五章--用户与组及部署管理(一)用户与组
学习资料:<Activiti实战> 第五章 用户与组及部署管理(一)用户与组 内容概览:讲解activiti中内置的一套用户.组的关系,以及如何通过API添加.删除.查询. 5.1 用户与 ...
- 2017.2.28 activiti实战--第六章--任务表单(二)外置表单
学习资料:<Activiti实战> 第六章 任务表单(二)外置表单 6.3 外置表单 考虑到动态表单的缺点(见上节),外置表单使用的更多. 外置表单的特点: 页面的原样显示 字段值的自动填 ...
- 2017.2.28 activiti实战--第六章--任务表单(一)动态表单
学习资料:<Activiti实战> 第六章 任务表单(一)动态表单 内容概览:本章要完成一个OA(协同办公系统)的请假流程的设计,从实用的角度,讲解如何将activiti与业务紧密相连. ...
- 2017.2.28 activiti实战--第五章--用户与组及部署管理(三)部署流程及资源读取
学习资料:<Activiti实战> 第五章 用户与组及部署管理(三)部署流程及资源读取 内容概览:如何利用API读取已经部署的资源,比如读取流程定义的XML文件,或流程对应的图片文件. 以 ...
- 2017.2.28 activiti实战--第五章--用户与组及部署管理(二)部署流程资源
学习资料:<Activiti实战> 第五章 用户与组及部署管理(二)部署流程资源 内容概览:讲解流程资源的读取与部署. 5.2 部署流程资源 5.2.1 流程资源 流程资源常用的有以下几种 ...
- 2017.2.22 activiti实战--第六章--任务表单
学习资料:<Activiti实战> 第六章 任务表单 本章将一步步完成一个协同办公系统(OA)的请假流程的设计,讲解如何将Activiti和实际业务联系起来. 首先讲解动态表单与外置表单的 ...
- 2017.2.20 activiti实战--第二章--搭建Activiti开发环境及简单示例(二)简单示例
学习资料:<Activiti实战> 第一章 搭建Activiti开发环境及简单示例 2.5 简单流程图及其执行过程 (1)leave.bpmn 后缀名必须是bpmn.安装了activiti ...
随机推荐
- 删除 node 【笔记】
sudo npm uninstall npm -g sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receip ...
- 移动端布局rem em
1.概念 em作为font-size的单位时,其代表父元素的字体大小,em作为其他属性单位时,代表自身字体大小 rem作用于非根元素时,相对于根元素字体大小:rem作用于根元素字体大小时,相对于其出初 ...
- 第一个Maven案例Hello Maven
Maven目录结构 src:程序源代码 -main -java:java代码 -package:自定义的包 ...
- iframe+json
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.PropertyFilter; impor ...
- ionic2如何调用百度地图
使用ionic2接入百度地图 在index.html中引入百度地图的js类库 <script type="text/javascript" src="http:// ...
- iOS-Cocoapods更新不及时
一.问题 使用cocoapods搜索某些库时,搜索到的版本低于Github上面的版本,这样会导致一些问题.例如我在使用一个LTNavigationBar这个库时,在我升级到iOS10的时候,会导致导航 ...
- kubernetes-dashboard
1.导入kubernetes-dashboard 镜像 [root@node1 DNS]# docker load < kube-dashboard.tar 6bc90c4dba69: Load ...
- LESS CSS使用方法 , CSS也能跟JS一样玩
本文转自 http://blog.csdn.net/xuyonghong1122/article/details/51986472 在使用CSS的时候,总会有这个想法 这个属性值老是重复写好烦 这个 ...
- python(4)-- 日期 & 时间
1. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 2. 时间间隔是以秒为单位的浮点小数. 3. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长 ...
- python之装饰器【转】
装饰器 先来看一个例子,一个函数f1接收另一个函数f2作为参数,并将该参数f2返回给f2: def deco(func): print("before myfunc() called.&qu ...