Camunda工作流引擎 I

實習工作中需要用到工作流引擎,去實現業務審批流的功能模塊,由於 Flowable 不支持 MariaDB (重要原因之一),所以項目中選擇了 Camunda 工作流引擎。

由於沒有接觸過工作流引擎,所以打算藉此機會詳細記錄一下這個從 0 到 1 到學習過程。

本篇直接從應用開始,通過切實的使用感受來達到由淺入深的效果。

Camunda 官網文檔: https://docs.camunda.org/get-started/spring-boot/project-setup/

網上關於 Camunda 的中文學習資料少之又少,但是可以先學習 Activiti(教程比較多),曲線學習 Camunda。

關於工作流的一些概念和術語就不再本篇的範圍了(網上很多)。

啓動 Camunda

創建一個 SpringBoot 項目除了要用到的 ORM框架、數據庫驅動等等,還要導入 Camunda 相關依賴:

<!-- https://mvnrepository.com/artifact/org.camunda.bpm.springboot/camunda-bpm-spring-boot-starter-webapp -->
<dependency>
    <groupId>org.camunda.bpm.springboot</groupId>
    <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
    <version>3.4.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.camunda.bpm.springboot/camunda-bpm-spring-boot-starter-rest -->
<dependency>
    <groupId>org.camunda.bpm.springboot</groupId>
    <artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
    <version>3.4.4</version>
</dependency>

application.yml 部分配置:

spring:
  application:
    name: camunda-demo
  jackson:
    #設置返回前端的參數爲駝峯的轉換形式
    property-naming-strategy: SNAKE_CASE
    #日期格式化
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
 #數據源配置
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/camunda?serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 1234

mybatis:
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

camunda:
  bpm:
    #配置賬戶密碼來訪問Camunda自帶的管理界面
    admin-user:
      id: admin
      password: admin
      first-name: admin
    filter:
      create: All tasks
    #指定數據庫類型
#    database:
#      type: mysql
    #禁止自動部署resources下面的bpmn文件
    auto-deployment-enabled: false
    #禁止index跳轉到Camunda自帶的管理界面,默認true
#    webapp:
#      index-redirect-enabled: false

啓動應用,訪問 http://localhost:8080 (或者其他端口) 就可以看到管理界面,使用配置的賬戶密碼登錄:

在這裏插入圖片描述

到這裏就算是踏出了重要的第一步!

相關表結構介紹

在成功啓動 Camunda 之後,可以到數據庫中看到其自動創建的 47 張表,之後每條流程實例的相關信息就會存放到這些表中!

在這裏插入圖片描述

act_ge_bytearray 資源(二進制數據)表

列名 類型 長度 小數點 不是null 主鍵 註釋
id_ varchar 64 0 0 TRUE 資源ID
rev_ int4 32 0 -1 版本
name_ varchar 255 0 -1 資源名稱
deployment_id_ varchar 64 0 -1 部署ID
bytes_ bytea 0 0 -1 文件內容
generated_ bool 0 0 -1
tenant_id_ varchar 64 0 -1 租戶ID
type_ int4 32 0 -1 文件類型
create_time_ timestamp 6 0 -1 創建時間
root_proc_inst_id_ varchar 64 0 -1 根流程實例ID
removal_time_ timestamp 6 0 -1 調動時間

act_re_deployment 流程部署表

列名 類型 長度 小數點 不是null 主鍵 註釋
id_ varchar 64 0 0 TRUE 部署ID
name_ varchar 255 0 -1 部署名稱
deploy_time_ timestamp 6 0 -1 部署時間
source_ varchar 255 0 -1 資源
tenant_id_ varchar 64 0 -1 租戶ID

act_re_procdef 流程定義表

列名 類型 長度 小數點 不是null 主鍵 註釋
id_ varchar 64 0 0 TRUE 流程定義ID
rev_ int4 32 0 -1 流程定義版本(同一個流程同一個標識)
category_ varchar 255 0 -1 流程定義分類
name_ varchar 255 0 -1 流程定義名稱
key_ varchar 255 0 0 流程定義KEY
version_ int4 32 0 0 流程定義版本(同一個流程不同的版本)
deployment_id_ varchar 64 0 -1 流程部署ID
resource_name_ varchar 4000 0 -1 資源名稱
dgrm_resource_name_ varchar 4000 0 -1 流程圖資源名稱
has_start_form_key_ bool 0 0 -1 是否包含啓動表單KEY(t:true;f:false)
suspension_state_ int4 32 0 -1 流程定義狀態(激活:1/掛起:2)
tenant_id_ varchar 64 0 -1 租戶ID
version_tag_ varchar 64 0 -1 版本標籤
history_ttl_ int4 32 0 -1
startable_ bool 0 0 0

