Activiti 深入理解:Activiti 流程引擎的 25 张数据库表都存储了什么?ing

1. Activiti 数据库表名说明(分类与说明)

https://www.activiti.org/userguide/#database.tables.explained

\qquad Activiti 的数据库表名称都以 ACT_ 开头,而第二部分是表 use case 的双字符标识,use case 也大致与 Activiti 服务 API 匹配。

  • ACT_RE_*:
    • RE stands for repository. Tables with this prefix contain static information such as process definitions and process resources (images, rules, etc.).
    • RE 代表 repository,包含这个前缀的表包含诸如 流程定义流程资源(图片、规则等) 这类的静态信息
  • ACT_RU_*:
    • RU stands for runtime. These are the runtime tables that contain the runtime data of process instances, user tasks, variables, jobs, etc. Activiti only stores the runtime data during process instance execution, and removes the records when a process instance ends. This keeps the runtime tables small and fast.
    • RU 代表 runtime,这些 (ACT_RU_*) 是包含流程实例运行时数据的表,如 用户任务 (user tasks)、流程变量 (variables)、作业(jobs) 等;Activiti 仅在流程实例执行期间存储运行时数据,并在流程实例结束时删除记录,这可以保持符合 act_ru_* 的表小而快。
  • ACT_ID_*:
    • ID stands for identity. These tables contain identity information, such as users, groups, etc.
    • ID 代表 identity,这些表包含身份信息,比如 用户、组等。
  • ACT_HI_*:
    • HI stands for history. These are the tables that contain historic data, such as past process instances, variables, tasks, etc.
    • HI 代码 history,这些是包含历史数据的表,比如 过去的流程实例、变量、任务等。
  • ACT_GE_*:
    • general data, which is used in various use cases.
    • (GE 代表 general,符合 ACT_GE_* 的表存储的是) 在各种各样的 use case 都被使用的通用数据。

1. ACT_RE_*:repository

2.1 act_re_deployment
  • 表说明:用于存储流程部署信息的表,与 act_ge_bytearray join 可以查看流程文件信息
  • 表列说明
    • ID_:部署的唯一标识符,用于标识流程部署的唯一性
    • NAME_:部署名称,用于标识流程部署的名称
    • CATEGORY_:部署类别,用于对流程进行分类
    • TENANT_ID_:租户标识符,如果启用了多租户功能,可以标识流程部署所属的租户
    • KEY_:部署的键
    • DEPLOY_TIME_:部署时间,表示流程部署发生的时间
    • ENGINE_VERSION_

repositoryService.createDeployment().category(category).key(key).name(name)

2.2 act_re_model
  • 表说明:用于存储流程模型信息的表
  • 表列说明
    • ID_:流程模型的唯一标识符
    • NAME_:流程模型的名称
    • KEY_:流程模型的键(也称为流程模型的 ID)
    • CATEGORY_:流程模型的分类,可用于对流程模型进行分组
    • CREATE_TIME_:创建流程模型的时间戳
    • LAST_UPDATE_TIME_:最后更新流程模型的时间戳。
    • VERSION_:流程模型的版本
    • META_INFO_:流程模型的元信息,通常以 JSON 格式存储
    • DEPLOYMENT_ID_:引用所属流程部署的唯一标识符
    • EDITOR_SOURCE_VALUE_ID_
    • EDITOR_SOURCE_EXTRA_VALUE_ID_
    • TENANT_ID_
2.3 act_re_procdef
  • 表说明:用于存储流程定义的信息
  • 表列说明
    • ID_:流程定义表主键
    • CATEGORY_: 流程定义的分类,可用于对流程进行分组
    • NAME_:流程定义的名称
    • KEY_:流程定义的键(也称为流程定义的 ID)
    • VERSION_:流程定义的版本
    • DEPLOYMENT_ID_:引用所属流程部署的唯一标识符
    • RESOURCE_NAME_:流程定义的资源名称,通常是 BPMN 或 XML 文件名
    • DGRM_RESOURCE_NAME_:流程定义的图形资源名称,通常是流程定义的图形表示的文件名
    • DISCRIPTION_:流程定义描述
    • HAS_START_FORM_KEY_: 表示流程定义是否有启动表单
    • HAS_GRAPHICAL_NOTATION_: 表示流程定义是否有图形表示
    • SUSPENSION_STATE_: 流程定义的挂起状态
    • TENANT_ID_
    • ENGLISH_VERSION_
      在这里插入图片描述

2. ACT_RU_*:runtime

