日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

flowable 启动流程到完成所有任务之间的数据库变化

發布時間:2024/9/27 数据库 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flowable 启动流程到完成所有任务之间的数据库变化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先給出流程圖,很簡單的流程,就是3個UserTask

ProcessDefinition pd=repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult(); ProcessInstance pi=runtimeService.startProcessInstanceById(pd.getId());

或者

ProcessInstance procIns = runtimeService.startProcessInstanceByKey(procDefKey, businessTable+":"+businessId, vars);

以上代碼是部署這個流程,部署完畢后。
act_re_deployment 表中會有一條部署記錄,記錄這次部署的基本信息,然后是act_ge_bytearray表中有兩條記錄,記錄的是本次上傳的bpmn文件和對應的圖片文件,每條記錄都有act_re_deployment表的外鍵關聯,然后是act_re_procdef表中有一條記錄,記錄的是該bpmn文件包含的基本信息,包含act_re_deployment表外鍵。



注意看這個9e010fc1-1a65-11ea-83ef-f8a2d6bfea5a就是act_re_deployment表外鍵

ProcessDefinition pd=repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult(); ProcessInstance pi=runtimeService.startProcessInstanceById(pd.getId());

以上代碼是搜索此次部署對應的流程定義信息,也就是act_re_procdef表的信息查詢。然后啟動這個流程。

首先向act_ru_execution表中插入一條記錄,記錄的是這個流程定義的執行實例,其中id和proc_inst_id相同都是流程執行實例id,也就是本次執行這個流程定義的id,包含流程定義的id外鍵(leave:1:9f51f9c4-1a65-11ea-83ef-f8a2d6bfea5a)。

然后向act_ru_task插入一條記錄,記錄的是第一個任務的信息,也就是開始執行第一個任務。包括act_ru_execution表中的execution_id外鍵和proc_inst_id外鍵,也就是本次執行實例id。

然后向act_hi_procinst表和act_hi_taskinst表中各插入一條記錄,記錄的是本次執行實例和任務的歷史記錄:

Task task1=taskService.createTaskQuery().processInstanceId(pi.getId()).taskDefinitionKey(“task1”).singleResult(); taskService.setVariable(task1.getId(), “var1”, “var1”); taskService.complete(task1.getId());

以上代碼是查詢流程本次執行實例下名為task1的任務,然后給任務設置全局變量,如果調用的是taskService.setVariableLocal方法,則任務執行完畢后,相關變量數據就會刪除,然后再完成任務。

首先向act_ru_variable表中插入變量信息,包含本次流程執行實例的兩個id外鍵,但不包括任務的id,因為setVariable方法設置的是全局變量,也就是整個流程都會有效的變量:

簽收前:


執行完task1辦理后,act_ru_task表中task1的記錄被刪除,新插入task2的記錄:

同時向act_hi_var_inst和act_hi_taskinst插入歷史記錄

Task task2=taskService.createTaskQuery().processInstanceId(pi.getId()).taskDefinitionKey(“task2”).singleResult(); taskService.complete(task2.getId());

以上代碼是查詢本流程執行實例下的task2并完成task2。

此時整個流程執行完畢,act_ru_task,act_ru_execution和act_ru_variable表全被清空




其實全程有一個表一直在記錄所有動作,就是act_hi_actinst表

List<HistoricVariableInstance> vars=historyService.createHistoricVariableInstanceQuery().processInstanceId(pi.getId()).list(); for(HistoricVariableInstance var:vars){ System.out.println(var.getVariableName()); System.out.println(var.getValue()); }

以上這段代碼是查詢act_hi_varinst表中變量歷史記錄的。因為流程執行完畢act_ru_variable表被清空。

總結

以上是生活随笔為你收集整理的flowable 启动流程到完成所有任务之间的数据库变化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。