我需要检查模型是否触发一个或多个OCL约束。 模型存储在XMI中,加载EMF。 OCL约束自动生成(String等)。
我找到了一种检查EObject上约束的方法
helper.setContext(ecClass);
query = helper.createQuery(expression);
Object o = ocl.check(eo, invariant);
然后o包含结果:true或false。
我是否必须“手动”检查模型的每个对象,或者是否有方法,方法或类可以直接(并且可能更有效)?
请注意: - 没有建模信息是硬编码的:元模型,模型和OCL以最通用的方式操作, - 我在独立软件上工作:所有罐子都是专门添加的。我曾尝试使用DresdenOCL,但我不知道为什么注册包很麻烦。
答案 0 :(得分:0)
根据您的要求(检查对象的时间和地点),您可以尝试使用通知和/或向您自己的扩展EMF EObject的EObject实现添加一些逻辑。