有写过activiti activiti数据库的分类
之前有Query接口但是自定义程度太低,针对复杂的查询还是需要**NativeQuery **还是需要用下面是我转载的一篇文章 2017.2.21 activiti实战–第十三章–流量数据查询与跟踪(一)查询接口介绍及运行时数据查询
第十三章 流量数据查询与跟踪
本章讲解运行时与历史数据的查询方法。主要包含三种:标准查询,Native查询,CustomSql查询。
13.1 Query API
Activiti的查询API分为:
1 | 1 标准查询 |
(1)Query接口与NativeQuery
Query接口:
1 | 1 (I)Query<...> |
NativeQuery接口(可以看到与Query无区别):
1 | 1 (I)NativeQuery<...> |
Query接口的子接口:
1 | 1 UserQuery |
NativeQuery接口的子接口(正如前面所说,NativeQuery只支持部分流程对象):
1 | 1 UserQuery |
(2)使用xxxService创建查询
运行时与历史数据涉及到的Service有:RuntimeService,TaskService,HistoryService。
这里以TaskService为例:
1 | 1 (I)TaskService |
13.2 运行时数据查询
运行时涉及到的Service是:RuntimeService,TaskService。
(1)流程对象对应的数据库表
Activiti提供了通过流程对象获取对应表名的接口,比如:
1 | 1 String tableName = managementService.getTableName(Task.Class) |
下面列出流程对象对应的数据库表名。
类名 | 表名 |
---|---|
**.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是有的。
1 | 1 List<Task> tasks = taskService.createNativeTaskQuery() |
如果不需要分页,采用标准查询也可以完成task的查询功能。
如果要条件查询,只需要修改sql语句,把 = 换做 like 即可。
(2)查询参与的流程
需求:查询已经办理过的流程,以及跟踪流程的办理情况。
使用标准查询:
1 | 1 //第9章时已经介绍过ProcessInstance与Execution的关系为一对多 |
但是ProcessInstanceQuery与ExecutionQuery均没有提供”查询某个用户相关的流程”这个接口。所以这时需要用到Native查询。
native查询的用法前面已经讲过。sql语句如下:
1 | 1 --用于native查询的sql语句 |