流程引擎中的三个关键概念 (excution\task\job) 解析:

  • Execution (执行):Execution 是 Activiti 中流程实例的表示,Execution 是流程实例的运行时状态,代表了流程的执行轨迹。
    • 当一个流程实例启动时,会创建一个 Execution。
    • Execution 代表了流程实例在运行时的状态,包括当前所在的流程节点、变量值、执行状态等。每个执行实例都有一个唯一的 ID。
  • Task (任务):Task 是流程执行过程中需要参与者执行的工作单元,与 Execution 相关联。
    • 它通常与执行相关联,表示执行所在的节点需要执行的任务。
    • 当流程实例执行到一个用户任务节点时,会创建一个 Task,并将其分配给相应的参与者。
    • Task 包含了任务的相关信息,如任务名称、任务分配人、任务处理人、任务状态等。
  • Job (作业):Job 是 Activiti 中用于处理定时任务和异步任务的机制,它们可能与 Execution、Task 相关联
    • 当某个节点需要以异步方式执行或需要定时触发时,会创建一个 Job。
    • Job 表示待执行的任务,可以包括脚本执行、消息发送、定时触发等。
    • Job 包含了定时任务或异步任务的相关信息,如触发时间、重试次数、业务数据等。

\qquad 在流程执行过程中,Execution 会依次经过不同的节点,每个节点对应一个 Task。当任务需要定时触发或以异步方式执行时,可能会创建一个 Job 来处理。

2.1 act_ru_excution**
  • 表说明:用于存储流程实例的执行信息的表
  • 表列说明:
    • ID_:执行 ID,某流程实例的第一个执行 ID 与 procInstId 一致
    • REV_
    • PROC_INST_ID_:流程实例的唯一标识符(关联)
    • BUSINESS_KEY_:与流程实例关联的业务键
    • PARENT_ID_:父执行的唯一标识符 (对于子流程、多实例等场景,可以通过父执行与上层流程实例关联)
    • PROC_DEF_ID:流程定义 ID
    • SUPER_EXEC_:父执行的超级执行的唯一标识符 (超级执行是一个用于表示多实例、并行网关等高级流程结构的特殊执行)
    • ROOT_PROC_INST_ID_:根流程实例的唯一标识符
    • ACT_ID_:当前执行所在的流程节点的唯一标识符
    • IS_ACTIVE_:表示当前执行是否处于活动状态
    • IS_CONCURRENT_:表示当前执行是否是并发执行
    • IS_SCOPE_:表示当前执行是否是一个作用域执行 (作用域执行是一个可以独立执行、包含局部变量、持有活动实例状态的执行实例)
    • IS_EVENT_SCOPE_:表示当前执行是否是一个事件作用域执行
    • IS_MI_ROOT
    • SUSPENSION_STATE_:流程实例的挂起状态,用于标识流程实例是否被挂起,挂起时不允许进行流程推进操作
    • CACHED_ENT_STATE_
    • TENANT_ID_
    • NAME_
    • START_TIME_
    • START_USER_ID_
    • LOCK_TIME_
    • IS_COUNT_ENABLED_
    • EVT_SUBSCR_COUNT_
    • TASK_COUNT_
    • JOB_COUNT_
    • TIMER_JOB_COUNT_
    • SUSP_JOB_COUNT_
    • DEADLETTER_JOB_COUNT_
    • VAR_COUNT_
    • ID_LINK_COUNT_
2.2 act_ru_task**
  • 表说明:用于存储运行时任务信息的表
  • 表列说明:
    • ID_:任务的唯一标识符
    • REV_:数据库乐观锁的版本号
    • EXECUTION_ID_:与任务关联的流程实例的执行标识符
    • PROC_INST_ID_:与任务关联的流程实例的唯一标识符
    • PROC_DEF_ID_:与任务关联的流程定义的唯一标识符
    • NAME_:任务的名称
    • PARENT_TASK_ID_:父任务的唯一标识符
    • DESCRIPTION_:任务的描述
    • TASK_DEF_KEY_:任务的定义键值
    • OWNER_:任务的所有者
    • ASSIGNEE_:任务的受派人
    • DELEGATION_:委派人的标识符
    • PRIORITY_:任务的优先级
    • CREATE_TIME_:任务的创建时间
    • DUE_DATE_:任务的到期时间
    • CATEGORY_:任务的分类
    • SUSPENSION_STATE_:任务的挂起状态
    • TENANT_ID_
    • FORM_KEY_
    • CLAIM_TIME_
2.3 act_ru_variable**
2.4 act_ru_identitylink
2.5 act_ru_job**
2.6 act_ru_deadletter_job
2.7 act_ru_suspended_job
2.8 act_ru_timer_job
2.9 act_ru_event_subscr

