Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 企业架构师模型搜索XML格式_C#_Xml_Add In_Enterprise Architect - Fatal编程技术网

C# 企业架构师模型搜索XML格式

C# 企业架构师模型搜索XML格式,c#,xml,add-in,enterprise-architect,C#,Xml,Add In,Enterprise Architect,我已经用C为企业架构师编写了几个外接程序。我现在想以类似的方式添加一个复杂的模型搜索。运行外接程序搜索没有问题。我认为我的问题在于XML模型搜索格式。我能找到的唯一文档是 我尝试在EA“JScript-模型搜索(属性)示例”中使用示例JScript和VB脚本文件。当我在EA中运行它时,我不能得到它来给我输出。我相信这一定是用户的错误。我以这段代码为例,尝试从C#外接程序正确输出搜索结果 我不知道的值应该是多少?看起来它应该是搜索的UID。你是怎么发现的?据我所知,JScript示例中缺少它 有没

我已经用C为企业架构师编写了几个外接程序。我现在想以类似的方式添加一个复杂的模型搜索。运行外接程序搜索没有问题。我认为我的问题在于XML模型搜索格式。我能找到的唯一文档是

我尝试在EA“JScript-模型搜索(属性)示例”中使用示例JScript和VB脚本文件。当我在EA中运行它时,我不能得到它来给我输出。我相信这一定是用户的错误。我以这段代码为例,尝试从C#外接程序正确输出搜索结果

我不知道
的值应该是多少?看起来它应该是搜索的UID。你是怎么发现的?据我所知,JScript示例中缺少它


有没有人有一个格式正确的XML搜索格式文件我可以测试?只需手动修改已知的工作文件以匹配我的repo中的元素并导入结果将是一个巨大的帮助。除了上面链接的文档之外,我找不到任何文档。

存储库。RunModelSearch
不会返回任何结果。它只是运行模型搜索(Ctrl-F),就好像用户选择了它并传递了一个搜索词一样。您可以添加自己的XML,模型搜索窗口将显示该XML(因此格式正确)。还有其他方法可以从模型中检索数据。使用
Repository.SQLSearch
Repository.GetElementSet

假设您有以下名为“test”的SQL搜索:

XMLResults参数需要通过引用传递。此函数生成的XML结果需要分配给此参数,以便EA进行进一步处理。此方法的返回值只需要一个非空结果来指示结果应显示在EA中。例如,仅返回布尔真值就足够了


我最大的问题是没有在我的C#函数中使用
out
关键字作为
XMLResults
值。托马斯回答中的函数声明就是这个修正

“MySearchID”的值是搜索的GUID。在EA中使用生成器创建外接程序搜索后,将搜索导出为XML。XML导出文件包含搜索的GUID。使用该值替换“MySearchID”。下面是我的XML输出,它是由C#外接程序生成的,作为一个有效文件的示例:

<ReportViewData UID="{74945F94-D210-4f45-8639-784DAE0DAB1F}">
  <Fields>
    <Field name="CLASSGUID" />
    <Field name="CLASSTYPE" />
    <Field name="Object" />
    <Field name="Type" />
    <Field name="Stereotype" />
  </Fields>
  <Rows>
    <Row>
      <Field name="CLASSGUID" value="{A16DD03A-B1B2-4269-A058-0AB14B933388}" />
      <Field name="CLASSTYPE" value="Class" />
      <Field name="Object" value="Class1" />
      <Field name="Type" value="Class" />
      <Field name="Stereotype" value="AffineConversion" />
    </Row>
    <Row>
      <Field name="CLASSGUID" value="{44E11CA0-1FAE-47ee-9088-D3106F320C57}" />
      <Field name="CLASSTYPE" value="Class" />
      <Field name="Object" value="Class2" />
      <Field name="Type" value="Class" />
      <Field name="Stereotype" value="MessagePort" />
    </Row>
  </Rows>
</ReportViewData>


我想一个XML搜索结果的例子会对我有很大帮助。使用Find in Project->Bulider窗口工具栏中的按钮,我可以使用“导出搜索”创建搜索的XML定义文件。我可以使用“导入搜索”导入与导入搜索定义相同格式的文件。该文件与XML模型搜索格式不同,后者包含搜索结果,而不是搜索定义。我希望我可以导入一个工作文件来测试它,但我误解了导入搜索按钮的功能。现在,如果我有一个格式正确的XML搜索格式文件,我可以创建一个外接程序,只返回一个格式正确的结果。我只需要排除格式问题。一个格式正确的示例将非常有用!托马斯,谢谢你的帮助。我的用例:我有一堆插件代码,可以同步MS项目进度表,并从EA生成MS Excel中的报告。使用对象模型可以让我做一些有趣的事情,比如确定元素是否位于特定图表的边界中。也许我可以在SQL中做到这一点,但我没有做到,因为我也想让MS Office加载项的使用变得简单。因此,我有一大堆C#插件代码的基础设施。我正在EA内部生成一个文档,我想使用现有外接程序代码中的功能进行搜索。您的XML示例帮助我在输出中发现了一个格式问题。谢谢我正在跟踪调查。我想我现在的问题是我不理解所需的返回值。该文档将返回值显示为VB中的变量。描述中只说明“该方法必须返回一个值才能显示结果”。这是否意味着有任何值?我想我一定是错过了什么。另外,我想我可能已经找到了一种方法来找到“我的搜索”的价值。在EA中使用构建器创建外接程序搜索并为其指定外接程序名称和函数名称后,我将该搜索导出为XML。该文件为我创建的搜索提供了GUID。我认为我应该用这个值来代替“MySearchID”。这很难说,因为我不能让它工作。我把这个问题贴在这里,因为我从来没有在网站上找到太多相关的信息。我今天学到的一件事是,该论坛的默认搜索时间是过去一周。你必须点击搜索按钮,选择一个超过上周的搜索周期。在过去的三年里,我认为Sparx论坛没有任何相关内容。我确实找到了几个人,他们也问过我同样的问题。这似乎还没有解决。谢谢你在让我做这项工作后接受了你自己的回答。
<ReportViewData UID="MySearchID" >
 <Fields>
         <Field name="CLASSGUID"/>
         <Field name="CLASSTYPE"/>
 </Fields>

 <Rows>
         <Row>
                 <Field name="CLASSGUID" value="{99660FA1-6927-41bf-9676-521A6C852884}"/>
                 <Field name="CLASSTYPE" value="Class"/>
         </Row>
 </Rows>
</ReportViewData>
public object MyAddinSearch(EA.Repository Repository, String SearchText, out String XMLResults)
<ReportViewData UID="{74945F94-D210-4f45-8639-784DAE0DAB1F}">
  <Fields>
    <Field name="CLASSGUID" />
    <Field name="CLASSTYPE" />
    <Field name="Object" />
    <Field name="Type" />
    <Field name="Stereotype" />
  </Fields>
  <Rows>
    <Row>
      <Field name="CLASSGUID" value="{A16DD03A-B1B2-4269-A058-0AB14B933388}" />
      <Field name="CLASSTYPE" value="Class" />
      <Field name="Object" value="Class1" />
      <Field name="Type" value="Class" />
      <Field name="Stereotype" value="AffineConversion" />
    </Row>
    <Row>
      <Field name="CLASSGUID" value="{44E11CA0-1FAE-47ee-9088-D3106F320C57}" />
      <Field name="CLASSTYPE" value="Class" />
      <Field name="Object" value="Class2" />
      <Field name="Type" value="Class" />
      <Field name="Stereotype" value="MessagePort" />
    </Row>
  </Rows>
</ReportViewData>