Camunda工作流引擎一

实习工作中需要用到工作流引擎,去实现业务审批流的功能模块,由于 Flowable 不支持 MariaDB (重要原因之一),所以项目中选择了 Camunda 工作流引擎。

由于没有接触过工作流引擎,所以打算借此机会详细记录一下这个从 0 到 1 到学习过程。

《Camunda工作流引擎一》
《Camunda工作流引擎二》
《Camunda工作流引擎三》

本篇直接从应用开始,通过切实的使用感受来达到由浅入深的效果。

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_varchar6400TRUE资源ID
rev_int4320-1版本
name_varchar2550-1资源名称
deployment_id_varchar640-1部署ID
bytes_bytea00-1文件内容
generated_bool00-1
tenant_id_varchar640-1租户ID
type_int4320-1文件类型
create_time_timestamp60-1创建时间
root_proc_inst_id_varchar640-1根流程实例ID
removal_time_timestamp60-1调动时间

act_re_deployment 流程部署表

列名类型长度小数点不是null主键注释
id_varchar6400TRUE部署ID
name_varchar2550-1部署名称
deploy_time_timestamp60-1部署时间
source_varchar2550-1资源
tenant_id_varchar640-1租户ID

act_re_procdef 流程定义表

列名类型长度小数点不是null主键注释
id_varchar6400TRUE流程定义ID
rev_int4320-1流程定义版本(同一个流程同一个标识)
category_varchar2550-1流程定义分类
name_varchar2550-1流程定义名称
key_varchar25500流程定义KEY
version_int43200流程定义版本(同一个流程不同的版本)
deployment_id_varchar640-1流程部署ID
resource_name_varchar40000-1资源名称
dgrm_resource_name_varchar40000-1流程图资源名称
has_start_form_key_bool00-1是否包含启动表单KEY(t:true;f:false)
suspension_state_int4320-1流程定义状态(激活:1/挂起:2)
tenant_id_varchar640-1租户ID
version_tag_varchar640-1版本标签
history_ttl_int4320-1
startable_bool000

act_ru_execution 运行时流程实例(执行流)表

类型长度小数点不是null注释
id_varchar6400TRUE执行流ID
rev_int4320-1版本
root_proc_inst_id_varchar640-1根流程实例ID
proc_inst_id_varchar640-1流程实例ID
business_key_varchar2550-1业务KEY
parent_id_varchar640-1父ID
proc_def_id_varchar640-1流程定义ID
super_exec_varchar640-1
super_case_exec_varchar640-1
case_inst_id_varchar640-1
act_id_varchar2550-1节点定义ID
act_inst_id_varchar640-1节点实例ID
is_active_bool00-1是否可执行状态
is_concurrent_bool00-1
is_scope_bool00-1
is_event_scope_bool00-1
suspension_state_int4320-1实例状态(激活:1;挂起:2)
cached_ent_state_int4320-1
sequence_counter_int8640-1顺序计数器
tenant_id_varchar640-1租户ID

act_ru_identitylink 流程与身份关系表(执行流)

运行时流程人员表,主要存储任务节点和参与者的相关信息。还有与其相对的 act_hi_identitylink 历史流程人员表。

类型长度小数点不是null注释
id_varchar6400TRUE任务参与ID
rev_int4320-1版本
group_id_varchar2550-1角色/组ID
type_varchar2550-1类型(候选人:candidate;代理人:delegation)
user_id_varchar2550-1用户ID
task_id_varchar640-1任务ID
proc_def_id_varchar640-1流程定义ID
tenant_id_varchar640-1租户ID

act_ru_task 运行时流程任务(节点)表(执行流)

