保存所有高级过滤器的 DXL 脚本

DXL script to save all advanced filters

我找到了一个可以让用户编写高级过滤器的脚本;此脚本可以从每个视图加载当前过滤器,但不能加载 Filtering 对话框中存在的所有过滤器。我希望能够提取所有当前的高级过滤器,即使只是作为字符串(因为我有工具可以将这些字符串解析回 Filter class 对象)。如果有人知道用于检索该信息的 DXL 函数,或者过滤器字符串的存储位置,我将不胜感激。 注意:没有运气在 Rational 论坛上找到它。

我不希望现有 API 可以解决您的问题。一种方法可能是重新编码过滤器对话框并添加您的额外功能。例如。您可以将高级筛选器列表存储在磁盘上,然后从任何您想要的地方重新使用它们。

这是我的破解方法。基本上,中间有一些设置和操作线,以及一堆过滤器定义和组合。这会将定义的过滤器保存为当前视图的一部分。

// copypaste next block into DXL edit window
string viewName = "My_View"
filtering off
// individual items first
Filter head = attribute "_ObjectType" == "Heading"
Filter req = attribute "_ObjectType" == "requirement"
Filter inrev = attribute  "_ReqStatus" == "In Review"
Filter ApprListBob = includes(attribute "_ApprovalList","BobJones")
Filter ApprListMary = includes(attribute "_ApprovalList","MaryContrary")
// now combine as desired. examples shown
// Filter ftwo =  ((head && !freq) || inrev)

Filter foofilt = (head ) || (req  && inrev) //) && ApprListBob
set foofilt
filtering on 
// now write  
addFilter(  foofilt)
set( foofilt)
refresh current       // module...
save view viewName //last arg is viewname
// end of copypaste block

对于 DXL 语法的新手,

&& 对于 AND ||或 !对于 NOT

如果一个属性只能取一个值,请使用 attribute "atname" == "value" 形式。如果它可以取多个值(例如清单),请使用 includes(attribute "atname", "value") 形式。