使用 if else 循环的 DXL 过滤器

DXL filter using if else loop

我正在使用 Door 9.6 并尝试创建一个通用过滤器,该过滤器可用于我项目中的多个文档。 项目文档具有属性 "Requirement Type"。此属性的值可以为 "Functional"、"Non Functional"、"Information" 等。 文件不统一,部分文件有 "Requirement Type" 为 "Functional", "Information" 。 我正在尝试使用 attributeValue() 找出这种变化,但不知何故无法找出代码中的问题。

-E- DXL: <Line:16> incorrect arguments for (||)
-E- DXL: <Line:16> incorrect arguments for (||)
-E- DXL: <Line:16> undeclared variable (f1)
-E- DXL: <Line:16> incorrect arguments for (=)

这是代码

Module m = current
load view("default view")

AttrDef ad = find(current Module, "Requirement Type")

    if (attributeValue(ad, "Non functional")){
        Filter f1 = contains(attribute "Requirement Type", "Non Functional", false)
    }
    else {
        Filter f1= contains(attribute "Requirement Type", "Functional", false)
    }

    Filter f2= contains(attribute "Requirement Type", "Information", false)
    Filter f3= contains(attribute "Requirement Type", "Functional", false)

    Filter set_f = f1 || f2 || f3
    set(current Module, set_f)

当变量声明在{括号}内时,该变量在外部是不可见的。在括号外声明它,但将它们设置在括号内。

Module m = current
load view("default view")

AttrDef ad = find(current Module, "Requirement Type")

Filter f1
if (attributeValue(ad, "Non functional")){
    f1 = contains(attribute "Requirement Type", "Non Functional", false)
}
else {
    f1= contains(attribute "Requirement Type", "Functional", false)
}

Filter f2= contains(attribute "Requirement Type", "Information", false)
Filter f3= contains(attribute "Requirement Type", "Functional", false)

Filter set_f = f1 || f2 || f3
set(current Module, set_f)