类型长度小数点不是null注释
id_varchar6400TRUE执行任务ID
rev_int4320-1版本
execution_id_varchar640-1执行ID
proc_inst_id_varchar640-1流程实例ID
proc_def_id_varchar640-1流程定义ID
case_execution_id_varchar640-1
case_inst_id_varchar640-1
case_def_id_varchar640-1
name_varchar2550-1执行任务名称
parent_task_id_varchar640-1父级任务ID
description_varchar40000-1任务描述
task_def_key_varchar2550-1任务定义KEY
owner_varchar2550-1
assignee_varchar2550-1签收人ID
delegation_varchar640-1委托人ID
priority_int4320-1优先权
create_time_timestamp60-1创建时间
due_date_timestamp60-1到期时间
follow_up_date_timestamp60-1跟催时间
suspension_state_int4320-1流程状态(激活:1;挂起:2)
tenant_id_varchar640-1租户ID

act_ru_variable 运行时流程参数(变量)表(执行流)

还有与其相对的 act_hi_varinst 历史变量表。

类型长度小数点不是null注释
id_varchar6400TRUE运行变量ID
rev_int4320-1版本
type_varchar25500变量类型
name_varchar25500变量名称
execution_id_varchar640-1执行流ID
proc_inst_id_varchar640-1流程实例ID
case_execution_id_varchar640-1
case_inst_id_varchar640-1
task_id_varchar640-1任务ID
bytearray_id_varchar640-1
double_float8530-1
long_int8640-1
text_varchar40000-1
text2_varchar40000-1
var_scope_varchar640-1
sequence_counter_int8640-1顺序计数器
is_concurrent_local_bool00-1
tenant_id_varchar640-1租户ID

act_hi_procinst 流程实例(历史)表

类型长度小数点不是null注释
id_varchar6400TRUE历史流程实例ID
proc_inst_id_varchar6400流程实例ID
business_key_varchar2550-1业务KEY
proc_def_key_varchar2550-1流程定义KEY
proc_def_id_varchar6400流程定义ID
start_time_timestamp600开始时间
end_time_timestamp60-1结束时间
removal_time_timestamp60-1移除时间
duration_int8640-1持续时间
start_user_id_varchar2550-1发起人
start_act_id_varchar2550-1发起节点ID
end_act_id_varchar2550-1结束节点ID
super_process_instance_id_varchar640-1顶级流程实例ID
root_proc_inst_id_varchar640-1根流程实例ID
super_case_instance_id_varchar640-1
case_inst_id_varchar640-1
delete_reason_varchar40000-1删除原因
tenant_id_varchar640-1租户ID
state_varchar2550-1状态

act_hi_detail 流程明细(历史)表

类型长度小数点不是null注释
id_varchar6400TRUE历史流程明细ID
type_varchar25500类型
proc_def_key_varchar2550-1流程定义KEY
proc_def_id_varchar640-1流程定义ID
root_proc_inst_id_varchar640-1根流程实例ID
proc_inst_id_varchar640-1流程实例ID
execution_id_varchar640-1执行流ID
case_def_key_varchar2550-1
case_def_id_varchar640-1
case_inst_id_varchar640-1
case_execution_id_varchar640-1
task_id_varchar640-1任务ID
act_inst_id_varchar640-1节点实例ID
var_inst_id_varchar640-1参数实例ID
name_varchar25500参数名称
var_type_varchar640-1参数类型
rev_int4320-1版本
time_timestamp600时间
bytearray_id_varchar640-1流数组ID
double_float8530-1
long_int8640-1
text_varchar40000-1
text2_varchar40000-1
sequence_counter_int8640-1顺序计数器
tenant_id_varchar640-1租户ID
operation_id_varchar640-1操作ID
removal_time_timestamp60-1移除时间

act_hi_taskinst 历史任务实例表

