EOS Low-Code Platform 8 EOS Low-Code Platform 8
产品简介
学习指南
更新说明
安装与集成
上线指南
初见EOS
低代码开发手册
专业代码开发手册
专题场景实战
公共服务框架
应用运行治理
最佳实践
运维指南
  • 流程定义问题排查与解决手册
  • 问题一:流程定义被覆盖问题
  • 📝 问题描述
  • 🔍 原因分析
  • ✅ 解决方案
  • 问题二:修改应用名称后,流程事件里找不到我的流程
  • 📝 问题描述
  • 🔍 原因分析
  • ✅ 解决方案
  • 问题三:流程导入成功后,为什么在应用后台管理中找不到?
  • 📝 问题描述
  • 🔍 核心排查表
  • ✅ 解决方案
  • 附录:相关数据库表说明

# 流程定义问题排查与解决手册

# 问题一:流程定义被覆盖问题

# 📝 问题描述

在 AFCenter-流程中心-业务配置-流程配置 里对某个活动进行按钮配置后(例如:开启协办、回退功能),后续使用低开 IDE 对该流程新增环节时,之前配置的按钮会消失。

# 🔍 原因分析

在流程中心直接修改流程后,新的流程定义会发布到 BPS 引擎,但低开 IDE 中的源文件并未同步更新。当再次从 IDE 操作流程时,未同步的 IDE 版本会覆盖引擎中的最新版本,导致配置丢失。

# ✅ 解决方案

# 手动提取

在低开 IDE 中执行"提取"操作,将 BPS 引擎中的最新流程定义同步回 IDE:

  1. 在低开 IDE 中,找到被修改的流程资源
  2. 右键点击该流程,选择"提取"
  3. 此操作会从 BPS 引擎拉取最新的流程定义,覆盖 IDE 本地资源,完成同步

提取操作示意图

# 生产环境禁用 IDE

为防止误操作导致流程定义被覆盖,强烈建议在生产环境关闭 IDE 的修改权限:

  1. 找到应用的 application.properties 配置文件
  2. 添加或修改以下配置,重启使之生效
eos.profiles.active=prod

# 问题二:修改应用名称后,流程事件里找不到我的流程

# 📝 问题描述

项目后期通过应用管理修改了应用的显示名称或应用编码后,出现以下问题:

  • 在"开发中心"配置业务参与者规则时,选择器中不显示该应用的流程
  • 在配置引擎事件或业务事件时,无法关联到该应用下的流程或逻辑流

# 🔍 原因分析

低开开发平台(IDE)中的资源(流程、表单、逻辑流等)与运行时引擎(BPS)之间的关联关系,是基于**应用编码(APP_CODE)**存储在数据库中的。当应用编码被修改后:

  1. 数据库中存储的资源关联关系仍记录着旧的 APP_CODE
  2. 运行时环境使用新的 APP_CODE 去查找资源,导致无法匹配
  3. 因此,在各种资源选择器中无法正确加载属于该应用的资源

# ✅ 解决方案

# 方案一:基线修复法(推荐)

利用基线包在导入时自动重新建立资源关联的特性,是修复此类问题最稳妥的方法。

# 操作步骤

第一步:在问题环境创建基线

  1. 登录 AFCenter,进入该应用的后台管理
  2. 进入"开发中心" → "基线管理"
  3. 新建一个基线,务必勾选包含所有需要恢复关联的构件包
  4. 执行基线导出,得到基线包(.zip文件)

第二步:导入基线到目标环境

选择以下任一方式导入:

方案 适用场景 操作说明
方案A(推荐) 环境复杂,希望保留原始数据 在全新初始化的环境中导入测试
方案B(直接覆盖) 可接受当前环境数据被覆盖 直接在当前问题环境导入

导入操作:

  • 进入"开发中心" → "基线管理"
  • 点击"导入基线"
  • 选择第一步导出的基线包,执行导入

第三步:验证

  • 基线导入过程会根据目标环境当前的应用编码,自动更新所有资源与应用的关联关系
  • 导入完成后,重新进入相关配置选择器,检查是否能正常找到该应用的流程

# 方案二:手动数据库修复

如果环境复杂(如包含大量定制数据)且不便使用基线覆盖,可以尝试手动修复数据库。

⚠️ 风险提示:此操作风险较高,务必在操作前进行完整的数据备份。

# 操作步骤

第一步:确定核心关联表

资源与应用关联的核心表:

表名 说明
lc_resource 存储资源主信息
lc_runtime_resource 存储运行时资源信息

第二步:查找问题资源

-- 假设旧的应用编码为 'OLD_APP_CODE',新编码为 'NEW_APP_CODE'
SELECT * FROM lc_resource WHERE APP_NAME = 'OLD_APP_CODE';
SELECT * FROM lc_runtime_resource WHERE APP_NAME = 'OLD_APP_CODE';

第三步:手动更新应用编码

-- 将查到的记录中的 APP_NAME 字段值更新为新编码
UPDATE lc_resource SET APP_NAME = 'NEW_APP_CODE' WHERE APP_NAME = 'OLD_APP_CODE';
UPDATE lc_runtime_resource SET APP_NAME = 'NEW_APP_CODE' WHERE APP_NAME = 'OLD_APP_CODE';

第四步:清理缓存并重启

  1. 清除应用服务器(如 nginx)的缓存
  2. 重启低开应用服务,使数据库修改生效

# 问题三:流程导入成功后,为什么在应用后台管理中找不到?

# 📝 问题描述

通过基线包或构件包将流程定义成功导入到目标环境(如生产环境),系统提示"导入成功"。但是,在"应用后台管理" → "流程中心" → "我的流程"或"资源管理"列表中,却找不到刚刚导入的流程。

# 🔍 核心排查表

流程定义与具体应用的关联关系不存储在低开资源表中,而是存储在 BPS 引擎的关联表中。最主要的表是:

表名 说明
wfprocessdefproperties 业务流程定义属性表,记录流程定义的各项属性,包括所属的应用

# ✅ 解决方案

# 第一步:获取正确的流程与应用关联信息

从源环境(导出基线/构件包的环境)数据库中,查询该流程对应的应用信息:

-- 在源环境执行,假设流程定义ID为 'PROCESS_DEF_ID'
SELECT PROCESSDEFID, APPLICATION_ID, APP_CODE 
FROM wfprocessdefproperties 
WHERE PROCESSDEFID = 'PROCESS_DEF_ID';

# 第二步:检查目标环境数据

在目标环境(导入后找不到流程的环境)中,查询同一流程定义的关联信息:

-- 在目标环境执行
SELECT PROCESSDEFID, APPLICATION_ID, APP_CODE 
FROM wfprocessdefproperties 
WHERE PROCESSDEFID = 'PROCESS_DEF_ID';

# 第三步:修复不一致的数据

如果目标环境查询结果为空,或者 APP_CODE 字段值与目标应用编码不一致,则需要手动修正:

-- 假设目标应用编码为 'TARGET_APP_CODE'
UPDATE wfprocessdefproperties 
SET APP_CODE = 'TARGET_APP_CODE', APPLICATION_ID = 'TARGET_APP_CODE' 
WHERE PROCESSDEFID = 'PROCESS_DEF_ID';

注意:APPLICATION_ID 字段的值通常是应用编码,请根据实际情况判断是否需要一并更新。


# 附录:相关数据库表说明

表名 所属模块 主要作用
lc_resource 低开平台 存储低代码资源主信息
lc_runtime_resource 低开平台 存储低代码运行时资源信息
wfprocessdefproperties BPS 引擎 存储流程定义属性及应用关联信息

← 权限相关问题 分支规则和分支聚合问题 →