工作流引擎Camunda

所谓工作流实际上就是对任务的编排调度。可以简单理解为工作+流,工作体现为业务系统的一个个任务,流就是Camnuda应该负责的任务编排调度。

一,什么是Camunda?

Camunda是一个开源的工作流引擎和业务流程管理平台,基于Java和Spring框架构建。它支持BPMN 2.0标准,允许用户通过图形界面或编程方式定义复杂的工作流和业务流程。Camunda可以嵌入到任何Java应用程序中,也可以作为独立的服务运行,为开发者提供了极大的灵活性。

1、什么是工作流

工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。指在组织中,多个任务、活动或过程之间的顺序和控制流。这些任务通常涉及多个参与者、系统或部门,工作流的目标是将复杂的业务逻辑分解为多个可管理的逻辑段,并统一控制这些逻辑段的执行条件、执行顺序以及相互通信,从而实现业务逻辑的解耦与优化。这种方式不仅提高了业务流程的灵活性和可维护性,还促进了各个环节之间的协同工作。

2、为什么要使用工作流

提高效率:通过自动化和标准化重复性任务,减少人工干预,提升整体工作效率。
增强透明度:工作流提供清晰的任务分配和进度跟踪,使团队成员能够实时了解工作状态,促进协作。
降低错误率:通过预定义的流程和自动化步骤,减少人为错误,提高数据准确性。
灵活性和适应性:可以根据业务需求快速调整和优化流程,适应变化的市场环境。
优化资源管理:通过有效分配和调度资源,确保任务按时完成,提高资源利用率。
监控和分析:提供实时监控和数据分析功能,帮助识别瓶颈和改进机会,持续优化业务流程。
合规性和标准化:确保业务流程符合行业标准和法规要求,提高合规性,减少风险。

二,Camunda应用架构

Camunda是一个基于 Java 的分布式应用架构,主要包括以下几个核心组件:

1、Camunda BPM 引擎

核心功能:执行 BPMN 2.0 流程、CMMN 案例和 DMN 决策模型。
高性能:经过优化,支持高并发和复杂业务逻辑的执行。
集成:可嵌入到 Java 应用中,或通过 REST API 与外部系统交互。

2、建模工具

Camunda Modeler:图形化工具,用于设计和编辑 BPMN、CMMN 和 DMN 模型,便于业务用户进行流程建模。

3、用户任务管理

Tasklist:Web 应用,用户可以在此管理和处理任务,查看分配的任务并通过表单完成。

4、监控与分析工具

Cockpit:用于实时监控流程执行,提供流程实例状态、性能指标和历史数据分析,帮助识别瓶颈和优化流程。

5、REST API

接口服务:提供全面的 RESTful API,支持流程的启动、任务查询、用户管理等操作,便于与其他系统集成。

6、外部任务

任务处理:支持外部任务模式,将任务分配给外部服务或微服务,提高灵活性和可扩展性。

7、事件处理

事件驱动:支持处理多种事件(如消息、信号、定时器),实现复杂的事件驱动工作流。

8、多租户支持

多租户架构:支持在同一引擎实例中管理多个租户,确保数据隔离和安全性,适合 SaaS 解决方案。

9、前端用户界面

Cockpit:流程监控和管理界面。

Tasklist:任务管理和审批界面。

Admin:系统管理和配置界面。

三、camunda使用实例

本实例中我们实现以下功能:1.工作流程设计 2.工作流中包含用户任务和服务任务 3.工作流中使用网关  4.工作流和外部服务结合实现任务执行前提醒任务执行者 5.实现工作流实例的启动  6.实现工作流实例启动时设置各个任务的执行人 7.实现代办任务获取和已办任务获取。

项目环境:JDK(openJDK17)、SpringBoot3.2.2、Camunda7.20.0

1.下载camunda流程设计器

下载地址:

https://github.com/camunda/camunda-modeler/releases
https://camunda.com/download/modeler

2个地址都可以下载流程设计器,github上可以下载历史版本。

流程设计器下载、解压后可直接使用。

2.创建camunda流程引擎服务

自动创建服务地址:

https://start.camunda.com/

3.使用流程设计器设计业务流程

流程设计器选择匹配的camunda版本。

流程开始

新建运单任务

货物入仓任务

排他网关

分支条件1

分支条件2

货物收运任务

流程结束

4.camunda引擎项目结构及代码

项目结构

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>infosky</groupId>
  <artifactId>camnuda-engine</artifactId>
  <version>1.0</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>3.2.2</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <dependency>
        <groupId>org.camunda.bpm</groupId>
        <artifactId>camunda-bom</artifactId>
        <version>7.20.0</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>org.camunda.bpm.springboot</groupId>
      <artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
    </dependency>

    <dependency>
      <groupId>org.camunda.bpm.springboot</groupId>
      <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
    </dependency>

    <dependency>
      <groupId>org.camunda.bpm</groupId>
      <artifactId>camunda-engine-plugin-spin</artifactId>
    </dependency>

    <dependency>
      <groupId>org.camunda.spin</groupId>
      <artifactId>camunda-spin-dataformat-all</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- mysql驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.27</version>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>3.2.2</version>
      </plugin>
    </plugins>
  </build>

</project>

