# 流程定义问题排查与解决手册
# 问题一:流程定义被覆盖问题
# 📝 问题描述
在 AFCenter-流程中心-业务配置-流程配置 里对某个活动进行按钮配置后(例如:开启协办、回退功能),后续使用低开 IDE 对该流程新增环节时,之前配置的按钮会消失。
# 🔍 原因分析
在流程中心直接修改流程后,新的流程定义会发布到 BPS 引擎,但低开 IDE 中的源文件并未同步更新。当再次从 IDE 操作流程时,未同步的 IDE 版本会覆盖引擎中的最新版本,导致配置丢失。
# ✅ 解决方案
# 手动提取
在低开 IDE 中执行"提取"操作,将 BPS 引擎中的最新流程定义同步回 IDE:
- 在低开 IDE 中,找到被修改的流程资源
- 右键点击该流程,选择"提取"
- 此操作会从 BPS 引擎拉取最新的流程定义,覆盖 IDE 本地资源,完成同步

# 生产环境禁用 IDE
为防止误操作导致流程定义被覆盖,强烈建议在生产环境关闭 IDE 的修改权限:
- 找到应用的
application.properties配置文件 - 添加或修改以下配置,重启使之生效
eos.profiles.active=prod
# 问题二:修改应用名称后,流程事件里找不到我的流程
# 📝 问题描述
项目后期通过应用管理修改了应用的显示名称或应用编码后,出现以下问题:
- 在"开发中心"配置业务参与者规则时,选择器中不显示该应用的流程
- 在配置引擎事件或业务事件时,无法关联到该应用下的流程或逻辑流
# 🔍 原因分析
低开开发平台(IDE)中的资源(流程、表单、逻辑流等)与运行时引擎(BPS)之间的关联关系,是基于**应用编码(APP_CODE)**存储在数据库中的。当应用编码被修改后:
- 数据库中存储的资源关联关系仍记录着旧的
APP_CODE - 运行时环境使用新的
APP_CODE去查找资源,导致无法匹配 - 因此,在各种资源选择器中无法正确加载属于该应用的资源
# ✅ 解决方案
# 方案一:基线修复法(推荐)
利用基线包在导入时自动重新建立资源关联的特性,是修复此类问题最稳妥的方法。
# 操作步骤
第一步:在问题环境创建基线
- 登录 AFCenter,进入该应用的后台管理
- 进入"开发中心" → "基线管理"
- 新建一个基线,务必勾选包含所有需要恢复关联的构件包
- 执行基线导出,得到基线包(
.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';
第四步:清理缓存并重启
- 清除应用服务器(如 nginx)的缓存
- 重启低开应用服务,使数据库修改生效
# 问题三:流程导入成功后,为什么在应用后台管理中找不到?
# 📝 问题描述
通过基线包或构件包将流程定义成功导入到目标环境(如生产环境),系统提示"导入成功"。但是,在"应用后台管理" → "流程中心" → "我的流程"或"资源管理"列表中,却找不到刚刚导入的流程。
# 🔍 核心排查表
流程定义与具体应用的关联关系不存储在低开资源表中,而是存储在 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 引擎 | 存储流程定义属性及应用关联信息 |