【发布时间】:2015-05-21 05:16:25
【问题描述】:
我将包层次结构的 XMI 导入本地模型,并成功导入。
当我将同一个 XMI 导入共享模型(Oracle DB)时,序列图中的所有序列和消息都会被删除。
有什么想法吗?
【问题讨论】:
我将包层次结构的 XMI 导入本地模型,并成功导入。
当我将同一个 XMI 导入共享模型(Oracle DB)时,序列图中的所有序列和消息都会被删除。
有什么想法吗?
【问题讨论】:
这是一个已知问题。 (在EA论坛搜索“版本控制”+“时序图”)
在序列图中使用实例而不是分类器将在一定程度上解决这个问题。
【讨论】:
模型的 XMI 表示包含有关导出包中的元素及其连接器的信息。然而,在结构上,连接器并未存储在 EA 数据模型的包中,因此 EA 只需将连接任何元素到其他任何东西的每个连接器写入 XMI 文件,无论连接器另一端的元素是否是范围内。
另一方面,连接器的定义是两端连接——您不能在 EA 中创建仅连接到一端的元素的连接器。这意味着每个连接器都被写入 XMI 文件并引用其两个元素。
如果两个元素都在 XMI 导出的范围内(在同一个包树中),那么一切都很好。但如果只有其中之一,EA 将无法在导入时重新创建连接器——XMI 文件中仅存在一个元素。发生这种情况时,EA 将忽略有问题的连接器。
例外情况是 XMI 文件中缺少的元素恰好已经在模型中。在这种情况下,EA 将重新创建连接器。我认为这可能就是您在“本地”模型中看到的内容。
【讨论】:
使用 Enterprise Architect v.13,我设法摆脱了麻烦; 假设您的序列有生命线,其实例分类器设置为您希望在我们的序列中使用的类/组件:
我比较了从基线生成的 XMI 文件和通过单击“导入/导出”选项生成的 XMI,它们之间存在差异......看起来基线的导出 XMI 包含模型的完整信息(包括根节点),因此我认为导入过程可能会将每个链接解析到不在同一个包中的对象...
【讨论】: