EA中Package Validation未告警Deployment Specification违规部署的问题
针对你的问题,我分享几个实用的解决方案:
1. 自定义OCL约束补全EA的校验规则
EA自带的默认校验确实会遗漏一些UML细粒度的规范要求,最直接的办法是自己写OCL约束来覆盖这个规则:
- 点击顶部菜单栏的
Settings->UML Profiles,新建或编辑一个适配你项目的Profile - 在Profile里添加一个
Constraint,目标元素类型选择DeploymentSpecification,然后写入OCL规则:self.deploymentTarget.oclIsKindOf(ExecutionEnvironment) - 把这个Profile应用到你的目标模型包上,之后再执行
Validate Current Package时,不符合规则的连接就会被检测出来,触发警告或错误
2. 用自定义脚本做批量校验
如果OCL的灵活性不够,你可以用EA的脚本功能写个自定义校验工具:
- 打开
View->Scripting窗口,新建一个JScript或VBScript - 编写逻辑遍历模型里所有的
DeploymentSpecification元素,逐个检查它们的部署目标是否是ExecutionEnvironment类型 - 一旦发现违规,用
Repository.WriteOutput把错误信息输出到Output窗口,也可以直接给元素打标记,方便定位
3. 确认项目的UML版本匹配
有时候EA的校验规则会和项目设置的UML版本绑定,你可以检查一下:
- 打开
Project->Project Properties->UML标签,确认选择的UML版本是2.5.x,和你参考的规范版本保持一致,避免版本不匹配导致校验规则不生效
4. 开启EA的严格校验模式
部分EA版本在Model Validation Configuration或者项目属性里提供了“严格UML合规”的开关,你可以再仔细核对一下配置界面,看看有没有类似Enforce Strict UML Compliance的选项,开启后会增强规范校验的力度
内容的提问来源于stack exchange,提问作者Ronald Rink 'd-fens'
相关产品推荐
相关产品推荐

