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

请求基于属性关联的DOORS高级链接DXL脚本实现自动跨模块批量链接

基于属性关联的DOORS高级链接DXL脚本实现自动跨模块批量链接

我完全懂你手动拖放链接有多崩溃——几百条对象要一个个连,效率低到想砸键盘。正好我之前帮团队解决过几乎一模一样的DOORS 9.6批量链接问题,给你一套经过验证的DXL脚本,配合CSV映射表就能自动完成跨模块链接,省去手动操作的麻烦。

第一步:准备匹配用的CSV文件

首先你需要整理一个CSV映射表,用来定义模块1(MIL手册)和模块2(待关联 artifacts)对象的对应关系。格式要简单清晰:

  • 第一行是表头(可以自定义,脚本会跳过)
  • 后续每行是一组匹配对,必须用唯一属性值(比如自定义的ID字段,避免Object Text重复导致匹配错误)

示例CSV内容:

MIL-Handbook-ID,Artifact-ID
MIL-0001,ART-1001
MIL-0002,ART-1002
MIL-0003,ART-1003

注意:如果属性值包含逗号,一定要用双引号把值括起来,比如 "MIL-0001, Rev B",ART-1001

第二步:使用定制化DXL脚本

下面的脚本已经适配DOORS 9.6,你只需要根据自己的模块路径、属性名等修改顶部的配置参数即可。脚本会自动读取CSV、匹配对象、创建链接,还会输出操作日志方便排查问题。

// -------------------------- 配置参数:请根据实际情况修改 --------------------------
string sModule1Path = "/Your/Project/Path/MIL Handbook Module"  // 模块1的完整DOORS路径
string sModule2Path = "/Your/Project/Path/Artifacts Module"    // 模块2的完整DOORS路径
string sLinkModulePath = "/Your/Project/Path/Link Module"      // 链接模块的完整DOORS路径
string sCSVFilePath = "C:/DOORS_Batch_Links/link_mapping.csv"  // CSV文件的本地绝对路径
string sModule1MatchAttr = "Object Text"                       // 模块1用于匹配的属性名(比如自定义ID)
string sModule2MatchAttr = "Object Text"                       // 模块2用于匹配的属性名
string sLinkType = "Related to"                               // 要创建的链接类型(需在链接模块中已定义)
// -----------------------------------------------------------------------------

// 尝试打开模块(需编辑权限)
Module m1 = edit(sModule1Path, false)
Module m2 = edit(sModule2Path, false)
LinkModule lm = edit(sLinkModulePath, false)

// 检查模块是否成功打开
if (null m1 || null m2 || null lm) {
    print "❌ 错误:无法打开指定模块,请检查路径是否正确,以及是否有编辑权限!\n"
    exit
}

// 打开CSV文件
File csvFile = open(sCSVFilePath, "r")
if (null csvFile) {
    print "❌ 错误:无法找到CSV文件,请检查本地路径是否正确!\n"
    close(m1); close(m2); close(lm)
    exit
}

string line
int lineNumber = 0
// 跳过CSV表头行
read(csvFile, line)
lineNumber++

// 遍历CSV每一行,处理匹配和链接
while (read(csvFile, line)) {
    lineNumber++
    string valModule1 = "", valModule2 = ""
    bool inQuotes = false
    int charIndex = 0

    // 处理带引号的CSV字段(兼容属性值含逗号的情况)
    while (charIndex < length(line)) {
        char currentChar = line[charIndex]
        if (currentChar == '"') {
            inQuotes = !inQuotes
            charIndex++
            continue
        }
        if (!inQuotes && currentChar == ',') {
            valModule1 = trim(valModule1)
            charIndex++
            break
        }
        valModule1 = valModule1 currentChar
        charIndex++
    }

    // 提取模块2的匹配值,移除可能的首尾引号
    valModule2 = trim(substring(line, charIndex, length(line)))
    if (length(valModule2) >= 2 && valModule2[0] == '"' && valModule2[length(valModule2)-1] == '"') {
        valModule2 = substring(valModule2, 1, length(valModule2)-1)
    }

    // 在模块1中查找匹配对象
    Object obj1 = null
    for obj1 in m1 do {
        if (obj1."$sModule1MatchAttr" == valModule1) {
            break
        }
    }
    if (null obj1) {
        print "⚠️ 警告:第" lineNumber "行,模块1未找到匹配值 '" valModule1 "',跳过\n"
        continue
    }

    // 在模块2中查找匹配对象
    Object obj2 = null
    for obj2 in m2 do {
        if (obj2."$sModule2MatchAttr" == valModule2) {
            break
        }
    }
    if (null obj2) {
        print "⚠️ 警告:第" lineNumber "行,模块2未找到匹配值 '" valModule2 "',跳过\n"
        continue
    }

    // 创建跨模块链接
    Link createdLink = create(obj1, obj2, lm, sLinkType)
    if (null createdLink) {
        print "❌ 错误:第" lineNumber "行,无法为 '" valModule1 "' 和 '" valModule2 "' 创建链接\n"
    } else {
        print "✅ 成功:创建链接 '" valModule1 "' <-> '" valModule2 "'\n"
    }
}

// 清理资源并保存修改
close(csvFile)
save(m1); close(m1)
save(m2); close(m2)
save(lm); close(lm)
print "\n🎉 批量链接操作全部完成!请检查DXL输出日志确认结果"

第三步:使用注意事项

  • 先备份模块! DOORS的DXL操作是直接修改数据库,一旦出错很难回滚,运行脚本前务必导出模块备份。
  • 确保CSV路径是绝对路径,比如C:/xxx/xxx.csv,不要用相对路径,避免DOORS找不到文件。
  • 脚本中指定的属性名和链接类型必须和DOORS中实际存在的一致,否则会报错。
  • 如果模块数据量很大(几千条对象),脚本运行时间会比较长,不要中途关闭DOORS。
  • 运行后查看DXL输出窗口(View -> DXL Output),里面会有详细的成功/失败日志,方便排查问题。

如果运行时遇到特定错误,比如某个属性名写错了,或者链接权限不足,直接看输出日志的提示修改就行。我之前用这个脚本处理过几千条链接,比手动拖放效率提升了几十倍!

备注:内容来源于stack exchange,提问作者Odie Dems

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 07:59:31