国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何查詢已經(jīng)執(zhí)行過的流程信息?

數(shù)據(jù)庫 其他數(shù)據(jù)庫
一個流程中的每一個節(jié)點都是一個活動,當(dāng)一個流程執(zhí)行結(jié)束的時候,如果我們還想查看每一個活動執(zhí)行的細節(jié),就得通過查詢歷史活動來實現(xiàn)了。

今天我們就來看看 HistoryService 的使用。

本文使用的流程圖依然是上篇文章中使用過的,如下:

圖片

1. 查詢歷史流程

查詢歷史流程的方式很簡答,如下:

@SpringBootTest
public class HiTest {

@Autowired
HistoryService historyService;
private static final Logger logger = LoggerFactory.getLogger(HiTest.class);

@Test
void test01() {
List<HistoricProcessInstance> list = historyService.createHistoricProcessInstanceQuery().list();
for (HistoricProcessInstance hi : list) {
logger.info("==={},{},{},{},{},{}",hi.getId(),hi.getName(),hi.getStartActivityId(),hi.getStartTime(),hi.getEndActivityId(),hi.getEndTime());
}
}
}

由于我們這是 Spring Boot 項目,所以基本上不需要什么額外的配置,直接注入 HistoryService 實例即可。

test01 方法中的代碼就是查詢出來目前所有的流程實例,包括正在執(zhí)行的和已經(jīng)執(zhí)行完畢的都可以查詢到。查詢之后,控制臺打印結(jié)果如下:

==>  Preparing: SELECT RES.* , DEF.KEY_ as PROC_DEF_KEY_, DEF.NAME_ as PROC_DEF_NAME_, DEF.VERSION_ as PROC_DEF_VERSION_, DEF.DEPLOYMENT_ID_ as DEPLOYMENT_ID_ from ACT_HI_PROCINST RES left outer join ACT_RE_PROCDEF DEF on RES.PROC_DEF_ID_ = DEF.ID_ order by RES.ID_ asc
==> Parameters:
<== Total: 1
Flushing dbSqlSession
flush summary: 0 insert, 0 update, 0 delete.
now executing flush...
--- HistoricProcessInstanceQueryImpl finished --------------------------------------------------------
===a3786614-38eb-11ed-afc8-acde48001122,null,startEvent1,Tue Sep 20 21:53:42 CST 2022,null,null

首先大家看到,這里查詢的 SQL,查詢的表是 ACT_HI_PROCINST,簡單截個圖大家看下:

圖片

大家看到,這張表中記錄了流程實例 ID,流程定義 ID,流程開始的時間,流程結(jié)束的時間,流程執(zhí)行耗時,流程開始的節(jié)點,流程發(fā)起人,流程結(jié)束的節(jié)點等等。

同時大家也可以看到,在打印出來的查詢結(jié)果中,getEndActivityId 和 getEndTime 這兩個字段的值都為 null,這就說明這個流程目前還在執(zhí)行中,還沒執(zhí)行完畢,當(dāng)一個流程執(zhí)行完畢的時候,這兩個字段就不會為 null 了,小伙伴們可以根據(jù)這個特點去判斷一個流程是否執(zhí)行完畢。

現(xiàn)在根據(jù)我們上篇文章中介紹的知識點,我將流程這個流程中的任務(wù)都執(zhí)行完畢,執(zhí)行完畢之后,ACT_RU_EXECUTION 表中關(guān)于流程的記錄就會被刪除掉,也就是執(zhí)行如下代碼現(xiàn)在是查詢不到上面這個流程了:

@Autowired
RuntimeService runtimeService;
@Test
void test02() {
ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId("a3786614-38eb-11ed-afc8-acde48001122").singleResult();
logger.info("pi:{}",pi);
}

這個方法執(zhí)行返回的 pi 對象現(xiàn)在為 null。

現(xiàn)在我們想查詢剛剛執(zhí)行的流程,得去查詢歷史流程,也就是去 ACT_HI_PROCINST 表中去查詢,執(zhí)行我們最上面那個方法:

@Test
void test01() {
List<HistoricProcessInstance> list = historyService.createHistoricProcessInstanceQuery().list();
for (HistoricProcessInstance hi : list) {
logger.info("==={},{},{},{},{},{}",hi.getId(),hi.getName(),hi.getStartActivityId(),hi.getStartTime(),hi.getEndActivityId(),hi.getEndTime());
}
}

現(xiàn)在去查詢,返回的結(jié)果中就可以看到 EndActivityId 以及 EndTime 這兩個字段了,因為流程已經(jīng)執(zhí)行結(jié)束了。

通過上面的介紹,大家應(yīng)該也發(fā)現(xiàn)了,在流程執(zhí)行的過程中,ACT_HI_PROCINST 表中的流程記錄和 ACT_RU_EXECUTION 表中的流程記錄是一一對應(yīng)的。

2. 查詢歷史活動