awb.bpmn(流程设计器生成bpmn文件)

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_0e4v2tp" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.31.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.20.0">
  <bpmn:process id="Process_awb" name="运动操作流程" isExecutable="true" camunda:historyTimeToLive="9999">
    <bpmn:startEvent id="StartEvent_start" name="运单流程开始">
      <bpmn:outgoing>Flow_1qt4f8f</bpmn:outgoing>
    </bpmn:startEvent>
    <bpmn:sequenceFlow id="Flow_1qt4f8f" sourceRef="StartEvent_start" targetRef="Activity_newawb" />
    <bpmn:userTask id="Activity_newawb" name="新建运单" camunda:assignee="${user1}">
      <bpmn:extensionElements>
        <camunda:executionListener class="infosky.listener.NewawbStartListener" event="start" />
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_1qt4f8f</bpmn:incoming>
      <bpmn:outgoing>Flow_0qeyqv5</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:sequenceFlow id="Flow_0qeyqv5" sourceRef="Activity_newawb" targetRef="Activity_foh" />
    <bpmn:serviceTask id="Activity_foh" name="货物入仓" camunda:class="infosky.service.FohService">
      <bpmn:incoming>Flow_0qeyqv5</bpmn:incoming>
      <bpmn:outgoing>Flow_123an0t</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:userTask id="Activity_rcs" name="货物收运" camunda:assignee="${user2}">
      <bpmn:incoming>Flow_0mjgke0</bpmn:incoming>
      <bpmn:outgoing>Flow_0h3orhn</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:intermediateThrowEvent id="Event_end" name="运单流程结束">
      <bpmn:incoming>Flow_0h3orhn</bpmn:incoming>
      <bpmn:incoming>Flow_025l9y9</bpmn:incoming>
    </bpmn:intermediateThrowEvent>
    <bpmn:sequenceFlow id="Flow_0h3orhn" sourceRef="Activity_rcs" targetRef="Event_end" />
    <bpmn:exclusiveGateway id="Gateway_05zzut9">
      <bpmn:incoming>Flow_123an0t</bpmn:incoming>
      <bpmn:outgoing>Flow_0mjgke0</bpmn:outgoing>
      <bpmn:outgoing>Flow_025l9y9</bpmn:outgoing>
    </bpmn:exclusiveGateway>
    <bpmn:sequenceFlow id="Flow_123an0t" sourceRef="Activity_foh" targetRef="Gateway_05zzut9" />
    <bpmn:sequenceFlow id="Flow_0mjgke0" name="aaa=1" sourceRef="Gateway_05zzut9" targetRef="Activity_rcs">
      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${aaa==1}</bpmn:conditionExpression>
    </bpmn:sequenceFlow>
    <bpmn:sequenceFlow id="Flow_025l9y9" name="aaa=0" sourceRef="Gateway_05zzut9" targetRef="Event_end">
      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${aaa==0}</bpmn:conditionExpression>
    </bpmn:sequenceFlow>
  </bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_awb">
      <bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="StartEvent_start">
        <dc:Bounds x="182" y="172" width="36" height="36" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="167" y="215" width="67" height="14" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_1bukf0i_di" bpmnElement="Activity_newawb">
        <dc:Bounds x="270" y="150" width="100" height="80" />
        <bpmndi:BPMNLabel />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_1126tpp_di" bpmnElement="Activity_foh">
        <dc:Bounds x="430" y="150" width="100" height="80" />
        <bpmndi:BPMNLabel />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_009o97b_di" bpmnElement="Activity_rcs">
        <dc:Bounds x="710" y="150" width="100" height="80" />
        <bpmndi:BPMNLabel />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Event_1kmof9b_di" bpmnElement="Event_end">
        <dc:Bounds x="872" y="172" width="36" height="36" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="857" y="215" width="67" height="14" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Gateway_05zzut9_di" bpmnElement="Gateway_05zzut9" isMarkerVisible="true">
        <dc:Bounds x="595" y="165" width="50" height="50" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_1qt4f8f_di" bpmnElement="Flow_1qt4f8f">
        <di:waypoint x="218" y="190" />
        <di:waypoint x="270" y="190" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_0qeyqv5_di" bpmnElement="Flow_0qeyqv5">
        <di:waypoint x="370" y="190" />
        <di:waypoint x="430" y="190" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_0h3orhn_di" bpmnElement="Flow_0h3orhn">
        <di:waypoint x="810" y="190" />
        <di:waypoint x="872" y="190" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_123an0t_di" bpmnElement="Flow_123an0t">
        <di:waypoint x="530" y="190" />
        <di:waypoint x="595" y="190" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_0mjgke0_di" bpmnElement="Flow_0mjgke0">
        <di:waypoint x="645" y="190" />
        <di:waypoint x="710" y="190" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="662" y="172" width="31" height="14" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_025l9y9_di" bpmnElement="Flow_025l9y9">
        <di:waypoint x="620" y="165" />
        <di:waypoint x="620" y="80" />
        <di:waypoint x="890" y="80" />
        <di:waypoint x="890" y="172" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="740" y="62" width="31" height="14" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

application.yaml

server:
  port: 9999

spring:
  datasource:
    url: jdbc:mysql://172.20.220.114:3306/lt?nullDatabaseMeansCurrent=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
    username: aaaaa
    password: bbbbbbbbb
    driverClassName: com.mysql.cj.jdbc.Driver

camunda:
  bpm:
    database:
      type: mysql
    auto-deployment-enabled: false
    admin-user:
      id: demo
      password: demo

Application.java

package infosky;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * springboot启动类
 */
@SpringBootApplication
public class Application {
  static Logger logger = LoggerFactory.getLogger(Application.class);
  public static void main(String... args) {
    try {
      SpringApplication.run(Application.class, args);
      logger.info("★★★★★★★★★★★★★★★★★★★★启动正常★★★★★★★★★★★★★★★★★★★★");
    } catch (Exception e) {
      logger.error("■■■■■■■■■■■■■■■■■■启动异常", e);
    }
  }
}
FlowController.java
package infosky.controller;

import org.camunda.bpm.engine.HistoryService;
import org.camunda.bpm.engine.RepositoryService;
import org.camunda.bpm.engine.RuntimeService;
import org.camunda.bpm.engine.TaskService;
import org.camunda.bpm.engine.history.HistoricTaskInstance;
import org.camunda.bpm.engine.repository.Deployment;
import org.camunda.bpm.engine.runtime.ProcessInstance;
import org.camunda.bpm.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * camunda流程
 */
@RestController
@RequestMapping("/flow")
public class FlowController {
    @Autowired
    private RepositoryService repositoryService;
    @Autowired
    private RuntimeService runtimeService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private HistoryService historyService;

    /**
     * 部署流程
     * @return
     */
    @RequestMapping("/deploy")
    public String deploy(){
        Deployment dm = repositoryService.createDeployment()
                .name("运单流程")                        //定义部署文件的名称
                .addClasspathResource("bpmn/awb.bpmn") //绑定需要部署的流程文件
                .deploy();                                //部署流程
        return dm.getName() + "|" + dm.getId();
    }

    /**
     * 启动流程
     */
    @RequestMapping("/startFlow")
    public String startFlow(){
        //定义map集合,存储相关流程的变量信息
        Map<String,Object> map = new HashMap<>();
        map.put("user1","wangwu");
        map.put("user2","lisi");
        //启动流程
        //  启动流程可以根据id或者key,其中id是唯一的它由3部分组成(流程定义的key:版本号:自动生成的id)
        //    id例=>   Process_awb:3:d9afa57b-dfbb-11ef-818c-4e5f7046682e
        //    key例=>  Process_awb  ■key对应的流程定义不唯一,同一个key的流程定义可以有多个版本。
        //  流程启动时可指定key和对应的版本 例=>runtimeService.startProcessInstanceByKey("Process_awb","3");
        //  流程启动时也可只指定key,此时默认启动该key的最新版本 例=>runtimeService.startProcessInstanceByKey("Process_awb");
        //  根据id启动流程 例=>runtimeService.startProcessInstanceById("Process_awb:3:d9afa57b-dfbb-11ef-818c-4e5f7046682e");
        //  以上指的id和key及版本存储在表[ACT_RE_PROCDEF]  另外,此处的key是在流程设计器中的[流程ID]
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process_awb",map);

        //返回流程实例id
        return processInstance.getId();
    }

