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_)