"ea_localid"值在Enterprise Architect API中是如何分布的?



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

到目前为止,一切都很好。现在,我打算使用的问题是,每次导入和导出时,这些值似乎都是新分发的。编辑:

我不太清楚在这个过程中的确切时间EDIT#2这似乎发生在导入时。

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

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

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

我的目标是进行"往返"(XMI->项目->XMI…(,并始终获得相同的ea_localid值,可能是在导出后编辑XMI文档。如有任何帮助或建议,我们将不胜感激。干杯

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

在EA中;事物;有两个身份证。一个数字ID和一个GUID。

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

像导入XMI文件这样的事情可以重置数字ID。这就解释了ea_localID发生变化的原因。

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

在xmi文件中,您将在属性xmi.id中找到那些稳定的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只会为它们分配新的值。有关"转换"的源和目标以及其他连接元素的信息也与GUID一起存储,因此不会丢失信息。

最新更新