【问题标题】:Import XMI Deletes Sequences导入 XMI 删除序列
【发布时间】:2015-05-21 05:16:25
【问题描述】:

我将包层次结构的 XMI 导入本地模型,并成功导入。

当我将同一个 XMI 导入共享模型(Oracle DB)时,序列图中的所有序列和消息都会被删除。

有什么想法吗?

【问题讨论】:

    标签: enterprise-architect


    【解决方案1】:

    这是一个已知问题。 (在EA论坛搜索“版本控制”+“时序图”)

    在序列图中使用实例而不是分类器将在一定程度上解决这个问题。

    【讨论】:

    • 谢谢。您的意思是使用实例而不是链接,还是使用实例而不是生命线?
    • 这本身并不是一个真正的问题。问题是 EA 不强制使用实例并允许使用类。使用实例将 100% 解决问题。它隐藏在您需要执行此操作的帮助中。
    • @ThomasKilian,谢谢。但我的序列图不包含链接。它们包含组件的实例。有什么想法吗?
    • 在这种情况下,您应该报告一个错误。我不会看到组件和类实例之间的区别。如果您使用元素链接而不是实例,那么 Geert 提到的问题是明确的。
    【解决方案2】:

    模型的 XMI 表示包含有关导出包中的元素及其连接器的信息。然而,在结构上,连接器并未存储在 EA 数据模型的包中,因此 EA 只需将连接任何元素到其他任何东西的每个连接器写入 XMI 文件,无论连接器另一端的元素是否是范围内。

    另一方面,连接器的定义是两端连接——您不能在 EA 中创建仅连接到一端的元素的连接器。这意味着每个连接器都被写入 XMI 文件并引用其两个元素。

    如果两个元素都在 XMI 导出的范围内(在同一个包树中),那么一切都很好。但如果只有其中之一,EA 将无法在导入时重新创建连接器——XMI 文件中仅存在一个元素。发生这种情况时,EA 将忽略有问题的连接器。

    例外情况是 XMI 文件中缺少的元素恰好已经在模型中。在这种情况下,EA 将重新创建连接器。我认为这可能就是您在“本地”模型中看到的内容。

    【讨论】:

    • 感谢您的详细解答。如果存在指向导出包之外的元素的连接器,则在空本地模型中肯定存在问题,就像在 Oracle 模型中一样。但是,在我的情况下,导入在本地模型中成功,而在 Oracle 中失败。还有其他想法吗?
    【解决方案3】:

    使用 Enterprise Architect v.13,我设法摆脱了麻烦; 假设您的序列有生命线,其实例分类器设置为您希望在我们的序列中使用的类/组件:

    1. 右键单击要导出的包
    2. 转到包基线并为包创建新基线
    3. 显示基线后,从“基线”中选择“导出文件”
    4. 另存为 XMI 文件
    5. 在其他 EAP 项目中导入 XMI 文件。

    我比较了从基线生成的 XMI 文件和通过单击“导入/导出”选项生成的 XMI,它们之间存在差异......看起来基线的导出 XMI 包含模型的完整信息(包括根节点),因此我认为导入过程可能会将每个链接解析到不在同一个包中的对象...

    【讨论】:

      猜你喜欢
      • 2018-08-26
      • 1970-01-01
      • 2020-05-31
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      相关资源
      最近更新 更多