act_ru_execution 運行時流程實例(執行流)表

類型 長度 小數點 不是null 註釋
id_ varchar 64 0 0 TRUE 執行流ID
rev_ int4 32 0 -1 版本
root_proc_inst_id_ varchar 64 0 -1 根流程實例ID
proc_inst_id_ varchar 64 0 -1 流程實例ID
business_key_ varchar 255 0 -1 業務KEY
parent_id_ varchar 64 0 -1 父ID
proc_def_id_ varchar 64 0 -1 流程定義ID
super_exec_ varchar 64 0 -1
super_case_exec_ varchar 64 0 -1
case_inst_id_ varchar 64 0 -1
act_id_ varchar 255 0 -1 節點定義ID
act_inst_id_ varchar 64 0 -1 節點實例ID
is_active_ bool 0 0 -1 是否可執行狀態
is_concurrent_ bool 0 0 -1
is_scope_ bool 0 0 -1
is_event_scope_ bool 0 0 -1
suspension_state_ int4 32 0 -1 實例狀態(激活:1;掛起:2)
cached_ent_state_ int4 32 0 -1
sequence_counter_ int8 64 0 -1 順序計數器
tenant_id_ varchar 64 0 -1 租戶ID

act_ru_identitylink 流程與身份關係表(執行流)

運行時流程人員表,主要存儲任務節點和參與者的相關信息。還有與其相對的 act_hi_identitylink 歷史流程人員表。

類型 長度 小數點 不是null 註釋
id_ varchar 64 0 0 TRUE 任務參與ID
rev_ int4 32 0 -1 版本
group_id_ varchar 255 0 -1 角色/組ID
type_ varchar 255 0 -1 類型(候選人:candidate;代理人:delegation)
user_id_ varchar 255 0 -1 用戶ID
task_id_ varchar 64 0 -1 任務ID
proc_def_id_ varchar 64 0 -1 流程定義ID
tenant_id_ varchar 64 0 -1 租戶ID

act_ru_task 運行時流程任務(節點)表(執行流)

類型 長度 小數點 不是null 註釋
id_ varchar 64 0 0 TRUE 執行任務ID
rev_ int4 32 0 -1 版本
execution_id_ varchar 64 0 -1 執行ID
proc_inst_id_ varchar 64 0 -1 流程實例ID
proc_def_id_ varchar 64 0 -1 流程定義ID
case_execution_id_ varchar 64 0 -1
case_inst_id_ varchar 64 0 -1
case_def_id_ varchar 64 0 -1
name_ varchar 255 0 -1 執行任務名稱
parent_task_id_ varchar 64 0 -1 父級任務ID
description_ varchar 4000 0 -1 任務描述
task_def_key_ varchar 255 0 -1 任務定義KEY
owner_ varchar 255 0 -1
assignee_ varchar 255 0 -1 簽收人ID
delegation_ varchar 64 0 -1 委託人ID
priority_ int4 32 0 -1 優先權
create_time_ timestamp 6 0 -1 創建時間
due_date_ timestamp 6 0 -1 到期時間
follow_up_date_ timestamp 6 0 -1 跟催時間
suspension_state_ int4 32 0 -1 流程狀態(激活:1;掛起:2)
tenant_id_ varchar 64 0 -1 租戶ID

act_ru_variable 運行時流程參數(變量)表(執行流)

還有與其相對的 act_hi_varinst 歷史變量表。

類型 長度 小數點 不是null 註釋
id_ varchar 64 0 0 TRUE 運行變量ID
rev_ int4 32 0 -1 版本
type_ varchar 255 0 0 變量類型
name_ varchar 255 0 0 變量名稱
execution_id_ varchar 64 0 -1 執行流ID
proc_inst_id_ varchar 64 0 -1 流程實例ID
case_execution_id_ varchar 64 0 -1
case_inst_id_ varchar 64 0 -1
task_id_ varchar 64 0 -1 任務ID
bytearray_id_ varchar 64 0 -1
double_ float8 53 0 -1
long_ int8 64 0 -1
text_ varchar 4000 0 -1
text2_ varchar 4000 0 -1
var_scope_ varchar 64 0 -1
sequence_counter_ int8 64 0 -1 順序計數器
is_concurrent_local_ bool 0 0 -1
tenant_id_ varchar 64 0 -1 租戶ID

