首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用DOORS DXL通过关键字查找需求

如何使用DOORS DXL通过关键字查找需求
EN

Stack Overflow用户
提问于 2020-05-07 07:39:59
回答 1查看 420关注 0票数 0

我已经为模块A中的每个需求确定了3-5个关键字。每个关键字用逗号分隔。现在我想搜索模块B中的每个需求,看看它们中哪些有与每个关键字匹配的单词。

EN

回答 1

Stack Overflow用户

发布于 2020-05-27 09:30:54

不确定你到底在找什么。您可能需要指定我将要提出的这些解决方案是否都不是您想要的。

如果您正在尝试创建一个在当前视图中仅显示具有这些关键字的对象的筛选器,您可以通过首先转到筛选器(工具>筛选器>定义),然后选择出现的筛选器菜单左下角的高级按钮来创建高级筛选器。

此时,您可以为过滤器创建自定义规则。我只需要为每个单词创建一个单独的规则,定义如下:

代码语言:javascript
运行
复制
Attribute: Object Text
Condition: contains
Value: <insert word here>
Match Case: uncheck
Regular Expression: uncheck

然后选择Add按钮将规则添加到Advanced Options中的可用规则列表中。

此时,您可以在可用规则列表中选择多个规则,并且可以与/或这些规则一起为您想要的视图创建自定义筛选器。

因此,如果您正在尝试创建一个仅包含特定单词的对象的自定义视图,那么这就是适用的。

如果您正在讨论如何编写DXL代码以自动生成包含特定单词的需求。您可以使用如下所示的内容:

代码语言:javascript
运行
复制
Object o
String s
int offset, len

for o in entire (current Module) do
{
  if (isDeleted(o)) continue

  s = o."Object Text"""
  if findPlainText(s, "<insert word here>", offset, len, false)
  {
    print identifier(o)  // or replace this line with however you want to display object
  }
}

希望这能对你有所帮助。干杯!

编辑:

要对逗号分隔的列表执行操作,一次一个,您可以使用带有某种搜索功能的while循环,一次删除一个单词。

代码语言:javascript
运行
复制
void processWord (string someWord, Module mTarget, Object oSource)
{
  Object oTarget
  string objID = identifier(oSource)

  for oTarget in mTarget do
  {
    if (<someWord in oTarget Object Text>) // edit function as necessary to do this
    {
      if (oTarget."Exists""" == "")
        oTarget."Exists" = objID
      else
        oTarget."Exists" = oTarget."Exists" "," objID
    }
  }
}

int offset, len
string searchCriteria
Module mSource = read("<path of source module>", true)
Module mTarget = edit("<path of target module>", true)
Object oSource

for oSource in mSource do // can use "for object in entire(m)" for all objects
{
  if (oSource != rqmt) continue // create conditions specific to your module here

  searchCriteria = oSource."Search Criteria"""
  while (findPlainText(searchCriteria, ",", offset, len, false))
  {
    processWord(searchCriteria[0:offset-1], mTarget, oSource)

    searchCriteria = searchCriteria[offset+1:]
  }
}

processWord(searchCriteria, mTarget, oSource) // for last value in comma separated list
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61647332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档