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

如何使用DOORS DXL读取解析CSV文件以创建模块对象链接?

实现步骤与DXL脚本示例

前置准备

  • 确认CSV格式:每行严格为源对象绝对ID,目标对象绝对ID,无多余空格;若有表头,需在脚本中跳过第一行
  • 确保DOORS源模块、目标模块已存在,且你拥有编辑权限
  • 提前创建好用于存储跨模块链接的链接模块(Link Module),记好模块名称

完整DXL脚本示例

// 配置参数,根据实际情况修改
string csvFilePath = "C:/your_path/link_map.csv"  // CSV文件路径
string linkModuleName = "CrossModuleLinks"       // 链接模块名称
Module sourceMod = null
Module targetMod = null

// 打开源模块与目标模块(替换为你的模块实际路径)
sourceMod = open("/Project/Requirements/Source_Module", false)  // false表示可编辑模式
targetMod = open("/Project/Design/Target_Module", false)

// 检查模块是否成功打开
if (null sourceMod || null targetMod) {
    print "无法打开源/目标模块,请检查路径或权限\n"
    exit
}

// 打开CSV文件
Stream csvStream = read(csvFilePath)
if (null csvStream) {
    print "无法读取CSV文件,请检查路径是否正确\n"
    close(sourceMod)
    close(targetMod)
    exit
}

string line
Object sourceObj, targetObj
int lineCount = 0

// 逐行解析CSV并创建链接
while (readline(csvStream, line)) {
    lineCount++
    // 跳过空行
    if (length(line) == 0) continue
    
    // 分割行数据(按逗号拆分)
    int commaIndex = index(line, ",")
    if (commaIndex == -1) {
        print "第" stringOf(lineCount) "行格式错误,无分隔符,已跳过\n"
        continue
    }
    
    string sourceAbsId = trim(substring(line, 0, commaIndex))
    string targetAbsId = trim(substring(line, commaIndex+1, length(line)))
    
    // 查找源对象
    sourceObj = object(sourceMod, sourceAbsId)
    if (null sourceObj) {
        print "第" stringOf(lineCount) "行:源模块未找到绝对ID为[" sourceAbsId "]的对象,已跳过\n"
        continue
    }
    
    // 查找目标对象
    targetObj = object(targetMod, targetAbsId)
    if (null targetObj) {
        print "第" stringOf(lineCount) "行:目标模块未找到绝对ID为[" targetAbsId "]的对象,已跳过\n"
        continue
    }
    
    // 创建跨模块链接
    Link newLink = create(sourceObj, targetObj, linkModuleName)
    if (null newLink) {
        print "第" stringOf(lineCount) "行:创建链接[" sourceAbsId "->" targetAbsId "]失败\n"
    } else {
        print "第" stringOf(lineCount) "行:成功创建链接[" sourceAbsId "->" targetAbsId "]\n"
    }
}

// 清理资源
close(csvStream)
close(sourceMod)
close(targetMod)
print "链接创建任务执行完成\n"

关键细节说明

  1. 模块打开:open()函数的第二个参数设为false才能获得编辑权限,没有权限无法创建链接
  2. CSV解析:用trim()去除ID前后的空格,避免因格式问题导致对象查找失败;若CSV有表头,需在循环前额外执行一次readline(csvStream, line)跳过表头行
  3. 对象定位:object(模块, 绝对ID字符串)是通过绝对ID查找对象的核心函数,绝对ID格式为模块ID:对象ID(如10001:56),必须完全匹配
  4. 链接创建:create(源对象, 目标对象, 链接模块名)会在指定的链接模块中生成跨模块链接,需确保链接模块已存在且有权限访问

注意事项

  • 执行脚本前建议备份源模块和目标模块,避免误操作导致数据丢失
  • 若处理大量链接(数千条以上),建议分批次执行脚本,避免DOORS出现卡顿或响应延迟
  • 若需要反向创建链接(目标到源),只需调换create()函数中的源对象和目标对象位置即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:42:10