Activiti开发案例之工作流任务数据统计
- 2019 年 12 月 5 日
- 筆記
前言
工作流可以提高企业运营效率、改善企业资源利用、提高企业运作的灵活性和适应性、提高工作效率、集中精力处理核心业务、跟踪业务处理过程、量化考核业务处理的效率、减少浪费、增加利润、充分发挥现有计算机网络资源的作用。实施工作流将达到缩短企业运营周期、改善企业内(外)部流程、优化并合理利用资源、减少人为差错和延误,提高劳动生产率等目的。
以上,量化考核业务处理的效率是重点,用红笔圈起来,要考!要考!要考!重要的事情说三遍!
数据统计
流程
发起流程数量:
-- API查询 histiryService.createHistoricProcessInstanceQuery().count(); -- 纯SQL查询 select count(*) from ACT_HI_PROCINST; -- 根据发起人查询 histiryService.createHistoricProcessInstanceQuery().startedBy(userId).count(); -- 纯SQL查询 select count(*) from ACT_HI_PROCINST where START_USER_ID_=?;
根据发起人分组查询数量:
select START_USER_ID_,count(*) from ACT_HI_PROCINST group by START_USER_ID_;
已完成的流程数量:
-- API查询总数 histiryService.createHistoricProcessInstanceQuery().finished().count(); -- API查询 histiryService.createHistoricProcessInstanceQuery().startedBy(userId).finished().count(); -- 纯SQL查询 select count(*) from ACT_HI_PROCINST where END_TIME_ is not null select count(*) from ACT_HI_PROCINST where START_USER_ID_ =? and END_TIME_ is not null
任务
查询当前待办任务:
select count(*) from ACT_RU_TASK;
查询个人待办任务
-- 果使用API需要自行映射用户角色关系 taskService.createTaskQuery().taskCandidateOrAssigned(userId).count(); -- 使用纯SQL查询,第一个个问号传入用户ID、第三个传入角色代码 SELECT COUNT(*) FROM ACT_RU_TASK RES LEFT JOIN ACT_RU_IDENTITYLINK I ON I.TASK_ID_ = RES.ID_ LEFT JOIN ACT_HI_VARINST va ON RES.PROC_INST_ID_ = va.PROC_INST_ID_ WHERE SUSPENSION_STATE_ = '1' AND RES.ASSIGNEE_ = ? OR (RES.ASSIGNEE_ IS NULL AND (I.USER_ID_ = ? OR I.GROUP_ID_ IN (?)))
查询已办理任务数量:
select count(*) from ACT_HI_TASKINST where END_TIME_ is not NULL
查询个人已办理任务数量:
select count(*) from ACT_HI_TASKINST where ASSIGNEE_=? and END_TIME_ is not NULL
查询超期任务(超过一天的 1440 分钟):
SELECT COUNT(*) FROM ACT_HI_TASKINST WHERE END_TIME_ IS NULL AND datediff(mi, START_TIME_, getdate()) >= 1440
按人/月统计已办理任务(SQLSERVER数据库):
SELECT datepart(month, t.END_TIME_) AS month, COUNT(*) AS sum FROM ACT_HI_TASKINST t WHERE datepart(year, t.END_TIME_) = ? AND ASSIGNEE_ = ? AND t.DURATION_ IS NOT NULL GROUP BY datepart(month, t.END_TIME_)