act_evt_log

3. ACT_ID_*:identity

4. ACT_HI_*:history

5. ACT_GE_*:general

5.1 act_ge_bytearray
  • 表说明:用于存储流程文件 (xxx.bpmn20.xml\xxx.process_id.png) 的二进制数据 (由 BYTES 列存储) 的表
  • 表列说明
    - NAME_ :流程文件路径
    - DEPLOYMENT_ID_ :流程文件部署 ID
    - BYTES_ :流程文件二进制数据
    - GENERATED_:表示是(0)否(1)是生成标识 (如果部署时仅指明了像 xxx.bpmn20.xml 一样的流程 xml 文件,那么 .png 也会存储且 GENERATED_ 列的值为 1)
    在这里插入图片描述
5.2 act_ge_property
  • 表说明:用于存储一些全局属性和配置信息的表,其存储的数据根据具体的应用和配置而定
  • 表列说明
    - NAME_:属性的名称,用于标识属性的唯一性
    - VALUE_:属性的取值,存储属性的具体数值或配置
    - REV_:属性的版本号,每次属性值发生变化时都会增加版本号
    在这里插入图片描述

6. ACT_EVT_LOG:act_evt_log

  • 表说明:记录事件日志信息的表
  • 表列说明
    • LOG_NR_:事件日志序号,用于标识日志的唯一性
    • TYPE_:事件类型,表示事件的种类,如任务创建、流程实例启动、节点完成等
    • PROC_DEF_ID_:流程定义 ID,标识与事件相关的流程定义
    • PROC_INST_ID_:流程实例 ID,标识与事件相关的流程实例
    • EXECUTION_ID_:执行 ID,标识与事件相关的 execution
    • TASK_ID_:任务 ID,标识与事件相关的任务
    • TIME_STAMP_:事件发生的时间戳
    • USER_ID_:相关用户的 ID,表示执行事件的用户
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Activiti 是一个流程引擎框架,可以帮助开发者快速实现工作流相关的应用。下面是使用 Activiti 创建流程引擎的步骤: 1. 创建 maven 项目,添加 Activiti 依赖。 在项目的 pom.xml 文件中添加以下依赖: ``` <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>5.22.0</version> </dependency> ``` 2. 创建流程引擎配置类。 在项目中创建一个 Java 类,用于配置流程引擎。可以在该类中指定数据库连接信息、流程图文件路径等信息。以下是一个示例配置类: ``` import java.io.IOException; import java.io.InputStream; import java.util.Properties; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngineConfiguration; import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration; public class ActivitiConfig { public ProcessEngine getProcessEngine() throws IOException { // 读取配置文件 InputStream inputStream = getClass().getResourceAsStream("/activiti.properties"); Properties properties = new Properties(); properties.load(inputStream); // 配置流程引擎 ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration() .setJdbcUrl(properties.getProperty("jdbc.url")) .setJdbcUsername(properties.getProperty("jdbc.username")) .setJdbcPassword(properties.getProperty("jdbc.password")) .setJdbcDriver(properties.getProperty("jdbc.driver")) .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE); // 创建流程引擎 ProcessEngine processEngine = cfg.buildProcessEngine(); return processEngine; } } ``` 在该配置类中,我们读取一个名为 activiti.properties 的配置文件,该文件包含了数据库连接信息。在实际开发中,我们可以将这些信息存储在外部配置文件中,以便于修改和管理。 3. 创建流程图文件。 使用 Activiti Modeler 工具创建流程图文件,或者手动编写 BPMN 2.0 标准的 XML 文件。将该文件放置在项目的 classpath 下,以便于程序能够读取。 4. 启动流程引擎。 在程序中使用上述配置类创建流程引擎实例,并启动该实例。以下是一个示例代码: ``` public static void main(String[] args) throws IOException { // 创建流程引擎配置类 ActivitiConfig config = new ActivitiConfig(); // 获取流程引擎实例 ProcessEngine processEngine = config.getProcessEngine(); // 输出流程引擎信息 String name = processEngine.getName(); String version = ProcessEngine.VERSION; System.out.println("流程引擎名称:" + name); System.out.println("流程引擎版本:" + version); // 关闭流程引擎 processEngine.close(); } ``` 在上述示例代码中,我们创建了一个 ActivitiConfig 实例,并使用该实例获取了流程引擎。获取流程引擎后,我们可以输出其名称和版本信息,并在程序结束时关闭该引擎。 以上就是使用 Activiti 创建流程引擎的步骤。开发者可以根据自己的需求对流程引擎进行配置和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值