activiti.md 3.28 KB

Activiti 集成

完整覆盖暂缓:Activiti 已接入代码库,但当前实时 DB 中没有部署流程。见切片 7(暂缓)

本页记录代码库中与 Activiti 相关的事实,避免未来维护人员在工作流真正启用时从零开始。

两个 Activiti 版本

依赖树携带两个 Activiti 版本:

模块 版本 说明
xlyPersist org.activiti:activiti-engine:5.17.0 较老的 5.x 线
xlyFlow org.activiti:activiti-spring-boot-starter-rest-api:6.0.0activiti-json-converter:6.0.0 较新的 6.0 线

这是实际版本不匹配。Activiti 5.x 和 6.x schema 有重叠,但在部分 act_* 表和迁移路径上分叉。可能性包括:

  1. 框架运行 Activiti 6.0(由 xlyFlow 驱动),而 xlyPersist 的 5.17 依赖是早期遗留。
  2. 不同服务因历史原因使用不同版本。
  3. 两者都在 classpath 中,但运行时只初始化一个。

未来维护人员应:(a) 移除未使用版本避免混淆,(b) 记录实时 schema 使用哪个版本,(c) 验证 act_* 表布局与该版本精确匹配。

额外事实:xlyFlow/build.gradle 引入 Activiti 6 starter,但 xlyFlow/src/main/java/com/xly/XlyFlowApplicationBoot.java 被完全注释。因此代码存在,但本仓库当前并没有把 xlyFlow 呈现为明确可独立运行的 app。

act_* schema

实时 DB 当前有预期的 act_* 表,但本轮检查的关键表都是空的:

  • act_re_deployment = 0
  • act_re_procdef = 0
  • act_ru_task = 0
  • act_hi_procinst = 0

xly 的包装层

三个 xly 表包装 Activiti 集成:

包装表在实时 DB 中也为空:gdsmoduleflow = 0biz_flow = 0biz_todo_item = 0biz_todo_copyto = 0

启用时的模式:单据提交写入 biz_flow 行,同时启动 Activiti 流程实例;待审批人在 biz_todo_item 中看到任务;审批后流程实例推进并最终完成。

代码中接入位置

xlyFlow/ 是专用模块。后续补全时应关注:

  • xlyFlow 的 Gradle build 引入 Activiti 6.0。
  • Activiti process engine 的 Spring Boot 配置。
  • xlyEntry/com/xly/web/businessweb/ 中的 CheckFlowController 是 SPA 驱动工作流(审批 / 驳回 / 查看)的一个入口。
  • BPMN 流程定义若存在,应位于 xlyFlow/src/main/resources/processes/ 或类似位置;当前代码库为空。

让 Activiti 工作需要什么

使用工作流的部署需要:

  1. 已部署 BPMN 流程定义(act_re_procdef 有数据)。
  2. 模块标记 bCheck = 1,并通过 gdsmoduleflow 关联到正确流程。
  3. 通过 act_id_* 或 xly 包装层分配审批用户。
  4. 保存端点在 bCheck = 1 模块上分支,启动流程实例,而不是(或除了)标准 add/update/delete。

当有已部署流程的环境可用时,本页会成为正式参考;在此之前,把它视为“这里应该有什么”的清单。