# 升级迁移问题排查与解决手册
在进行 EOS 平台版本升级或将应用从开发环境迁移到生产环境时,遇到功能异常、报错等问题,请参考以下排查指南。
# 现象一:升级后核心功能报错或异常
典型表现:
- 流程提交失败,提示找不到类或方法(
NoSuchMethodError)。 - 流程中心页面(待办、已办)打开报错,参数丢失。
- 自定义按钮属性被覆盖,或按钮行为与预期不符。
- 消息模板、企业微信配置等丢失或不生效。
常见原因:
- 缺少必要的升级补丁:跨版本升级时,必须按顺序打齐所有中间版本的补丁,或直接应用 合集补丁。
- 数据库升级脚本未执行或执行不完整:版本间的数据库表结构、初始数据有变化,必须手动执行对应的升级 SQL 脚本。
- 前端包版本错乱:升级后,前端包(
web目录)未替换为对应版本的最新包,导致前后端不匹配。 - 配置文件未同步更新:旧版本的配置文件(如
application.properties)可能缺少新版本所需的配置项。
解决步骤:
- 核对升级路线和补丁:
- 严格遵循官方升级指南。例如,从 8.3.0 升级到 8.3.3,通常需要先升级到 8.3.1,再到 8.3.2,最后到 8.3.3。
- 检查是否已安装针对当前版本的 合集补丁,合集补丁通常包含多个重要修复。
- 检查并执行数据库升级脚本:
- 在数据库中找到版本记录表(如果有),或对比新旧版本数据库脚本,确认所有表结构变更(ALTER TABLE)和新增数据(INSERT)都已执行。
- 关键数据迁移:例如,从 8.3.2 升级到 8.3.3 时,需要手动将
bfp_message_*系列表的数据同步到新的afc_message_*系列表中。
- 对比配置文件:
- 使用对比工具,对比新旧版本的
application.properties、user-config.xml等核心配置文件,将新版本的配置项(如 SSO 相关、新功能开关)合并到旧文件中。 - 特别注意检查
eos.profiles.active是否为prod(生产环境)。
- 使用对比工具,对比新旧版本的
- 清理浏览器和应用缓存:
- 升级后,务必清理浏览器缓存,并重启 Nginx 以加载最新的前端资源。
- 删除应用的
work和work_temp目录,然后重启应用,确保所有编译后的资源都是最新的。
# 现象二:通过构件包/基线迁移后,页面或流程表现异常
典型表现:
- 将开发环境的构件包导入生产环境后,表单或视图无法正常显示,需要重新拖拽组件才能恢复。
- 流程上配置的按钮或事件在迁移后不生效。
- 流程定义迁移后,在发起流程中依然能看到已删除的旧流程。
常见原因:
- 运行态数据与设计态数据不同步:构件包主要包含设计态数据(如页面布局)。迁移后,运行态数据(如 BPS 中的流程定义缓存)可能还是旧的。
- 环境差异导致:生产环境通常关闭了 IDE,而某些资源(如流程与 BPS 的关联)需要 IDE 环境下的“保存”操作来触发同步。
- 基线导入未覆盖所有内容:导出的基线可能未包含所有需要的资源(如业务组件)。
解决步骤:
- 优先使用基线包进行迁移:
- 相比于构件包,基线包(全量导入)是更推荐的迁移方式。它包含更完整的资源信息和依赖关系,能更好地保证环境一致性。
- 迁移后执行“编译”或“提取”操作:
- 对于表单/视图:如果导入后显示异常,可以在目标环境的开发中心(如果允许开放)找到对应构件包,右键选择“批量编译”或逐一打开资源并保存,强制其重新生成运行态代码。
- 对于流程:如果流程行为异常,可以在低开 IDE 中右键点击该流程,选择“提取”,将 BPS 中的最新流程定义同步到低开模型中。
- 清理 BPS 流程定义缓存:
- 如果已删除的流程依然可见,请登录 流程中心-引擎管理-资源管理,在列表中找到并手动删除对应的流程定义资源。这将清除 BPS 侧的缓存。
- 数据权限和角色重新授权:
- 迁移后,原环境中配置的数据权限、角色与菜单的关联关系可能因 ID 变化而丢失。需要在新环境中重新进行授权配置。
# 现象三:升级后单点登录(SSO)或第三方集成失效
典型表现:
- 升级后,通过 CAS/OAuth2 无法登录,或登录后跳转异常。
- 企业微信、钉钉消息无法发送或接收。
- 调用外部接口时出现 401/403 错误。
常见原因:
- 安全策略增强:新版本可能加强了安全校验,例如要求特定的请求头或参数。
- 接口 URL 或参数变化:SSO 认证流程或第三方消息推送的接口在新版本中可能发生了变化。
- 配置文件被覆盖:升级过程中,自定义的 SSO 配置(如
afc.sso.oauth2.*)可能被默认配置文件覆盖。
解决步骤:
- 恢复并检查 SSO 配置:
- 从旧版本备份中恢复
application-afc.properties或application.properties中的 SSO 相关配置。 - 对比新版本文档,确认是否有新增的必填配置项(例如,8.3.3 的消息中心可能需要额外配置连接器)。
- 从旧版本备份中恢复
- 检查白名单和拦截器:
- 新版本可能增加了对某些接口的拦截。检查
user-config.xml中的白名单配置,确保 SSO 回调地址、第三方消息推送接口等已被加入白名单。
- 新版本可能增加了对某些接口的拦截。检查
- 升级第三方集成 SDK/补丁:
- 针对企业微信、钉钉等集成,确认是否有专门针对新版本的适配补丁。例如,8.3.3 版本有专门的补丁用于修复企业微信登录跳转问题。
- 如果在升级后消息发送失败,检查
application-job.properties等文件中xxl.job.accessToken的配置是否正确。
# 预防措施
- 制定详细的升级方案:在升级前,根据官方升级指南,列出所有步骤,包括:备份、停止服务、替换介质、执行脚本、合并配置、打补丁、启动服务、验证功能。
- 搭建模拟环境验证:务必先在测试环境中完整执行一遍升级流程,验证所有核心业务功能正常后,再在生产环境操作。
- 保留旧版本备份:升级前,对数据库、应用目录、配置文件进行完整备份,以便快速回滚。