XMI元素标签无法在EA「元素」标签页显示为构造型属性的解决方法
如何让EA导入XMI时将构造型标签显示为「元素」标签页的属性?
问题背景
我们正在开发一款不依赖Enterprise Architect(EA)的UML模型转XMI 2.1工具,已添加EA专属<xmi:Extension>元数据适配EA17导入。但导入后出现以下问题:
- 构造型匹配已加载的MDG.Technology配置文件,显示正常,但构造型属性未加载
- 元素标签仅出现在独立的「标签」标签页,而非「元素」标签页的构造型属性区域
相关XMI代码片段:
<xmi:Extension extender="Enterprise Architect" extenderID="6.5"> <elements> <element xmi:idref="{ID1}"> <properties sType="Package" stereotype="CustomPackage" /> <tags> <tag xmi:id="{ID2}" name="CustomTag" value="SomeValue" modelElement="{ID1}" />
经测试确认:<tag>元素的xmi:id属性是核心问题——无该属性或用UUID等外部标识符时,标签无法识别为构造型属性;使用EAID_前缀的哈希格式ID有效,但随机生成该格式ID无效,需遵循EA特定哈希逻辑。
解决方案
1. 正确的EAID_格式生成逻辑
EA要求<tag>的xmi:id必须为EAID_前缀加基于关联元素ID和标签名的MD5哈希值,具体步骤:
- 拼接输入字符串:
{目标元素的xmi:idref值} + ":" + {tag的name属性值} - 对拼接后的字符串计算MD5哈希
- 取MD5哈希值的前8位小写字符,与
EAID_拼接得到最终ID
示例:
假设目标元素xmi:idref为pkg_abc123,标签name为CustomTag:
- 输入字符串:
pkg_abc123:CustomTag - MD5哈希值(示例):
a1b2c3d4e5f6g7h8... - 最终
xmi:id:EAID_a1b2c3d4
2. 配套验证要点
- 确保MDG配置文件中,对应构造型(如
CustomPackage)已显式定义该属性(CustomTag必须是构造型的属性,而非普通标签) <tag>的name属性必须与MDG中构造型属性的名称完全一致(大小写敏感)<tag>的modelElement属性必须准确关联到目标元素的xmi:idref值
修改后的XMI示例
<xmi:Extension extender="Enterprise Architect" extenderID="6.5"> <elements> <element xmi:idref="pkg_abc123"> <properties sType="Package" stereotype="CustomPackage" /> <tags> <tag xmi:id="EAID_a1b2c3d4" name="CustomTag" value="SomeValue" modelElement="pkg_abc123" />
内容的提问来源于stack exchange,提问作者JFX
相关产品推荐
相关产品推荐

