我找到了一个允许用户编写高级过滤器的脚本;此脚本可以从每个视图加载当前过滤器,但不能加载Filtering
对话框中存在的所有过滤器。我希望能够提取所有当前的高级过滤器,即使只作为字符串(因为我有工具将这些字符串解析回Filter
类对象)。如果有人知道DXL函数来检索该信息,或者存储过滤器字符串的位置,我会很感激信息。
注意:没有运气在Rational论坛中追逐它。
答案 0 :(得分:0)
我不认为现有的API可以解决您的问题。一种方法可能是重新编码过滤器对话框并添加额外的功能。例如。您可以将高级过滤器列表存储在磁盘上,然后从任何您想要的地方重复使用它们。
答案 1 :(得分:0)
这是我的黑客方法。基本上,有一些设置和操作线,以及一堆中间的过滤器定义和组合。这会将定义的过滤器保存为当前视图的一部分。
// 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 ||对于OR !对于NOT
如果某个属性只能使用一个值,请使用attribute "atname" == "value"
形成。如果它可以采用多个值(例如核对表),请使用includes(attribute "atname", "value")
表单。