You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过DXL或向导基于ReqID将模块A链接复制到模块B?

基于ReqID属性复制DOORS模块间对象链接的实现方案

DXL脚本实现方案

完全可以通过DXL脚本实现,核心逻辑是以ReqID属性为匹配键,替代原有的绝对对象编号匹配。以下是可直接复用的脚本框架:

// 定义要操作的两个模块
Module modA = read("模块A的完整路径", false) // 只读打开模块A
Module modB = edit("模块B的完整路径", false) // 可编辑打开模块B

// 遍历模块B中的所有对象
Object objB
for objB in entire modB do {
    // 获取当前B对象的ReqID属性值
    string reqID = objB."ReqID" // 注意属性名要和实际模块中的一致,区分大小写
    if (reqID == "") continue // 跳过无ReqID的对象

    // 在模块A中查找具有相同ReqID的对象
    Object objA
    for objA in entire modA do {
        if (objA."ReqID" == reqID) {
            // 复制objA的所有 outgoing 链接到objB
            Link lnk
            for lnk in objA -> "*" do {
                create(objB, target(lnk), linkType(lnk))
            }
            // 复制objA的所有 incoming 链接到objB
            for lnk in objA <- "*" do {
                create(source(lnk), objB, linkType(lnk))
            }
            break // 找到匹配对象后退出内层循环,避免重复处理
        }
    }
}

// 保存模块B并关闭
save(modB)
close(modB)
close(modA)

脚本注意事项

  • 替换脚本中模块A的完整路径和模块B的完整路径为实际模块路径,比如"/项目/需求模块/模块A"
  • 确保ReqID属性名和模块中定义的完全一致(DOORS属性区分大小写)
  • 若模块A中存在多个ReqID相同的对象,脚本会只取第一个匹配的对象;如果需要处理多匹配场景,可去掉break并添加重复判断逻辑
  • 操作前建议备份模块,避免误操作

向导实现可行性

DOORS自带的向导(比如链接导入/导出向导)无法直接基于自定义属性(如ReqID)匹配对象并复制链接,因为向导仅支持基于对象编号、层级结构或固定列映射的匹配逻辑。因此向导无法满足你的需求,必须通过自定义DXL脚本实现。

内容的提问来源于stack exchange,提问作者Anton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 22:54:56