'ea_localid' 值如何分布在 Enterprise Architect API 中?

How are 'ea_localid' values distributed in Enterprise Architect API?

在使用 Enterprise Architect API 时,我注意到当您将 EA 项目导出到 XMI 时,几种不同类型的元素会获得一个名为 ea_localid 的属性。这意味着在 XMI 中,您将找到一个具有 ea_localid 作为属性的标记。此属性似乎用于引用连接元素的源和目标(至少这对 'transitions' 有效,因为我们正在使用状态机图)。

到目前为止,还不错。现在我的预期用途的问题是这些值似乎是 每次您进行导入和导出时新分配的 。编辑:我不太清楚在这个过程中的确切时间。编辑#2 它似乎发生在导入时。

这意味着在导出您的项目后,重新导入它,不做任何更改,然后再次导出它会为生成的 XMI 文档提供一组不同的 ea_localid 值。此外,似乎以前属于一个元素的某些值现在可以用于完全不同的元素。

有人知道分配机制吗?或者,更好的是,一种模仿它的方法?或者重置所有计数器的方法?

据我所知,通常似乎有不同的 类 元素,在这些 类 中,下一个元素的新 ea_localid 是通过计算 + 1.所以第一个的值为 1,然后下一个为 2,依此类推。

我的目标是执行 'roundtrips'(XMI --> 项目 --> XMI ...)并始终获得相同的 ea_localid 值,这可能通过在导出后编辑 XMI 文档来实现。任何帮助或建议将不胜感激。干杯

ea_localid 表示元素的 elementID(或 AttributeID 表示属性等...)

在 EA 中,每个“事物”都有两个 ID。一个数字 ID 和一个 GUID。

数字ID(例如t_object.Object_ID)在大多数关系中用作键,但这并不稳定。

导入 XMI 文件等操作可以重置数字 ID。这解释了 ea_localID 变化的原因。

如果您正在寻找稳定的 ID,您应该使用 GUID。这一个保证保持不变,即使在导出和导入到其他模型之后也是如此。 (只要导入时不设置标志Strip GUIDs

在 xmi 文件中,您会在属性 xmi.id 中找到那些 stable id 例如

<UML:Class name="Aannemer" xmi.id="EAID_04A526DF_7F07_4475_8E65_16D2D88CEECD" visibility="public" namespace="EAPK_0345C8A9_9E8F_42c5_9931_CB842233B11B" isRoot="false" isLeaf="false" isAbstract="false" isActive="false">

此值对应于每个表中的 ea_guid 列。

因此,经过一些测试后,我发现关于上述执行往返(xmi --> 导入 EA --> xmi)并始终获得完全相同文档的目标,最简单的解决方案是 .. .

运行 xmi 上的过滤器,仅删除包含 ea_localidea_sourceID(原文如此!)和 ea_targetID 值的所有节点。

在重新导入时,EA 只会为它们分配新的值。有关 'transitions' 和其他连接元素的源和目标的信息也与 GUID 一起存储,因此不会丢失信息。