    @RequestMapping("/completeTask")
    public void completeTask(){
        //获取任务 可根据流程实例id或者taskid,对应表[ACT_RU_TASK]
        //  ■任务执行完后将清除[ACT_RU_TASK]表中对应的task数据
        Task task = taskService.createTaskQuery()
                .processInstanceId("c2861623-e044-11ef-aa57-4e5f7046682e")
//                .taskId("6db24541-dfbc-11ef-98b5-4e5f7046682e")
                .singleResult();

        //判断任务是否存在
        if(task != null){
            System.out.println("==================");
            //完成任务   参数:taskID
            taskService.complete(task.getId());
        }
    }

    /**
     * 查询任务(代办)
     *
     *  流程定义ID:processDefinition =>流程部署时产生的ID,一个流程部署多次每次都会产生一个ID
     *  流程实例ID:processInstance   =>启动流程实例时产生的实例ID
     * @return
     */
    @RequestMapping("/queryTaskByHandle")
    public void queryTaskByHandle(){
        List<Task> list = taskService.createTaskQuery()
                .taskAssignee("lisi")
                .list();
        for (Task task : list) {
            System.out.println("#############:" + task.getId());
        }
    }

    /**
     * 查询已完成任务
     * [ACT_HI_TASKINST]
     */
    @RequestMapping("/queryTaskByHistory")
    public void queryTaskByHistory(){
        List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
                .taskAssignee("wangwu")
                .finished()
                .list();
        for (HistoricTaskInstance hti : list) {
            System.out.println("#############:" + hti.getProcessDefinitionKey() + "|" + hti.getName() + "|" + hti.getStartTime() + "|" + hti.getEndTime());
        }
    }
}
NewawbStartListener.java
package infosky.listener;

import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.ExecutionListener;
import org.springframework.stereotype.Component;

/**
 * 监听器
 *   用于给对应处理人发送消息
 *   可将消息存储到DB中或者发送到MQ中
 */
@Component
public class NewawbStartListener implements ExecutionListener {
    @Override
    public void notify(DelegateExecution delegateExecution) throws Exception {
        Object user1 = delegateExecution.getVariable("user1");
        System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&:" + user1);
    }
}
FohService.java
package infosky.service;

import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Service;

/**
 * 货物入仓处理
 */
@Service("fohService")
public class FohService implements JavaDelegate {
    @Override
    public void execute(DelegateExecution delegateExecution) throws Exception {
        //处理完成后设置网关变量
        delegateExecution.setVariable("aaa",1);
        System.out.println("$$$$$$$$$$$$$$$$$完成任务");
    }
}

5.项目启动后会自动将camunda需要的表生成到对应的数据库中(共49张表)

6.部署流程

将流程设计器中导出的流程文件(awb.bpmn),复制到项目的bpmn文件夹下

启动项目,执行/flow/deploy,部署对应流程。

7.启动流程

8.执行新建运单任务

9.执行货物收运任务

任务完成后,task表中删除对应的记录。

以上处理中在流程启动时设置了变量user1,user2。在执行新建运单任务前,向执行人发送信息这里用监听器[NewawbStartListener]中方法[notify]模拟实现消息发送。在任务货物入仓中设置流程执行变量aaa的值,从而控制网关的执行方向。代办任务和已完成任务在FlowController.java中均已实现,具体可参考代码。

附1:Camunda7.20.0表定义

No表物理名表逻辑名说明
1ACT_GE_BYTEARRAY通用的流程定义和流程资源一般数据
2ACT_GE_PROPERTY系统相关属性一般数据
3ACT_RE_DEPLOYMENT部署单元信息流程定义表
4ACT_RE_PROCDEF已部署的流程定义流程定义表
5ACT_RU_EXECUTION运行时流程执行实例运行实例表
6ACT_RU_TASK运行时任务运行实例表
7ACT_RU_VARIABLE运行时变量表运行实例表
8ACT_RU_IDENTITYLINK运行实例表
9ACT_HI_PROCINST历史的流程实例流程历史记录
10ACT_HI_TASKINST历史的任务实例流程历史记录 ■只记录UserTask相关内容
11ACT_HI_ACTINST历史活动实例流程历史记录
12ACT_HI_DETAIL流程实例执行过程中的变量详情记录流程历史记录
13ACT_HI_IDENTITYLINK历史流程运行过程中用户关系流程历史记录
14ACT_HI_VARINST历史变量实例表流程历史记录
ACT_GE_BYTEARRAY
ID_二进制数据的唯一标识符。
REV_版本号。
NAME_二进制数据的名称。
DEPLOYMENT_ID_部署ID。
BYTES_二进制数据内容。
GENERATED_是否自动生成。
TENANT_ID_租户ID。
TYPE_二进制数据的类型。1:表示存储的是流程定义的资源文件(如 BPMN 文件、DMN 文件等)。
CREATE_TIME_创建时间
ROOT_PROC_INST_ID_该字段表示与当前二进制数据关联的根流程实例 ID。
REMOVAL_TIME_表示数据的清理时间。
ACT_GE_PROPERTY
NAME_属性名称。
VALUE_属性值。
REV_版本号。
ACT_RE_DEPLOYMENT
ID_部署的唯一标识符。
NAME_部署的名称。
DEPLOY_TIME_部署时间。
SOURCE_部署来源。
TENANT_ID_租户ID,用于多租户环境。
ACT_RE_PROCDEF
ID_流程定义的唯一标识符。
REV_版本号
CATEGORY_流程定义的分类。
NAME_流程定义的名称。
KEY_流程定义的键。
VERSION_流程定义的版本。
DEPLOYMENT_ID_关联的部署ID。
RESOURCE_NAME_资源文件名(如BPMN文件)。
DGRM_RESOURCE_NAME_流程图资源文件名(如图片)。
HAS_START_FORM_KEY_是否有启动表单键。
SUSPENSION_STATE_挂起状态(1:激活,2:挂起)。
TENANT_ID_租户ID。
VERSION_TAG_流程版本标签
HISTORY_TTL_流程实例的存活时间。单位天
STARTABLE_是否可启动  0:不可  1:可
ACT_RU_EXECUTION
ID_执行流的唯一标识符。
REV_版本号,用于乐观锁。
ROOT_PROC_INST_ID_当前执行流所属的根流程实例 ID。如果当前执行流是一个子流程或嵌套流程的一部分,ROOT_PROC_INST_ID_ 指向最顶层的流程实例 ID。如果当前执行流本身就是根流程实例,则该字段的值与 PROC_INST_ID_(流程实例 ID)相同。
PROC_INST_ID_流程实例ID。
BUSINESS_KEY_业务键。
PARENT_ID_父执行流ID。
PROC_DEF_ID_流程定义ID。
SUPER_EXEC_上级执行流ID。
SUPER_CASE_EXEC_表示当前执行流是否是一个超级案例执行流
CASE_INST_ID_该字段表示当前执行流关联的案例实例 ID。
ACT_ID_当前活动的ID。
ACT_INST_ID_该字段表示当前执行流所在的活动实例 ID。
IS_ACTIVE_是否激活。
IS_CONCURRENT_是否并发。
IS_SCOPE_是否作用域。
IS_EVENT_SCOPE_是否事件作用域。
SUSPENSION_STATE_挂起状态。
CACHED_ENT_STATE_缓存的实体状态。
CACHED_ENT_STATE_该字段表示当前执行流的缓存实体状态。具体的状态值由 Camunda 内部使用,开发者通常不需要直接关注。
SEQUENCE_COUNTER_该字段表示当前执行流的序列计数器。该字段主要用于 Camunda 内部的事件处理和顺序控制,开发者通常不需要直接使用。
TENANT_ID_租户ID。
ACT_RU_TASK
ID_任务的唯一标识符。
REV_版本号。
EXECUTION_ID_执行流ID。
PROC_INST_ID_流程实例ID。
PROC_DEF_ID_流程定义ID。
CASE_EXECUTION_ID_表示与当前任务关联的案例执行流 ID。
CASE_INST_ID_表示与当前任务关联的案例实例 ID。
CASE_DEF_ID_表示与当前任务关联的案例定义 ID。
NAME_任务名称。
PARENT_TASK_ID_父任务ID。
DESCRIPTION_任务描述。
TASK_DEF_KEY_任务定义键。
OWNER_任务所有者。
ASSIGNEE_任务分配者。
DELEGATION_委托状态。
PRIORITY_任务优先级。
CREATE_TIME_任务创建时间。
LAST_UPDATED_该字段表示任务的最后更新时间。每当任务的状态或属性发生变化时(例如任务被分配、完成或更新),该字段会自动更新为当前时间。
DUE_DATE_任务到期时间。
FOLLOW_UP_DATE_表示任务的跟进日期。跟进日期是一个可选字段,用于设置任务的后续处理时间。例如,可以将任务标记为需要在某个特定日期之前处理。如果任务没有设置跟进日期,则该字段为 NULL。
SUSPENSION_STATE_挂起状态。
TENANT_ID_租户ID。
ACT_RU_VARIABLE
ID_变量的唯一标识符。
REV_版本号。
TYPE_变量类型。
NAME_变量名称。
EXECUTION_ID_执行流ID。
PROC_INST_ID_流程实例ID。
PROC_DEF_ID_流程定义ID。
CASE_EXECUTION_ID_案例执行ID。
CASE_INST_ID_案例实例ID。
TASK_ID_任务ID。
BATCH_ID_批处理ID。
BYTEARRAY_ID_二进制数据ID。
DOUBLE_双精度浮点数值。
LONG_长整型值。
TEXT_文本值。
TEXT2_额外的文本值。
VAR_SCOPE_变量作用域。此字段表示变量的作用域范围。在Camunda中,变量可以定义在流程实例级别、任务级别或执行级别。VAR_SCOPE_字段的值将指示该变量属于哪个级别的作用域。
SEQUENCE_COUNTER_序列计数器。
IS_CONCURRENT_LOCAL_是否为并发本地变量。
TENANT_ID_租户ID。
ACT_HI_PROCINST
ID_流程实例的唯一标识符。
PROC_INST_ID_流程实例ID。
BUSINESS_KEY_业务键。
PROC_DEF_ID_流程定义ID。
START_TIME_流程实例开始时间。
END_TIME_流程实例结束时间。
DURATION_流程实例持续时间。
START_USER_ID_启动流程实例的用户ID。
START_ACT_ID_启动活动的ID。
END_ACT_ID_结束活动的ID。
SUPER_PROCESS_INSTANCE_ID_上级流程实例ID。
ROOT_PROC_INST_ID_根流程实例ID。
SUPER_CASE_INSTANCE_ID_上级案例实例ID。
CASE_INST_ID_案例实例ID。注意:在BPMN流程中,如果流程实例不是案例实例,则此字段可能为空或不适用。
DELETE_REASON_删除原因。
TENANT_ID_租户ID。
STATE_状态。表示流程实例的当前状态。在Camunda中,流程实例可以处于多种状态,如“运行中”(表示流程实例正在执行)、“已完成”(表示流程实例已成功结束)、“已挂起”(表示流程实例已被暂停执行)等。
ACT_HI_TASKINST
ID_任务实例的唯一标识符。
TASK_DEF_KEY_任务定义键。
PROC_DEF_ID_流程定义ID。
ROOT_PROC_INST_ID_根流程实例ID。
PROC_INST_ID_流程实例ID。
EXECUTION_ID_执行流ID。
CASE_DEF_KEY_案例定义键。
CASE_DEF_ID_案例定义ID。
CASE_INST_ID_案例实例ID。
CASE_EXECUTION_ID_案例执行ID。
ACT_INST_ID_活动实例ID。
NAME_任务名称。
PARENT_TASK_ID_父任务ID。
DESCRIPTION_任务描述。
OWNER_任务所有者。
ASSIGNEE_任务分配者。
START_TIME_任务开始时间。
END_TIME_任务结束时间。
DURATION_任务持续时间。
DELETE_REASON_删除原因。
PRIORITY_任务优先级。
DUE_DATE_任务到期时间。
FOLLOW_UP_DATE_后续日期。它表示任务实例的后续处理日期或时间。在某些情况下,任务可能需要延迟处理,此字段用于记录延迟处理的日期或时间。
TENANT_ID_租户ID。
REMOVAL_TIME_任务实例的预计删除时间。
ACT_HI_ACTINST
ID_唯一标识符。
PARENT_ACT_INST_ID_父活动实例ID。
PROC_DEF_KEY_流程定义的关键字(Key),即流程定义的唯一标识。
PROC_DEF_ID_流程定义ID。
ROOT_PROC_INST_ID_根流程实例 ID。
PROC_INST_ID_流程实例ID。
EXECUTION_ID_当前活动实例所属的执行流 ID。
ACT_ID_活动的 ID,即流程定义中活动的唯一标识(例如 BPMN 文件中定义的 id)。
TASK_ID_任务ID。
CALL_PROC_INST_ID_被调用流程实例ID。
CALL_CASE_INST_ID_如果当前活动是一个调用案例(Call Case),则该字段存储被调用案例实例的 ID。
ACT_NAME_活动的名称(例如 BPMN 文件中定义的 name)。
ACT_TYPE_活动的类型(例如 userTask、serviceTask、exclusiveGateway 等)。
ASSIGNEE_如果当前活动是一个用户任务,则该字段存储任务的分配人(Assignee)。
START_TIME_开始时间。
END_TIME_结束时间。
DURATION_持续时间。
ACT_INST_STATE_活动实例状态。
SEQUENCE_COUNTER_活动实例的序列计数器,用于跟踪活动实例的执行顺序。
TENANT_ID_租户ID。
REMOVAL_TIME_活动实例的清理时间。如果启用了历史数据清理功能,则该字段表示活动实例何时可以被清理。
ACT_HI_DETAIL
ID_唯一标识符。
TYPE_类型。如变量更新、任务分配等。
PROC_DEF_KEY_流程定义的键。
PROC_DEF_ID_流程定义的ID。
ROOT_PROC_INST_ID_根流程实例ID。
PROC_INST_ID_流程实例ID。
EXECUTION_ID_流程执行ID。
CASE_DEF_KEY_
CASE_DEF_ID_
CASE_INST_ID_
CASE_EXECUTION_ID_
TASK_ID_任务ID。
ACT_INST_ID_活动实例ID。
VAR_INST_ID_流程变量记录ID。
NAME_变量的名称。
VAR_TYPE_变量的类型。
REV_版本。
TIME_时间戳。
BYTEARRAY_ID_二进制数据对应ID。
DOUBLE_
LONG_
TEXT_
TEXT2_
SEQUENCE_COUNTER_序列计数器。
TENANT_ID_租户ID。
OPERATION_ID_操作ID。
REMOVAL_TIME_移除时间。
INITIAL_
ACT_HI_IDENTITYLINK
ID_唯一标识符。
TIMESTAMP_
TYPE_用户关系的类型。可以是“participant”(参与者)、“candidate”(候选人)等。
USER_ID_与用户关系相关的用户ID。
GROUP_ID_与用户关系相关的用户组ID。
TASK_ID_与用户关系相关的任务ID。
ROOT_PROC_INST_ID_
PROC_DEF_ID_流程定义的ID。
OPERATION_TYPE_
ASSIGNER_ID_
PROC_DEF_KEY_
TENANT_ID_
REMOVAL_TIME_
ACT_HI_VARINST
ID_唯一标识符
PROC_DEF_KEY_流程定义的关键字(Key),即流程定义的唯一标识。
PROC_DEF_ID_流程定义的唯一标识符(ID),关联到 ACT_RE_PROCDEF 表。
ROOT_PROC_INST_ID_根流程实例 ID。
PROC_INST_ID_当前变量实例所属的流程实例 ID。
EXECUTION_ID_当前变量实例所属的执行流 ID。
ACT_INST_ID_
CASE_DEF_KEY_
CASE_DEF_ID_
CASE_INST_ID_案例实例 ID。
CASE_EXECUTION_ID_案例执行流 ID。
TASK_ID_任务 ID
NAME_变量的名称
VAR_TYPE_变量的类型(例如 String、Integer、Boolean、Date 等)。
CREATE_TIME_变量的创建时间。
REV_变量的版本号。
BYTEARRAY_ID_如果变量是二进制类型(例如文件或序列化对象),则该字段存储关联的二进制数据 ID(关联到 ACT_GE_BYTEARRAY 表)。
DOUBLE_如果变量是数值类型(例如 Double),则该字段存储变量的值。
LONG_如果变量是长整型(例如 Long),则该字段存储变量的值。
TEXT_如果变量是字符串类型(例如 String),则该字段存储变量的值。
TEXT2_如果变量是字符串类型且长度超过 4000 字符,则该字段存储变量的额外值。
TENANT_ID_租户 ID
STATE_变量的状态。常见的状态值包括:CREATED:变量已创建。  UPDATED:变量已更新。  DELETED:变量已删除。
REMOVAL_TIME_变量实例的清理时间。如果启用了历史数据清理功能,则该字段表示变量实例何时可以被清理。

