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

能否在IBM DOORS中基于其他属性值动态更新枚举类型?

在IBM DOORS中动态同步枚举属性与配置项列表

要实现基于配置项列表自动更新枚举属性,核心是通过DOORS的DXL脚本读取配置项并同步枚举值,以下是具体实现方案:

实现步骤与脚本示例

  1. 提取配置项列表:从存储配置项的模块中读取所有对象文本作为枚举候选值
  2. 定位目标枚举属性:找到需要动态更新的枚举类型属性定义
  3. 同步枚举值:清空旧枚举值,批量添加新的配置项作为枚举选项
  4. 触发同步:可手动执行脚本,或配置模块事件自动触发

示例DXL脚本

// 配置参数:替换为你的实际模块路径和属性名
string configModulePath = "/项目/配置项模块" // 存储配置项的模块路径
string targetAttrName = "关联配置项"         // 需要更新的枚举属性名

// 打开配置项模块
Module configModule = edit(configModulePath, false)
if (null configModule) {
    print "错误:无法打开配置项模块\n"
    exit
}

// 收集非空的配置项名称
Skip configItems = create()
Object configObj
for configObj in configModule do {
    string itemName = configObj."Object Text"
    if (!null itemName && itemName != "") {
        put(configItems, itemName, itemName)
    }
}

// 定位目标枚举属性
Module targetModule = current // 若需指定其他模块,替换为open("目标模块路径", false)
AttrDef enumAttr = attrDef(targetModule, targetAttrName)
if (null enumAttr || type(enumAttr) != ENUM) {
    print "错误:目标属性不存在或不是枚举类型\n"
    delete configItems
    close configModule
    exit
}

// 清空旧枚举值并添加新配置项
Enum enumDef = enumType(enumAttr)
clear enumDef

string itemKey
for itemKey in configItems do {
    add(enumDef, itemKey)
}

// 保存变更并反馈结果
save(targetModule)
print "枚举属性同步完成,共添加 " numberOf(configItems) " 个配置项\n"

// 清理资源
delete configItems
close configModule

关键注意事项

  • 权限要求:运行脚本需要目标模块和配置项模块的编辑权限,配置自动触发需管理员权限
  • 非法字符处理:确保配置项名称不包含枚举值禁止的字符(如逗号、双引号),否则脚本会报错
  • 自动触发配置:如需在配置项变更时自动同步,可将脚本绑定到配置项模块的Post-Modify事件,或通过定时任务执行脚本
  • 数据校验:可在脚本中添加重复值过滤、空值排除等逻辑,避免无效枚举值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:45:37