如何在Sparx Enterprise Architect的“在项目中查找”内部创建多个自定义搜索组

时间:2019-08-11 11:55:47

标签: enterprise-architect

我想知道如何在Enterprise Architect中创建自定义搜索定义,以及如何在除AddIn名称之外的“我的搜索”之外将它们包含在多个自定义组中。

这是我到目前为止尝试过的:

  • 我导出了搜索定义,并查看了生成的XML,但在那里找不到与组名的任何关系。
  • 当我通过repository.AddDefinedSearches()添加搜索时,定义的搜索将出现在与注册的AddIn同名的自定义组中。

有没有一种方法可以拥有多个自定义组(无需注册多个插件)?

在Sparx文档中,我找不到任何提示。谢谢您的帮助和答复。

Find in Project Screen

2 个答案:

答案 0 :(得分:1)

您可以使用创建MDG技术向导将搜索添加到MDG。

如果您导入该MDG,则这些搜索将以MDG的名称显示在其适当的组中。

答案 1 :(得分:1)

@ geert-bellekens的回答肯定有效。但是,我找到了另一种方法来达到相同的效果(对于我的插件设置来说,它工作起来稍微容易一些。)

SQL搜索查询的受保护结构定义如下:

<?xml version="1.0" encoding="UTF-8"?>
<RootSearch>
  <Search Name="{0}" GUID="{1}" PkgGUID="-1" Type="0" LnksToObj="0" CustomSearch="1" 
    AddinAndMethodName="{3}">
    <SrchOn>
      <RootTable Filter="{2}" Type="-1">
        <TableName Display="Custom SQL Search" Name="" />
        <TableHierarchy Display="" Hierarchy="" />
      </RootTable>
    </SrchOn>
    <LnksTo />
  </Search>
</RootSearch>

属性AddInMethodName实际上是作为组名的名称,在该名称下将出现搜索(不必与定义的AddIn名称相关)。

因此,我们可以定义具有不同组名的查询,如下所示:

var displayName = // arbitrary search display name;
var sql = "SELECT * FROM t_object"; // arbitrary SQL search string;
var guid = "{11111111-2222-3333-4444-555555555555}" // any guid;
var groupName = // arbitrary group name (without dot)
var addInSearchName = groupName + "." + displayName;

var xml = string.Format(TEMPLATE_SQL_SEARCH, displayName, guid, sql, addInSearchName);

repository.AddDefinedSearches(xml);

然后结果可能如下所示(组名称​​ SMVSQL 与实际的AddIn名称无关): Search group name

对我来说,此方法被证明更容易,因为我在resource.resx中定义了多个SQL查询语句,并希望在AddIn启动时动态加载它们。创建和使用 MDG技术文件似乎需要更多工作(尽管也可以即时创建)。 注意:这不适用于 AddIn搜索,其中AddInMethodName必须在AddIn的程序集中解析为Type.FullName