一個流程中的每一個節(jié)點都是一個活動,當(dāng)一個流程執(zhí)行結(jié)束的時候,如果我們還想查看每一個活動執(zhí)行的細節(jié),就得通過查詢歷史活動來實現(xiàn)了。

在查詢之前,小伙伴們先來了解下跟歷史活動相關(guān)的兩張表。

ACT_HI_ACTINST

這張表中保存一個流程中的所有活動細節(jié)。包括流程的啟動節(jié)點、結(jié)束節(jié)點、各種 Task 甚至節(jié)點之間的連線,大家來看下這張表中的信息:

圖片

大家看到,這剛好是一個流程的完整記錄,從上往下,分別是:

  1. 啟動流程。
  2. 連線
  3. 提交請假申請這個 UserTask
  4. 連線
  5. 主管審批這個 UserTask
  6. 連線
  7. 經(jīng)理審批這個 UserTask
  8. 連線
  9. 結(jié)束

事無巨細,全部都記錄下來了。

ACT_HI_TASKINST

這個表看名字就知道只記錄下來了 Task 的信息,我截個圖大家來看下:

圖片

小伙伴們看下,這張表記錄下來了每一個 Task 的具體信息,包括這個 Task 是由誰處理的,Task 的名字,開始時間、結(jié)束時間、耗時等信息。

那么針對這兩張表,也有不同的查詢方式。

首先來看查詢歷史活動:

@Test
void test03() {
List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery().orderByHistoricActivityInstanceStartTime().asc().list();
for (HistoricActivityInstance hai : list) {
logger.info("流程ID:{},活動名稱:{},活動ID:{},活動處理人:{}",hai.getProcessInstanceId(),hai.getActivityName(),hai.getActivityId(),hai.getAssignee());
}
}

查詢結(jié)果如下圖:

圖片

小伙伴們看查詢 SQL 也印證我們說的沒有問題。由于我這里目前只執(zhí)行了一個流程,所以這里就只顯示了一個流程的所有活動,大家看打印出來的流程 ID 都是一樣的。

再來看查詢歷史 Task:

@Test
void test04() {
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery().orderByHistoricTaskInstanceStartTime().asc().list();
for (HistoricTaskInstance hti : list) {
logger.info("流程ID:{},Task 開始時間:{},Task 結(jié)束時間:{},Task 處理人:{}",hti.getProcessInstanceId(),hti.getCreateTime(),hti.getEndTime(),hti.getAssignee());
}
}

查詢結(jié)果如下:

圖片

查詢 SQL 也如我們所預(yù)料的。

責(zé)任編輯:武曉燕 來源: 江南一點雨
相關(guān)推薦

2022-10-31 10:41:02

Flowable流程前綴

2013-10-29 16:27:23

MySQLSQL語句

2024-09-14 14:18:43

2009-07-08 10:30:57

WebWork

2017-08-22 21:51:07

2010-04-19 09:37:22

Oracle查詢語句

2022-07-28 09:13:30

MySQL數(shù)據(jù)庫

2018-09-21 16:13:01

數(shù)據(jù)庫MySQLSQL

2019-09-05 08:25:15

Oraclesidsql

2022-02-11 14:43:53

SQL語句C/S架構(gòu)

2017-05-04 11:09:21

互聯(lián)網(wǎng)

2011-12-06 13:30:45

2022-03-30 08:54:21

線程 Thread判斷線程池任務(wù)Java

2010-04-26 16:23:52

Oracle dele

2011-08-30 16:55:29

Ubuntu

2020-06-20 14:09:01

信息安全數(shù)據(jù)技術(shù)

2010-08-04 13:23:29

Flex事件

2010-04-26 14:43:17

Oracle遞歸條件查

2025-07-25 01:45:00

RAG模型技術(shù)

2009-06-01 09:30:51

