IBM Rational DOORS中如何创建判断属性含"shall"的DXL布尔属性
问题根因
你之前写的DXL脚本存在两个核心错误,导致属性无法正常生效:
- DXL属性的运行逻辑是逐对象计算当前对象的属性值,不需要写循环遍历模块内所有对象,全量遍历会引发值覆盖、计算冲突问题
- 你创建的是布尔类型属性,却给它赋值了字符串格式的"True"/"False",类型不匹配,DOORS无法识别赋值结果
正确实现方法
按以下步骤操作即可:
- 打开目标模块,切换到编辑模式
- 依次进入「编辑」->「属性」列表,选中
Is Requirement?属性点击「编辑」,确认属性类型设置为布尔 - 勾选「DXL属性」选项,删除原有错误代码,粘贴下方正确脚本:
// 脚本运行时自动绑定当前计算的对象,无需额外遍历 string objText = obj."Text" if (objText contains "shall") { obj.attrDXLName = true } else { obj.attrDXLName = false }
- 保存DXL脚本,确认属性配置后,执行「工具」->「刷新DXL属性」,全模块对象的该属性就会自动完成计算赋值。
补充说明:如果需要精确匹配独立单词"shall",避免误匹配"shallow""shallnot"这类包含shall字符的词汇,可以使用正则版本的判断逻辑:
Regexp shallMatch = regexp2 "\\bshall\\b" string objText = obj."Text" obj.attrDXLName = shallMatch objText delete shallMatch代码里的
attrDXLName是DXL属性内置常量,自动指代当前配置的DXL属性,后续如果修改属性名也不需要调整代码。
内容的提问来源于stack exchange,提问作者Bijan Sanchez
相关产品推荐
相关产品推荐