附2:参考资料

camunda中文网站:

http://camunda-cn.shaochenfeng.com/

camunda生成项目网站:

https://start.camunda.com/

camunda下载流程设计器:

https://camunda.com/download/modeler/

附3:测试过程中表数据记录(表中数据只记录发生变化的数据。例如数据1经过操作后无变化,在操作后的表中不体现该数据)(由于表数据为后补数据,所以执行的并不是上面提到的awb.bpmn文件结果。但是,基本结构是一样的,所以不影响参考)

1.部署test20250208-01.bpmn 

ACT_GE_BYTEARRAY  通用的流程定义和流程资源
ID_REV_NAME_DEPLOYMENT_ID_BYTES_GENERATED_TENANT_ID_TYPE_CREATE_TIME_
主键数据版本资源名称部署序号资源内容是否是右 activiti 自动产生的资源
be0dccfa-e5ed-11ef-9940-4e5f7046682e1bpmn/test20250208-01.bpmnbe0ce299-e5ed-11ef-9940-4e5f7046682ebpmn文件内容012025/2/8 15:24:33
ACT_RE_DEPLOYMENT  部署单元信息
ID_NAME_DEPLOY_TIME_SOURCE_TENANT_ID_
部署序号部署名称部署时间
be0ce299-e5ed-11ef-9940-4e5f7046682e运单流程2025/2/8 15:24:33

ACT_RE_PROCDEF 已部署的流程定义根据版本不同可以不唯一
ID_REV_CATEGORY_NAME_KEY_VERSION_DEPLOYMENT_ID_RESOURCE_NAME_DGRM_RESOURCE_NAME_HAS_START_FORM_KEY_SUSPENSION_STATE_TENANT_ID_VERSION_TAG_HISTORY_TTL_STARTABLE_
主键数据版本号流程定义分类流程定义的名称流程定义 key版本部署 IDbpmn 文件名称流程定义对应的流程图资源名称是否存在开始节点 formKey流程定义状态 1 激活、2 中止
be1cc11b-e5ed-11ef-9940-4e5f7046682e1http://bpmn.io/schema/bpmncamundaTest20250208Process_camundaTest202502081be0ce299-e5ed-11ef-9940-4e5f7046682ebpmn/test20250208-01.bpmn0199991

2.流程启动 Process_camundaTest20250208 

ACT_RU_EXECUTION 流程实例 (执行流) 表
ID_REV_ROOT_PROC_INST_ID_PROC_INST_ID_BUSINESS_KEY_PARENT_ID_PROC_DEF_ID_SUPER_EXEC_SUPER_CASE_EXEC_CASE_INST_ID_ACT_ID_ACT_INST_ID_IS_ACTIVE_IS_CONCURRENT_IS_SCOPE_IS_EVENT_SCOPE_SUSPENSION_STATE_CACHED_ENT_STATE_SEQUENCE_COUNTER_TENANT_ID_
主键数据版本流程实例 ID业务主键 ID父执行流的 ID流程定义的数据 ID节点实例 ID是否存活
d22e5cb7-e5f0-11ef-a83c-4e5f7046682e1d22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ebe1cc11b-e5ed-11ef-9940-4e5f7046682eActivity_task01Activity_task01:d237ab8d-e5f0-11ef-a83c-4e5f7046682e10101183