类型长度小数点不是null注释
id_varchar6400TRUE历史任务实例表ID
task_def_key_varchar2550-1任务定义KEY
proc_def_key_varchar2550-1流程定义KEY
proc_def_id_varchar640-1流程定义ID
root_proc_inst_id_varchar640-1根流程实例ID
proc_inst_id_varchar640-1流程实例ID
execution_id_varchar640-1执行流ID
case_def_key_varchar2550-1
case_def_id_varchar640-1
case_inst_id_varchar640-1
case_execution_id_varchar640-1
act_inst_id_varchar640-1节点实例ID
name_varchar2550-1任务名称
parent_task_id_varchar640-1父任务ID
description_varchar40000-1描述
owner_varchar2550-1
assignee_varchar2550-1代理人
start_time_timestamp600开始时间
end_time_timestamp60-1结束时间
duration_int8640-1持续时间
delete_reason_varchar40000-1删除原因
priority_int4320-1优先权
due_date_timestamp60-1到期时间
follow_up_date_timestamp60-1跟催日期
tenant_id_varchar640-1租户ID
removal_time_timestamp60-1移除时间

act_hi_actinst 历史节点(行为)表

类型长度小数点不是null注释
id_varchar6400TRUE历史流程节点实例ID
parent_act_inst_id_varchar640-1父流程节点实例ID
proc_def_key_varchar2550-1流程定义KEY
proc_def_id_varchar6400流程定义ID
root_proc_inst_id_varchar640-1根流程实例ID
proc_inst_id_varchar6400流程实例ID
execution_id_varchar6400执行流ID
act_id_varchar25500节点ID
task_id_varchar640-1任务ID
call_proc_inst_id_varchar640-1
call_case_inst_id_varchar640-1
act_name_varchar2550-1节点名称
act_type_varchar2550-1节点类型
assignee_varchar640-1代理人ID
start_time_timestamp600开始时间
end_time_timestamp60-1结束时间
duration_int8640-1持续时间
act_inst_state_int4320-1节点实例状态
sequence_counter_int8640-1顺序计数器
tenant_id_varchar640-1租户ID
removal_time_timestamp60-1去除时间

act_hi_attachment 历史附件表

类型长度小数点不是null注释
id_varchar6400TRUE附件ID
rev_int4320-1版本
user_id_varchar2550-1用户ID
name_varchar2550-1附件名称
description_varchar40000-1附件描述
type_varchar2550-1附件类型
task_id_varchar640-1任务ID
root_proc_inst_id_varchar640-1根流程实例ID
proc_inst_id_varchar640-1流程实例ID
url_varchar40000-1附件路径
content_id_varchar640-1附件内容ID
tenant_id_varchar640-1租户ID
create_time_timestamp60-1创建时间
removal_time_timestamp60-1移除时间

act_hi_comment 历史意见表

类型长度小数点不是null注释
id_varchar6400TRUE评论表ID
type_varchar2550-1数据类型(任务事件记录:event;任务评论:comment)
time_timestamp600数据产生时间
user_id_varchar2550-1产生此数据用户ID
task_id_varchar640-1任务ID
root_proc_inst_id_varchar640-1根流程实例ID
proc_inst_id_varchar640-1流程实例ID
action_varchar2550-1该数据的操作标识
message_varchar40000-1该评论(或者事件记录)数据的信息(文本)
full_msg_bytea00-1该评论(或者事件记录)数据的信息(流)
tenant_id_varchar640-1租户ID
removal_time_timestamp60-1移除时间

除此了上述重要的表结构以外,还有很多表 act_ge_property 属性数据表存储整个流程引擎级别的数据、 act_hi_detail 历史详情表提供历史变量查询、 act_id_group 用户组信息表、 act_id_user 用户信息表、 act_id_membership 用户与用户组对应信息表、 act_ru_job 运行时定时任务数据表 等等。。。碍于篇幅就先只赘述这些开发中较为常用的表,其他的数据表用到时再去看表定义即可。

本篇重要的是成功启动应用,并对 Camunda 相关表有一个初步的印象,之后用到时不至于无从下手。

下一篇会学习到,在本应用的基础上开发一个最基本 ”流程Demo“ 的过程!

点赞+关注!评论送个人收集的Camunda学习资料+视频!


菜鸟本菜,不吝赐教,感激不尽!

更多题解源码和学习笔记:githubCSDNM1ng

  • 22
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值