activiti 多部门审批_Activiti几个复杂查询需求的实现

本文介绍了如何在Activiti中实现复杂的工作流查询,包括待办任务、已办任务和案件文书管理的查询方法,通过结合ACT_RU_TASK、ACT_RE_PROCDEF、ACT_HI_VARINST等表,利用数据库查询技巧获取最新流程变量。
摘要由CSDN通过智能技术生成

7e7322549c2fe762c5217ed023120c31.png

在计算机尚未普及时,许多工作流程采用手工传递纸张表单的方式,一级一级审批签字,工作效率非常低下,对于数据统计以及生成报表的功能,需要经过大量的手工操作才能实现。随着电脑的普及,这些工作的参与者只需要在电脑的系统中填入工作内容,系统就会按照定义好的流程自动执行,各级审批者可以得到工作的信息并作出相应的审批和管理操作,数据统计和报表的生成均由系统代为完成,这样大大提高了工作效率,在这种背景下,各种的工作流应用以及中间件应运而生。

​ Activiti的好处是简化了数据库的存储方式,对于一个步骤繁琐的工作流程,使用Activiti之后程序员可以不用关注工作流中每一步所对应的流程变量的存储,不用单独开很多表结构去存储工作流每一步所对应的流程变量。缺点是因为所有的历史流程变量数据全部存在一张表中,一旦业务需求发生变更则需要做一些表连接去查询数据。实际工程项目中使用较多的查询包括用户待办任务查询、已办任务查询、所有经手任务查询、流程信息跟踪查询等等。现将部分复杂查询的实现过程记录如下:

1、待办任务查询

业务场景:
1.用户A可以受理一个案件(即启动工作流)
2.在启动工作流时用户A需要填写一张表,其数据会保存进历史流程变量表里,此时用户A有一个 待办任务T
3.用户A点击“待办任务”菜单, 获得用户A名下所有的待办任务列表以及相关联的流程变量
4.用户A可以办理 待办任务T,页面需要回显 待办任务T对应的表单,即用户A启动流程时填写过的表单
5.用户A检查自己填写过的字段,若发现有问题的字段可以修改该字段的内容,并点击保存结束该步骤
6.此时用户A的 已办任务列表应该更新为最新的流程变量内容,工作流进行到下一步,由后面用户继续完成

用到的表

  • ACT_RU_TASK(运行时任务)
  • ACT_RE_PROCDEF(已部署的流程定义)
  • ACT_HI_VARINST(历史的流程运行中的变量信息)

思路:

(1)每一个流程都有唯一的标识符,保存在ACT_RE_PROCDEF表的ID_字段里,比如劳动监察执法流程的ID_即为KEY_case:1:630005,其中,key_case为事先定义好的流程标识符。利用这个ID可以查询出该流程正在运行的任务有哪些

(2)因为同一份流程变量在开始节点和工作流UserTask1节点保存了两份,并且后一份流程变量可能更新前面的流程变量,所以需要取到最新的流程变量,根据ACT_HI_VARINST表ID_字段增加的特点,取ID_大的那一份流程变量即可(考虑使用PARTITION BY)

(3)根据PROC_INST_ID_将任务节点与任务节点对应的流程变量关联起来,需要查询几个字段就需要做几次连接

以测试员工1为例,查询测试员工1的待办任务对应的SQL语句如下:

select
        f.*,
        p.NAME_ PNAME_,
        p.DGRM_RESOURCE_NAME_,
        case_id.TEXT_ CASE_ID_,
        case_type.TEXT_ CASE_TYPE_,
        tsr.TEXT_ TSR_,
        btsdw.TEXT_ BTSDW_,
        phone.TEXT_ PHONE_,
        ssjd.TEXT_ SSJD_
from 
        ACT_RU_TASK f
        left join
        ACT_RE_PROCDEF p
        on
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值