ACT_RU_TASK 流程任务表
ID_REV_EXECUTION_ID_PROC_INST_ID_PROC_DEF_ID_CASE_EXECUTION_ID_CASE_INST_ID_CASE_DEF_ID_NAME_PARENT_TASK_ID_DESCRIPTION_TASK_DEF_KEY_OWNER_ASSIGNEE_DELEGATION_PRIORITY_CREATE_TIME_LAST_UPDATED_DUE_DATE_FOLLOW_UP_DATE_SUSPENSION_STATE_TENANT_ID_
主键数据版本任务所在的执行流 ID流程实例 ID流程定义 ID任务名称父任务 ID说明任务定义的 ID 值任务拥有人被指派执行该任务的人创建时间耗时是否挂起 1 代表激活 2 代表挂起
d237d29e-e5f0-11ef-a83c-4e5f7046682e1d22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ebe1cc11b-e5ed-11ef-9940-4e5f7046682eusertask01Activity_task01liutao502025/2/8 15:46:351
ACT_RU_VARIABLE 流程参数表
ID_REV_TYPE_NAME_EXECUTION_ID_PROC_INST_ID_PROC_DEF_ID_CASE_EXECUTION_ID_CASE_INST_ID_TASK_ID_BATCH_ID_BYTEARRAY_ID_DOUBLE_LONG_TEXT_TEXT2_VAR_SCOPE_SEQUENCE_COUNTER_IS_CONCURRENT_LOCAL_TENANT_ID_
主键数据版本参数类型参数名称参数执行 ID流程实例 ID任务 ID资源 ID参数为 double,则保存在该字段中参数为 long,则保存在该字段中用户保存文本类型的参数值
d2311bd8-e5f0-11ef-a83c-4e5f7046682e1stringlitd22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ebe1cc11b-e5ed-11ef-9940-4e5f7046682eliutaod22e5cb7-e5f0-11ef-a83c-4e5f7046682e10
d234502a-e5f0-11ef-a83c-4e5f7046682e1stringljfd22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ebe1cc11b-e5ed-11ef-9940-4e5f7046682eliujianfeid22e5cb7-e5f0-11ef-a83c-4e5f7046682e10

ACT_HI_PROCINST 流程实例表
ID_PROC_INST_ID_BUSINESS_KEY_PROC_DEF_KEY_PROC_DEF_ID_START_TIME_END_TIME_REMOVAL_TIME_DURATION_START_USER_ID_START_ACT_ID_END_ACT_ID_SUPER_PROCESS_INSTANCE_ID_ROOT_PROC_INST_ID_SUPER_CASE_INSTANCE_ID_CASE_INST_ID_DELETE_REASON_TENANT_ID_STATE_
主键流程实例 ID业务主键流程定义 ID开始时间结束时间耗时起始人起始节点结束节点父流程实例 ID
d22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682e2025/2/8 15:46:35StartEvent_1d22e5cb7-e5f0-11ef-a83c-4e5f7046682eACTIVE
ACT_HI_TASKINST  历史任务表
ID_TASK_DEF_KEY_PROC_DEF_KEY_PROC_DEF_ID_ROOT_PROC_INST_ID_PROC_INST_ID_EXECUTION_ID_CASE_DEF_KEY_CASE_DEF_ID_CASE_INST_ID_CASE_EXECUTION_ID_ACT_INST_ID_NAME_PARENT_TASK_ID_DESCRIPTION_OWNER_ASSIGNEE_START_TIME_END_TIME_DURATION_DELETE_REASON_PRIORITY_DUE_DATE_FOLLOW_UP_DATE_TENANT_ID_REMOVAL_TIME_
主键任务定义的 ID 值流程定义 ID流程定义 ID流程实例 ID执行 ID名称父任务 ID说明实际签收人 任务的拥有者被指派执行该任务的人开始时间结束时间耗时删除原因优先级别过期时间
d237d29e-e5f0-11ef-a83c-4e5f7046682eActivity_task01Process_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eActivity_task01:d237ab8d-e5f0-11ef-a83c-4e5f7046682eusertask01liutao2025/2/8 15:46:3550

ACT_HI_ACTINST 历史行为表
ID_PARENT_ACT_INST_ID_PROC_DEF_KEY_PROC_DEF_ID_ROOT_PROC_INST_ID_PROC_INST_ID_EXECUTION_ID_ACT_ID_TASK_ID_CALL_PROC_INST_ID_CALL_CASE_INST_ID_ACT_NAME_ACT_TYPE_ASSIGNEE_START_TIME_END_TIME_DURATION_ACT_INST_STATE_SEQUENCE_COUNTER_TENANT_ID_REMOVAL_TIME_
主键流程定义 ID流程实例 ID执行 ID节点实例 ID任务 ID调用外部的流程实例 ID节点名称节点类型节点签收人开始时间结束时间耗时
StartEvent_1:d235137c-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eStartEvent_1start20250208startEvent2025/2/8 15:46:352025/2/8 15:46:351641
Activity_task01:d237ab8d-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eActivity_task01d237d29e-e5f0-11ef-a83c-4e5f7046682eusertask01userTaskliutao2025/2/8 15:46:3503
ACT_HI_DETAIL 流程明细表
ID_TYPE_PROC_DEF_KEY_PROC_DEF_ID_ROOT_PROC_INST_ID_PROC_INST_ID_EXECUTION_ID_CASE_DEF_KEY_CASE_DEF_ID_CASE_INST_ID_CASE_EXECUTION_ID_TASK_ID_ACT_INST_ID_VAR_INST_ID_NAME_VAR_TYPE_REV_TIME_BYTEARRAY_ID_DOUBLE_LONG_TEXT_TEXT2_SEQUENCE_COUNTER_TENANT_ID_OPERATION_ID_REMOVAL_TIME_INITIAL_
主键类型流程定义 ID流程实例 ID执行 ID任务 ID名称参数类型数据版本时间戳字节表 ID存储变量类型为 Double存储变量类型为 long存储变量值类型为 String
d2325459-e5f0-11ef-a83c-4e5f7046682eVariableUpdateProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed2311bd8-e5f0-11ef-a83c-4e5f7046682elitstring02025/2/8 15:46:35liutao11
d234502b-e5f0-11ef-a83c-4e5f7046682eVariableUpdateProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed234502a-e5f0-11ef-a83c-4e5f7046682eljfstring02025/2/8 15:46:35liujianfei11
ACT_HI_IDENTITYLINK 历史流程人员表
ID_TIMESTAMP_TYPE_USER_ID_GROUP_ID_TASK_ID_ROOT_PROC_INST_ID_PROC_DEF_ID_OPERATION_TYPE_ASSIGNER_ID_PROC_DEF_KEY_TENANT_ID_REMOVAL_TIME_
主键类型用户 ID组 ID任务 ID流程定义 ID
d237f9af-e5f0-11ef-a83c-4e5f7046682e2025/2/8 15:46:35assigneeliutaod237d29e-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ebe1cc11b-e5ed-11ef-9940-4e5f7046682eaddProcess_camundaTest20250208
ACT_HI_VARINST 历史变量表
ID_PROC_DEF_KEY_PROC_DEF_ID_ROOT_PROC_INST_ID_PROC_INST_ID_EXECUTION_ID_ACT_INST_ID_CASE_DEF_KEY_CASE_DEF_ID_CASE_INST_ID_CASE_EXECUTION_ID_TASK_ID_NAME_VAR_TYPE_CREATE_TIME_REV_BYTEARRAY_ID_DOUBLE_LONG_TEXT_TEXT2_TENANT_ID_STATE_REMOVAL_TIME_
主键流程定义 ID流程实例 ID执行 ID任务 ID名称参数类型数据版本字节表 ID存储 double 类型数据
d2311bd8-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682elitstring2025/2/8 15:46:350liutaoCREATED
d234502a-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eljfstring2025/2/8 15:46:350liujianfeiCREATED

 3.执行完任务[usertask01]、[servicetask02]

