如何在EA中实现标签枚举等元信息的版本控制同步?
解决方案:Enterprise Architect 标签枚举及元信息版本控制优化
核心问题拆解
EA默认VCS同步仅覆盖已绑定到模型元素的标签实例,而「Tagged Value Types」中的枚举定义、描述这类元数据,以及自定义过滤器等配置,不在自动同步范围内。这些数据存储在项目本地模型文件中,无法通过常规VCS路径同步。
更优解决方案汇总
1. 用EA API自动化导出/导入参考数据
编写脚本(支持VBScript、JScript或C#/.NET)调用EA API,自动完成参考数据的导出、SVN提交及拉取导入流程,完全替代手动操作:
- 导出参考数据核心API示例(VBScript):
Dim repo as EA.Repository Set repo = GetObject(, "EA.Repository") ' 导出标记值类型、过滤器到XML,1=标记值类型,2=过滤器,可按需组合其他类型 repo.ExportReferenceData "C:\EA_Reference_Data\metadata.xml", 1 + 2 - 导入参考数据核心API示例:
repo.ImportReferenceData "C:\EA_Reference_Data\metadata.xml", 1 + 2, 0 ' 0=覆盖现有数据 - 结合SVN命令行工具(
svn commit/svn update),可扩展为一键同步脚本:修改元数据后自动导出提交,拉取最新版本时自动导入。
2. 用「Model Fragments」封装元数据
将「Tagged Value Types」、自定义过滤器等元信息打包为模型片段,把片段文件加入SVN版本控制:
- 在EA中右键点击「Settings」→「Tagged Value Types」,选择「Add to Model Fragment」
- 将生成的
.eapx或.xml片段文件提交到SVN仓库 - 团队成员更新SVN后,导入该片段即可同步最新元数据定义
- 优势:可精准选择同步的元数据类型,导入流程更直观
3. 切换到「Shared Model」模式(推荐)
若使用EA企业版/专业版,可将项目切换为Shared Model架构:
- 将模型核心数据存储在SQL数据库(如SQL Server、MySQL),而非本地
.eap文件 - 此时「Tagged Value Types」、过滤器等元信息直接存在数据库中,团队成员通过数据库连接访问模型,变更实时同步
- 配合SVN管理数据库结构变更脚本,实现完整的模型+元数据版本控制
方案对比
| 方案 | 复杂度 | 自动化程度 | 适用场景 |
|---|---|---|---|
| API脚本自动化 | 中等 | 高 | 已有SVN流程,需最小化改动 |
| 模型片段 | 低 | 中 | 小型团队,元数据变更频率不高 |
| Shared Model + 数据库版本控制 | 高 | 极高 | 大型团队,长期模型协作需求 |
内容的提问来源于stack exchange,提问作者Jonas
相关产品推荐
相关产品推荐

