我想知道如何在Enterprise Architect中创建自定义搜索定义,以及如何在除AddIn名称之外的“我的搜索”之外将它们包含在多个自定义组中。
这是我到目前为止尝试过的:
repository.AddDefinedSearches()
添加搜索时,定义的搜索将出现在与注册的AddIn同名的自定义组中。有没有一种方法可以拥有多个自定义组(无需注册多个插件)?
在Sparx文档中,我找不到任何提示。谢谢您的帮助和答复。
答案 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名称无关):
对我来说,此方法被证明更容易,因为我在resource.resx
中定义了多个SQL查询语句,并希望在AddIn启动时动态加载它们。创建和使用 MDG技术文件似乎需要更多工作(尽管也可以即时创建)。
注意:这不适用于 AddIn搜索,其中AddInMethodName
必须在AddIn的程序集中解析为Type.FullName
。