保存所有高级过滤器的 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")
形式。
我找到了一个可以让用户编写高级过滤器的脚本;此脚本可以从每个视图加载当前过滤器,但不能加载 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")
形式。