JSF2.0FaceletsAjax4JSF
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲人成毛片在线播放| 国产精品久久久久三级| 日韩一二三区视频| 黄色三级电影网站| 粉嫩嫩av羞羞动漫久久久| 91免费在线观看网站| 99久久久成人国产精品| 亚洲高清免费观看高清完整版| 亚洲52av| 国产日韩av一区二区| 日韩欧美不卡在线| 韩剧1988免费观看全集| 在线观看三级视频| 欧美在线一二三| 亚洲视频精品在线观看| 久久久久亚洲| 欧美在线免费观看视频| 369你懂的电影天堂| 中国色在线观看另类| 国产v亚洲v天堂无码久久久| 成人av电影免费观看| xvideos成人免费中文版| 欧美片第一页| 一区二区亚洲精品国产| www.久久.com| 欧美成人黄色小视频| 免费一级欧美片在线观看网站| 一区二区三区四区在线| 日本免费视频www| 亚洲va韩国va欧美va| 日韩欧美在线观看一区二区| 午夜视频一区在线观看| 小草在线视频在线免费视频| 欧美日韩国产影院| 99青草视频在线播放视| 精品区一区二区| 韩国女主播一区二区| 色综合五月天导航| 教室别恋欧美无删减版| 91久久精品国产91久久性色| 午夜国产欧美理论在线播放| 久久精品欧美| 国产一区二区调教| 性欧美疯狂xxxxbbbb| 亚洲精品偷拍视频| 日韩欧美一二三区| 特黄国产免费播放| 色综合天天综合色综合av| 亚洲男人都懂的网站| 欧美一区二区三区视频在线| 国产精品粉嫩| 国产成人久久久| 日产国产高清一区二区三区| 欧美mv和日韩mv的网站| 中文在线免费二区三区| 国产精品久久久久久久电影| 在线成人h网| 天天插天天操天天射| 永久免费在线| 色阁综合伊人av| 国产亚洲欧美日韩在线观看一区二区 | 国产欧美日韩影院| 亚洲综合视频一区| 中文字幕亚洲成人| 欧美高清性xxxxhd| 亚洲精品国产一区二区精华液| 国产三级在线播放| 国产成人97精品免费看片| 成人中文字幕电影| 免费的黄网站在线观看| 91av国产在线| ww亚洲ww在线观看国产| 裤袜国产欧美精品一区| 欧美极品色图| 在线观看亚洲一区| 日本女优一区| 九九九在线观看视频| 欧美劲爆第一页| 国产电影一区在线| 超碰激情在线| 激情婷婷欧美| 轻轻色免费在线视频| 97视频在线免费观看| 国产自产高清不卡| 丁香花在线电影| 国产在线视频综合| 精品国产免费人成在线观看| 久久精品动漫| av3级在线| 国产激情在线看| 亚洲人成亚洲人成在线观看| 不卡一区中文字幕| 国产区一区二| 369你懂的电影天堂| 成人黄色片在线| 欧亚一区二区三区| 日韩电影在线免费看| 好看的中文字幕在线播放| 国产99久久久国产精品潘金 | 欧美爱爱视频| 六月丁香婷婷激情| 欧美激情在线看| 欧美高清视频在线观看mv| 黄色网址在线播放| 日本a在线天堂| 91精品国产91久久久久久不卡| 亚洲视频中文字幕| 香港欧美日韩三级黄色一级电影网站| 高清国产福利在线观看| 少妇人妻在线视频| 91久久精品国产91久久性色| 欧美色窝79yyyycom| 久久久国产午夜精品 | 日韩午夜在线观看| www.视频一区| 久久久久久久久99精品大| 欧美aaa视频| av在线播放免费| 777av视频| 色一情一乱一伦一区二区三区 | 成人av资源在线观看| 亚洲大片在线| 伊人久久大香线蕉综合网站| 色呦呦在线观看视频| 国产精品高清在线| 日韩av一区二区在线| 国产在线激情| 中文字幕第21页| 欧美日本在线看| 国产午夜精品一区二区三区嫩草 | 9l国产精品久久久久麻豆| 欧美激情国产在线| 久草在线综合| 精品国产午夜肉伦伦影院| 国内精品视频| 成人午夜sm精品久久久久久久| 日韩伦理一区二区| 在线一区二区三区视频| 在这里有精品| 欧美日韩一区二区三区在线电影| 在线一区视频观看| 中文字幕在线视频久| 99re6在线精品视频免费播放| 日本va中文字幕| 久久综合久久综合这里只有精品| 亚洲男女性事视频| 色狠狠一区二区三区香蕉| 国产色婷婷亚洲99精品小说| 青青草97国产精品免费观看无弹窗版| 国产福利在线| 8090成年在线看片午夜| 国产在线日韩欧美| 制服丝袜专区在线| 狠狠色综合日日| 亚洲精品一二三四区| 老司机深夜福利在线观看| 久久艳片www.17c.com | 久久国产情侣| 欧美精品videossex88| 亚洲手机成人高清视频| 日韩欧美高清在线播放| 成年在线电影| 吴梦梦av在线| 国语对白做受69| 色先锋aa成人| 精品一区二区三区av| 91精品国产乱码久久久竹菊| 中文字幕视频在线观看| 日韩一区免费观看| 中文字幕日韩欧美在线视频| 亚洲欧洲精品一区二区三区不卡| 亚洲字幕久久| 午夜激情在线播放| 高清av影院| 亚洲精品乱码视频| 久久久久久国产精品美女| 欧美性受xxxx黑人xyx性爽| 国产成人在线免费观看| 成人羞羞网站入口| 亚洲a成v人在线观看| 成人久久视频在线观看| 久久porn| 日本片在线观看| 亚洲不卡视频在线| 蜜桃视频在线观看成人| 久久久久久亚洲| 日韩欧美国产一区二区在线播放| 中文字幕国产一区二区| 久久在线精品| 狠狠色丁香婷婷综合影院| 女人让男人操自己视频在线观看 | 欧美精品电影免费在线观看 | 高清免费观看在线| 国产又黄又爽免费视频| 国产欧美日韩精品丝袜高跟鞋| 成人一级黄色片| 久久久久久久久久久妇女| 美女写真久久影院| 91在线高清| 久草免费在线播放|