• 2017.2.21 activiti实战--第十三章--流量数据查询与跟踪(一)查询接口介绍及运行时数据查询


    学习资料:《Activiti实战》

    第十三章 流量数据查询与跟踪

    本章讲解运行时与历史数据的查询方法。主要包含三种:标准查询,Native查询,CustomSql查询。

    13.1 Query API

    Activiti的查询API分为:

    1 标准查询
      以Java对象的方式,创建一个指定类型的Query对象,然后链式编程查询。
      缺点:不支持复杂的查询。
    2 Nativit查询
      采用标准SQL的方式查询,因此支持复杂的查询。
      缺点:仅支持部分对象的查询。

    (1)Query接口与NativeQuery

    Query接口:

    1 (I)Query<...>
    2       asc()                    T
    3       desc()                   T
    4       count()                  long
    5       singleResult()           U
    6       list()                   List<U>
    7       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接口的子接口:

     1 UserQuery
     2 GroupQuery
     3 
     4 JobQuery
     5 ProcessDefinitionQuery
     6 DeploymentQuery
     7 ModelQuery
     8 TaskQuery
     9 ExecutionQuery
    10 ProcessInstanceQuery
    11 
    12 HistroricProcessInstanceQuery
    13 HistroricTaskInstanceQuery
    14 HistroricActivityInstanceQuery
    15 HistroricDetailQuery
    16 HistroricVariableInstanceQuery

    NativeQuery接口的子接口(正如前面所说,NativeQuery只支持部分流程对象):

     1 UserQuery
     2 GroupQuery
     3 
     4 JobQuery
     5 ProcessDefinitionQuery
     6 DeploymentQuery
     7 ModelQuery
     8 NativeTaskQuery
     9 NativeExecutionQuery
    10 NativeProcessInstanceQuery
    11 
    12 NativeHistroricProcessInstanceQuery
    13 NativeHistroricTaskInstanceQuery
    14 NativeHistroricActivityInstanceQuery
    15 HistroricDetailQuery
    16 HistroricVariableInstanceQuery

    (2)使用xxxService创建查询

    运行时与历史数据涉及到的Service有:RuntimeService,TaskService,HistoryService。

    这里以TaskService为例:

    1 (I)TaskService
    2    createTaskQuery()             TaskQuery
    3    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是有的。

    1 List<Task> tasks = taskService.createNativeTaskQuery()
    2                    .sql("SELECT * FROM ACT_RU_TASK T WHERE T.NAME_ = #{taskName}" ) //此处的表明也可通过managementService.getTableName(Task.Class)获得
    3                    .parameter("taskName","人事审批")
    4                    .listPage();//使用list()则不分页

    如果不需要分页,采用标准查询也可以完成task的查询功能。

    如果要条件查询,只需要修改sql语句,把 = 换做 like 即可。

    (2)查询参与的流程

    需求:查询已经办理过的流程,以及跟踪流程的办理情况。

    使用标准查询:

    1 //第9章时已经介绍过ProcessInstance与Execution的关系为一对多
    2 List<ProcessInstance> processInstanceList = runtimeService.createProcessInstanceQuery().list();
    3 
    4 List<Execution> executionList = runtimeService.createExecutionQuery().list();

    但是ProcessInstanceQuery与ExecutionQuery均没有提供"查询某个用户相关的流程"这个接口。所以这时需要用到Native查询。

    native查询的用法前面已经讲过。sql语句如下:

    1 --用于native查询的sql语句
    2 SELECT RES.* FROM ACT_RU_EXECUTION RES 
    3 LEFT JOIN ACT_HI_TASKINST ART 
    4 ON ART.PROC_INST_ID_ = RES.PROC_INST_ID_ 
    5 WHERE ART.ASSIGNEE_ = #{userId} 
    6 AND ACT_ID_ IS NOT NULL 
    7 AND IS_ACTIVE_ = 'TRUE' 
    8 ORDER BY START_TIME_ DESC
  • 相关阅读:
    现代操作系统读书笔记 2
    java8 中 ImageIO 读取 tiff 格式的图片失败
    word 转 pdf,c#代码
    spring 技术内幕读书笔记1
    操作系统精髓与设计读书笔记1
    手把手教你WEB套打程序开发
    WEB打印控件Lodop使用体会
    listview下拉刷新 上拉(滑动分页)加载更多
    如何解析android访问webservice返回的SoapObject数据(可用)
    统计子串在另一个字符中出现的次数
  • 原文地址:https://www.cnblogs.com/lyh421/p/6474392.html
Copyright © 2020-2023  润新知