ACT_RU_EXECUTION 流程实例 (执行流) 表
ID_REV_ROOT_PROC_INST_ID_PROC_INST_ID_BUSINESS_KEY_PARENT_ID_PROC_DEF_ID_SUPER_EXEC_SUPER_CASE_EXEC_CASE_INST_ID_ACT_ID_ACT_INST_ID_IS_ACTIVE_IS_CONCURRENT_IS_SCOPE_IS_EVENT_SCOPE_SUSPENSION_STATE_CACHED_ENT_STATE_SEQUENCE_COUNTER_TENANT_ID_
主键数据版本流程实例 ID业务主键 ID父执行流的 ID流程定义 ID节点实例 ID是否存活
d22e5cb7-e5f0-11ef-a83c-4e5f7046682e2d22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ebe1cc11b-e5ed-11ef-9940-4e5f7046682eActivity_task03Activity_task03:b9604625-e5f4-11ef-ab68-4e5f7046682e10101189
ACT_RU_TASK 流程任务表
ID_REV_EXECUTION_ID_PROC_INST_ID_PROC_DEF_ID_CASE_EXECUTION_ID_CASE_INST_ID_CASE_DEF_ID_NAME_PARENT_TASK_ID_DESCRIPTION_TASK_DEF_KEY_OWNER_ASSIGNEE_DELEGATION_PRIORITY_CREATE_TIME_LAST_UPDATED_DUE_DATE_FOLLOW_UP_DATE_SUSPENSION_STATE_TENANT_ID_
主键数据版本任务所在的执行流 ID流程实例 ID流程定义 ID任务名称父任务 ID说明任务定义的 ID 值任务拥有人被指派执行该任务的人创建时间是否挂起 1 代表激活 2 代表挂起
b9604626-e5f4-11ef-ab68-4e5f7046682e1d22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ebe1cc11b-e5ed-11ef-9940-4e5f7046682eusertask03Activity_task03liujianfei502025/2/8 16:14:321

ACT_HI_TASKINST  历史任务表
ID_TASK_DEF_KEY_PROC_DEF_KEY_PROC_DEF_ID_ROOT_PROC_INST_ID_PROC_INST_ID_EXECUTION_ID_CASE_DEF_KEY_CASE_DEF_ID_CASE_INST_ID_CASE_EXECUTION_ID_ACT_INST_ID_NAME_PARENT_TASK_ID_DESCRIPTION_OWNER_ASSIGNEE_START_TIME_END_TIME_DURATION_DELETE_REASON_PRIORITY_DUE_DATE_FOLLOW_UP_DATE_TENANT_ID_REMOVAL_TIME_
主键任务定义的 ID 值流程定义 ID流程定义 ID流程实例 ID执行 ID名称父任务 ID说明实际签收人 任务的拥有者被指派执行该任务的人开始时间结束时间耗时删除原因优先级别过期时间
d237d29e-e5f0-11ef-a83c-4e5f7046682eActivity_task01Process_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eActivity_task01:d237ab8d-e5f0-11ef-a83c-4e5f7046682eusertask01liutao2025/2/8 15:46:352025/2/8 16:14:321676586completed50
b9604626-e5f4-11ef-ab68-4e5f7046682eActivity_task03Process_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eActivity_task03:b9604625-e5f4-11ef-ab68-4e5f7046682eusertask03liujianfei2025/2/8 16:14:3250
ACT_HI_ACTINST 历史行为表
ID_PARENT_ACT_INST_ID_PROC_DEF_KEY_PROC_DEF_ID_ROOT_PROC_INST_ID_PROC_INST_ID_EXECUTION_ID_ACT_ID_TASK_ID_CALL_PROC_INST_ID_CALL_CASE_INST_ID_ACT_NAME_ACT_TYPE_ASSIGNEE_START_TIME_END_TIME_DURATION_ACT_INST_STATE_SEQUENCE_COUNTER_TENANT_ID_REMOVAL_TIME_
主键流程定义 ID流程实例 ID执行 ID节点实例 ID任务 ID调用外部的流程实例 ID节点名称节点类型节点签收人开始时间结束时间耗时
Activity_task02:b95856df-e5f4-11ef-ab68-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eActivity_task02servicetask02serviceTask2025/2/8 16:14:322025/2/8 16:14:324945
Gateway_gateway01:b95ff804-e5f4-11ef-ab68-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eGateway_gateway01gateway01exclusiveGateway2025/2/8 16:14:322025/2/8 16:14:32147
Activity_task03:b9604625-e5f4-11ef-ab68-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eActivity_task03b9604626-e5f4-11ef-ab68-4e5f7046682eusertask03userTaskliujianfei2025/2/8 16:14:3209

ACT_HI_IDENTITYLINK 历史流程人员表
ID_TIMESTAMP_TYPE_USER_ID_GROUP_ID_TASK_ID_ROOT_PROC_INST_ID_PROC_DEF_ID_OPERATION_TYPE_ASSIGNER_ID_PROC_DEF_KEY_TENANT_ID_REMOVAL_TIME_
主键类型用户 ID组 ID任务 ID流程定义 ID
b9606d37-e5f4-11ef-ab68-4e5f7046682e2025/2/8 16:14:32assigneeliujianfeib9604626-e5f4-11ef-ab68-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ebe1cc11b-e5ed-11ef-9940-4e5f7046682eaddProcess_camundaTest20250208
ACT_HI_VARINST 历史变量表
ID_PROC_DEF_KEY_PROC_DEF_ID_ROOT_PROC_INST_ID_PROC_INST_ID_EXECUTION_ID_ACT_INST_ID_CASE_DEF_KEY_CASE_DEF_ID_CASE_INST_ID_CASE_EXECUTION_ID_TASK_ID_NAME_VAR_TYPE_CREATE_TIME_REV_BYTEARRAY_ID_DOUBLE_LONG_TEXT_TEXT2_TENANT_ID_STATE_REMOVAL_TIME_
主键流程定义 ID流程实例 ID执行 ID任务 ID名称参数类型数据版本字节表 ID存储 double 类型数据
b95fd0f2-e5f4-11ef-ab68-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682econinteger2025/2/8 16:14:32000CREATED
b95bb240-e5f4-11ef-ab68-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eaaainteger2025/2/8 16:14:32011CREATED

4.执行完任务[usertask03]

ACT_HI_PROCINST 流程实例表
ID_PROC_INST_ID_BUSINESS_KEY_PROC_DEF_KEY_PROC_DEF_ID_START_TIME_END_TIME_REMOVAL_TIME_DURATION_START_USER_ID_START_ACT_ID_END_ACT_ID_SUPER_PROCESS_INSTANCE_ID_ROOT_PROC_INST_ID_SUPER_CASE_INSTANCE_ID_CASE_INST_ID_DELETE_REASON_TENANT_ID_STATE_
主键流程实例 ID业务主键流程定义 ID开始时间结束时间耗时起始人起始节点结束节点父流程实例 ID
d22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682e2025-02-08 15:46:352025-02-08 16:32:432052-06-25 16:32:432768192StartEvent_1Event_end01d22e5cb7-e5f0-11ef-a83c-4e5f7046682eCOMPLETED

ACT_HI_TASKINST  历史任务表
ID_TASK_DEF_KEY_PROC_DEF_KEY_PROC_DEF_ID_ROOT_PROC_INST_ID_PROC_INST_ID_EXECUTION_ID_CASE_DEF_KEY_CASE_DEF_ID_CASE_INST_ID_CASE_EXECUTION_ID_ACT_INST_ID_NAME_PARENT_TASK_ID_DESCRIPTION_OWNER_ASSIGNEE_START_TIME_END_TIME_DURATION_DELETE_REASON_PRIORITY_DUE_DATE_FOLLOW_UP_DATE_TENANT_ID_REMOVAL_TIME_
主键任务定义的 ID 值流程定义 ID流程定义 ID流程实例 ID执行 ID名称父任务 ID说明实际签收人 任务的拥有者被指派执行该任务的人开始时间结束时间耗时删除原因优先级别过期时间
b9604626-e5f4-11ef-ab68-4e5f7046682eActivity_task03Process_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eActivity_task03:b9604625-e5f4-11ef-ab68-4e5f7046682eusertask03liujianfei2025-02-08 16:14:322025-02-08 16:32:431091136completed502052-06-25 16:32:43
ACT_HI_ACTINST 历史行为表
ID_PARENT_ACT_INST_ID_PROC_DEF_KEY_PROC_DEF_ID_ROOT_PROC_INST_ID_PROC_INST_ID_EXECUTION_ID_ACT_ID_TASK_ID_CALL_PROC_INST_ID_CALL_CASE_INST_ID_ACT_NAME_ACT_TYPE_ASSIGNEE_START_TIME_END_TIME_DURATION_ACT_INST_STATE_SEQUENCE_COUNTER_TENANT_ID_REMOVAL_TIME_
主键流程定义 ID流程实例 ID执行 ID节点实例 ID任务 ID调用外部的流程实例 ID节点名称节点类型节点签收人开始时间结束时间耗时
StartEvent_1:d235137c-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eStartEvent_1start20250208startEvent2025-02-08 15:46:352025-02-08 15:46:3516412052-06-25 16:32:43
Activity_task01:d237ab8d-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eActivity_task01d237d29e-e5f0-11ef-a83c-4e5f7046682eusertask01userTaskliutao2025-02-08 15:46:352025-02-08 16:14:321676608432052-06-25 16:32:43
Activity_task02:b95856df-e5f4-11ef-ab68-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eActivity_task02servicetask02serviceTask2025-02-08 16:14:322025-02-08 16:14:3249452052-06-25 16:32:43
Gateway_gateway01:b95ff804-e5f4-11ef-ab68-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eGateway_gateway01gateway01exclusiveGateway2025-02-08 16:14:322025-02-08 16:14:321472052-06-25 16:32:43
Activity_task03:b9604625-e5f4-11ef-ab68-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eActivity_task03b9604626-e5f4-11ef-ab68-4e5f7046682eusertask03userTaskliujianfei2025-02-08 16:14:322025-02-08 16:32:431091159492052-06-25 16:32:43
Event_end01:43f61c9f-e5f7-11ef-8ced-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eEvent_end01end01intermediateNoneThrowEvent2025-02-08 16:32:432025-02-08 16:32:4391112052-06-25 16:32:43

ACT_HI_IDENTITYLINK 历史流程人员表
ID_TIMESTAMP_TYPE_USER_ID_GROUP_ID_TASK_ID_ROOT_PROC_INST_ID_PROC_DEF_ID_OPERATION_TYPE_ASSIGNER_ID_PROC_DEF_KEY_TENANT_ID_REMOVAL_TIME_
主键类型用户 ID组 ID任务 ID流程定义 ID
b9606d37-e5f4-11ef-ab68-4e5f7046682e2025-02-08 16:14:32assigneeliujianfeib9604626-e5f4-11ef-ab68-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ebe1cc11b-e5ed-11ef-9940-4e5f7046682eaddProcess_camundaTest202502082052-06-25 16:32:43
d237f9af-e5f0-11ef-a83c-4e5f7046682e2025-02-08 15:46:35assigneeliutaod237d29e-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ebe1cc11b-e5ed-11ef-9940-4e5f7046682eaddProcess_camundaTest202502082052-06-25 16:32:43
ACT_HI_VARINST 历史变量表
ID_PROC_DEF_KEY_PROC_DEF_ID_ROOT_PROC_INST_ID_PROC_INST_ID_EXECUTION_ID_ACT_INST_ID_CASE_DEF_KEY_CASE_DEF_ID_CASE_INST_ID_CASE_EXECUTION_ID_TASK_ID_NAME_VAR_TYPE_CREATE_TIME_REV_BYTEARRAY_ID_DOUBLE_LONG_TEXT_TEXT2_TENANT_ID_STATE_REMOVAL_TIME_
主键流程定义 ID流程实例 ID执行 ID任务 ID名称参数类型数据版本字节表 ID存储 double 类型数据
d2311bd8-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682elitstring2025-02-08 15:46:350liutaoCREATED2052-06-25 16:32:43
d234502a-e5f0-11ef-a83c-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eljfstring2025-02-08 15:46:350liujianfeiCREATED2052-06-25 16:32:43
b95bb240-e5f4-11ef-ab68-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682eaaainteger2025-02-08 16:14:32011CREATED2052-06-25 16:32:43
b95fd0f2-e5f4-11ef-ab68-4e5f7046682eProcess_camundaTest20250208be1cc11b-e5ed-11ef-9940-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682ed22e5cb7-e5f0-11ef-a83c-4e5f7046682econinteger2025-02-08 16:14:32000CREATED2052-06-25 16:32:43

补充1点任务的签收(认领)和任务的归还 

任务签收(认领)
public void claim() {
   String taskId="1234";
   String userId="张三";
   taskService.claim(taskId,userId);
}

任务归还
public void claim() {
   String taskId="1234";
   taskService.claim(taskId,null);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值