2017.2.21 activiti实战--第十三章--流量数据查询与跟踪(一)查询接口介绍及运行时数据查询
2017-02-27 15:27
204 查看
学习资料:《Activiti实战》
第十三章 流量数据查询与跟踪
本章讲解运行时与历史数据的查询方法。主要包含三种:标准查询,Native查询,CustomSql查询。
13.1 Query API
Activiti的查询API分为:
(1)Query接口与NativeQuery
Query接口:
NativeQuery接口(可以看到与Query无区别):
Query接口的子接口:
NativeQuery接口的子接口(正如前面所说,NativeQuery只支持部分流程对象):
(2)使用xxxService创建查询
运行时与历史数据涉及到的Service有:RuntimeService,TaskService,HistoryService。
这里以TaskService为例:
13.2 运行时数据查询
运行时涉及到的Service是:RuntimeService,TaskService。
(1)流程对象对应的数据库表
Activiti提供了通过流程对象获取对应表名的接口,比如:
下面列出流程对象对应的数据库表名。
(2)任务查询
任务查询的时候,一般都需要满足分页查询的要求。所以标准查询无法做到,采用Native查询。从前面的接口介绍中可以看出,NativeTaskQuery是有的。
如果不需要分页,采用标准查询也可以完成task的查询功能。
如果要条件查询,只需要修改sql语句,把 = 换做 like 即可。
(2)查询参与的流程
需求:查询已经办理过的流程,以及跟踪流程的办理情况。
使用标准查询:
但是ProcessInstanceQuery与ExecutionQuery均没有提供"查询某个用户相关的流程"这个接口。所以这时需要用到Native查询。
native查询的用法前面已经讲过。sql语句如下:
第十三章 流量数据查询与跟踪
本章讲解运行时与历史数据的查询方法。主要包含三种:标准查询,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 |
任务查询的时候,一般都需要满足分页查询的要求。所以标准查询无法做到,采用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实战--第十三章--流量数据查询与跟踪(一)查询接口介绍及运行时数据查询
- 公交路线查询数据接口简单介绍
- 《JAVA笔记本》跟踪行动:Java虚拟机运行时数据区
- hibernate数据查询方法介绍
- 【VC++开发实战】迅雷晒密及批量查询流量程序
- LINQ实战阅读笔记---第5章 超越基本的内存数据查询
- Java获得查询数据、运行程序花费的时间
- XML数据接口DOM入门介绍和常用对象
- VM运行时数据区域介绍
- 天气预报数据查询接口
- 不允许从数据类型 nvarchar 到 varbinary 的隐式转换。请使用 CONVERT 函数来运行此查询
- WMI技术介绍和应用——查询正在运行的进程信息
- 【初学者】写的一个泛型接口类,主要对数据的增加,删除,修改,查询
- mysql 从运行里面查询数据库里面的数据
- 查询某天每个时段的访问数据(网站流量统计)
- iOS程序版本判断,以及查询接口官方介绍
- Net 调用SAP RFC接口来读取数据实战纪实
- 关于 “不允许从数据类型 sql_variant 到 uniqueidentifier 的隐式转换。请使用 CONVERT 函数来运行此查询“的最终解决
- 不允许从数据类型 ntext 到 varchar 的隐性转换。请使用 CONVERT 函数来运行此查询
- OLE DB 访问接口 'Microsoft.Jet.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询 (转)