IBM DOORS 9.6客户端现有链接链的link module批量更新问题
IBM DOORS 9.6 存量跨模块链接批量迁移操作方案
操作前准备
- 操作前务必对模块A、模块B、旧错误Link Module、新正确Link Module做全量备份,避免操作失误导致数据丢失
- 确保你拥有所有涉及模块的编辑、修改权限
- 确认新Link Module中已经提前创建好以模块A为源、模块B为目标的链接集,链接集配置符合业务要求
方案1:图形界面手动迁移(适用于存量链接数<100的场景)
- 打开模块A,在顶部菜单栏选择
Tools > Links > Link Manager - 设置筛选条件:源模块为当前模块A、目标模块为模块B、关联Link Module为旧错误Link Module,筛选出所有需要迁移的存量链接
- 全选所有筛选结果,右键点击
Copy - 保持Link Manager打开状态,将Link Module切换为新的正确Link Module,右键点击
Paste - 切换回旧Link Module的筛选结果页,全选所有链接后点击
Delete,确认删除旧链接即可完成迁移
方案2:DXL脚本批量迁移(适用于存量链接数较多的场景)
执行脚本前请先在测试环境验证逻辑,确认无误后再在生产环境运行,脚本示例如下:
// 请修改下方参数为你实际环境的模块绝对路径 string srcModulePath = "/项目根目录/子目录/模块A" string tgtModulePath = "/项目根目录/子目录/模块B" string oldLinkModPath = "/项目根目录/子目录/错误的Link Module" string newLinkModPath = "/项目根目录/子目录/正确的Link Module" string targetLinkSetName = "模块A至模块B关联" // 与新Link Module中提前配置的链接集名称完全一致 Module srcMod = read(srcModulePath, false, true) Module tgtMod = read(tgtModulePath, false, true) LinkModule oldLm = read(oldLinkModPath, false, true) LinkModule newLm = read(newLinkModPath, true, true) Link lnk Object srcObj, tgtObj // 遍历旧Link Module中模块A的所有出向链接 for lnk in all(srcMod -> oldLm) do { // 仅处理目标为模块B的链接 if (fullName(module(lnk.target)) == tgtModulePath) { srcObj = source lnk tgtObj = target lnk // 在新Link Module创建相同关联 create(newLm, targetLinkSetName, srcObj, tgtObj) // 删除旧Link Module中的原链接 delete lnk } } // 保存所有变更并关闭模块 save srcMod save tgtMod save newLm close srcMod close tgtMod close oldLm close newLm print "迁移任务执行完成,请检查新Link Module中的链接完整性"
脚本注意事项
- 脚本中所有路径需与DOORS项目浏览器中的绝对路径完全匹配,路径区分大小写
- 若你的链接配置了自定义属性,需要在
create语句中补充自定义属性的赋值逻辑,避免属性值丢失 - 迁移完成后建议导出新Link Module的链接清单,与旧Link Module备份的清单做逐一比对,确认无遗漏、无错误
内容的提问来源于stack exchange,提问作者peetman
相关产品推荐
相关产品推荐

