IBM Rhapsody是否支持批量导入多个枚举项?如何实现?
IBM Rhapsody 批量导入枚举项实现方案
IBM Rhapsody 原生支持批量导入枚举项,无需手动逐个录入,以下是两种可直接落地的操作方法:
方案1:内置表格视图导入(零代码,适合常规场景)
这是操作成本最低的方式,不需要写脚本,全程可视化操作:
- 提前整理好所有枚举项,存为标准CSV格式:第一列为枚举项名称,第二列可按需填写枚举对应的整型值、备注说明,不要带合并单元格、特殊转义字符
- 打开目标Rhapsody工程,在需要存放枚举的包/命名空间下,手动新建一个空白的
Enumeration类型,设置好枚举的名称 - 右键点击这个空白枚举,在右键菜单中选择
Table View切换到表格编辑模式 - 点击表格视图顶部工具栏的导入按钮,选中提前准备好的CSV文件,在弹出的字段映射弹窗中,将CSV的列分别对应到枚举的
Name(枚举项名称)、Value(枚举值)、Description(备注)属性,确认映射关系后点击完成 - 导入结束后切回常规模型视图,校验枚举项数量、名称、值是否正确即可,导入的条目会直接写入模型,后续代码生成会自动识别所有条目。
方案2:官方API脚本批量写入(适合带自定义属性的复杂场景)
如果你的枚举项需要同步多个自定义构造型属性,表格导入无法满足映射需求,可以直接调用Rhapsody内置API写脚本批量创建:
- 打开Rhapsody内置脚本编辑器,菜单路径为
Tools > Development > Script Editor,支持运行Java、Python两类脚本 - 核心实现逻辑参考如下代码,替换成你自己的枚举项读取逻辑即可:
# 关联当前打开的Rhapsody活动工程 rhapsody_app = RhapsodyAppServer.getActiveRhapsodyApplication() active_project = rhapsody_app.activeProject() # 定位到枚举要存放的目标包,替换成你自己的包路径 target_package = active_project.findNestedPackageRecursive("Model::DefaultPackage") # 创建空白枚举对象 target_enum = target_package.addNewAggr("Enumeration", "CustomStatusEnum") # 替换为你从本地文件读取到的枚举项列表,格式为(枚举项名称, 枚举整型值) enum_item_source = [ ("STATUS_INIT", 0), ("STATUS_RUNNING", 1), ("STATUS_FINISHED", 2) ] # 循环写入所有枚举项 for literal_name, literal_value in enum_item_source: enum_literal = target_enum.addNewAggr("EnumerationLiteral", literal_name) enum_literal.setValue("Value", str(literal_value)) # 如果有自定义属性,可在此处继续给属性赋值
- 脚本编写完成后直接在编辑器内点击运行,执行完成后刷新模型即可看到所有枚举项,只要提前校验好枚举项的命名符合Rhapsody模型规范,基本不会出现录入错误。
注意:不要尝试通过修改Rhapsody自动生成的代码反向同步枚举,Rhapsody默认的代码同步链路是模型单向生成代码,直接修改生成的代码不会回写到模型中,反而会导致模型和代码内容不一致。
内容的提问来源于stack exchange,提问作者David Boshton
相关产品推荐
相关产品推荐