act_hi_procinst 流程實例(歷史)表

類型 長度 小數點 不是null 註釋
id_ varchar 64 0 0 TRUE 歷史流程實例ID
proc_inst_id_ varchar 64 0 0 流程實例ID
business_key_ varchar 255 0 -1 業務KEY
proc_def_key_ varchar 255 0 -1 流程定義KEY
proc_def_id_ varchar 64 0 0 流程定義ID
start_time_ timestamp 6 0 0 開始時間
end_time_ timestamp 6 0 -1 結束時間
removal_time_ timestamp 6 0 -1 移除時間
duration_ int8 64 0 -1 持續時間
start_user_id_ varchar 255 0 -1 發起人
start_act_id_ varchar 255 0 -1 發起節點ID
end_act_id_ varchar 255 0 -1 結束節點ID
super_process_instance_id_ varchar 64 0 -1 頂級流程實例ID
root_proc_inst_id_ varchar 64 0 -1 根流程實例ID
super_case_instance_id_ varchar 64 0 -1
case_inst_id_ varchar 64 0 -1
delete_reason_ varchar 4000 0 -1 刪除原因
tenant_id_ varchar 64 0 -1 租戶ID
state_ varchar 255 0 -1 狀態

act_hi_detail 流程明細(歷史)表

類型 長度 小數點 不是null 註釋
id_ varchar 64 0 0 TRUE 歷史流程明細ID
type_ varchar 255 0 0 類型
proc_def_key_ varchar 255 0 -1 流程定義KEY
proc_def_id_ varchar 64 0 -1 流程定義ID
root_proc_inst_id_ varchar 64 0 -1 根流程實例ID
proc_inst_id_ varchar 64 0 -1 流程實例ID
execution_id_ varchar 64 0 -1 執行流ID
case_def_key_ varchar 255 0 -1
case_def_id_ varchar 64 0 -1
case_inst_id_ varchar 64 0 -1
case_execution_id_ varchar 64 0 -1
task_id_ varchar 64 0 -1 任務ID
act_inst_id_ varchar 64 0 -1 節點實例ID
var_inst_id_ varchar 64 0 -1 參數實例ID
name_ varchar 255 0 0 參數名稱
var_type_ varchar 64 0 -1 參數類型
rev_ int4 32 0 -1 版本
time_ timestamp 6 0 0 時間
bytearray_id_ varchar 64 0 -1 流數組ID
double_ float8 53 0 -1
long_ int8 64 0 -1
text_ varchar 4000 0 -1
text2_ varchar 4000 0 -1
sequence_counter_ int8 64 0 -1 順序計數器
tenant_id_ varchar 64 0 -1 租戶ID
operation_id_ varchar 64 0 -1 操作ID
removal_time_ timestamp 6 0 -1 移除時間

act_hi_taskinst 歷史任務實例表

類型 長度 小數點 不是null 註釋
id_ varchar 64 0 0 TRUE 歷史任務實例表ID
task_def_key_ varchar 255 0 -1 任務定義KEY
proc_def_key_ varchar 255 0 -1 流程定義KEY
proc_def_id_ varchar 64 0 -1 流程定義ID
root_proc_inst_id_ varchar 64 0 -1 根流程實例ID
proc_inst_id_ varchar 64 0 -1 流程實例ID
execution_id_ varchar 64 0 -1 執行流ID
case_def_key_ varchar 255 0 -1
case_def_id_ varchar 64 0 -1
case_inst_id_ varchar 64 0 -1
case_execution_id_ varchar 64 0 -1
act_inst_id_ varchar 64 0 -1 節點實例ID
name_ varchar 255 0 -1 任務名稱
parent_task_id_ varchar 64 0 -1 父任務ID
description_ varchar 4000 0 -1 描述
owner_ varchar 255 0 -1
assignee_ varchar 255 0 -1 代理人
start_time_ timestamp 6 0 0 開始時間
end_time_ timestamp 6 0 -1 結束時間
duration_ int8 64 0 -1 持續時間
delete_reason_ varchar 4000 0 -1 刪除原因
priority_ int4 32 0 -1 優先權
due_date_ timestamp 6 0 -1 到期時間
follow_up_date_ timestamp 6 0 -1 跟催日期
tenant_id_ varchar 64 0 -1 租戶ID
removal_time_ timestamp 6 0 -1 移除時間

act_hi_actinst 歷史節點(行爲)表

類型 長度 小數點 不是null 註釋
id_ varchar 64 0 0 TRUE 歷史流程節點實例ID
parent_act_inst_id_ varchar 64 0 -1 父流程節點實例ID
proc_def_key_ varchar 255 0 -1 流程定義KEY
proc_def_id_ varchar 64 0 0 流程定義ID
root_proc_inst_id_ varchar 64 0 -1 根流程實例ID
proc_inst_id_ varchar 64 0 0 流程實例ID
execution_id_ varchar 64 0 0 執行流ID
act_id_ varchar 255 0 0 節點ID
task_id_ varchar 64 0 -1 任務ID
call_proc_inst_id_ varchar 64 0 -1
call_case_inst_id_ varchar 64 0 -1
act_name_ varchar 255 0 -1 節點名稱
act_type_ varchar 255 0 -1 節點類型
assignee_ varchar 64 0 -1 代理人ID
start_time_ timestamp 6 0 0 開始時間
end_time_ timestamp 6 0 -1 結束時間
duration_ int8 64 0 -1 持續時間
act_inst_state_ int4 32 0 -1 節點實例狀態
sequence_counter_ int8 64 0 -1 順序計數器
tenant_id_ varchar 64 0 -1 租戶ID
removal_time_ timestamp 6 0 -1 去除時間

act_hi_attachment 歷史附件表

類型 長度 小數點 不是null 註釋
id_ varchar 64 0 0 TRUE 附件ID
rev_ int4 32 0 -1 版本
user_id_ varchar 255 0 -1 用戶ID
name_ varchar 255 0 -1 附件名稱
description_ varchar 4000 0 -1 附件描述
type_ varchar 255 0 -1 附件類型
task_id_ varchar 64 0 -1 任務ID
root_proc_inst_id_ varchar 64 0 -1 根流程實例ID
proc_inst_id_ varchar 64 0 -1 流程實例ID
url_ varchar 4000 0 -1 附件路徑
content_id_ varchar 64 0 -1 附件內容ID
tenant_id_ varchar 64 0 -1 租戶ID
create_time_ timestamp 6 0 -1 創建時間
removal_time_ timestamp 6 0 -1 移除時間

act_hi_comment 歷史意見表

類型 長度 小數點 不是null 註釋
id_ varchar 64 0 0 TRUE 評論表ID
type_ varchar 255 0 -1 數據類型(任務事件記錄:event;任務評論:comment)
time_ timestamp 6 0 0 數據產生時間
user_id_ varchar 255 0 -1 產生此數據用戶ID
task_id_ varchar 64 0 -1 任務ID
root_proc_inst_id_ varchar 64 0 -1 根流程實例ID
proc_inst_id_ varchar 64 0 -1 流程實例ID
action_ varchar 255 0 -1 該數據的操作標識
message_ varchar 4000 0 -1 該評論(或者事件記錄)數據的信息(文本)
full_msg_ bytea 0 0 -1 該評論(或者事件記錄)數據的信息(流)
tenant_id_ varchar 64 0 -1 租戶ID
removal_time_ timestamp 6 0 -1 移除時間

除此了上述重要的表結構以外,還有很多表 act_ge_property 屬性數據表存儲整個流程引擎級別的數據、 act_hi_detail 歷史詳情表提供歷史變量查詢、 act_id_group 用戶組信息表、 act_id_user 用戶信息表、 act_id_membership 用戶與用戶組對應信息表、 act_ru_job 運行時定時任務數據表 等等。。。礙於篇幅就先只贅述這些開發中較爲常用的表,其他的數據表用到時再去看錶定義即可。

本篇重要的是成功啓動應用,並對 Camunda 相關表有一個初步的印象,之後用到時不至於無從下手。

下一篇會學習到,在本應用的基礎上開發一個最基本 ”流程Demo“ 的過程!

點贊+關注!評論送個人收集的Camunda學習資料+視頻!


菜鳥本菜,不吝賜教,感激不盡!

更多題解源碼和學習筆記:githubCSDNM1ng

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章