2

我需要检查模型是否触发了一个或多个 OCL 约束。模型存储在 XMI 中,加载了 EMF。OCL 约束是自动生成的(字符串等)。

我找到了一种检查 EObject 约束的方法

helper.setContext(ecClass);
query = helper.createQuery(expression);
Object o = ocl.check(eo, invariant);

o 然后包含结果:真或假。

我是否必须“手动”检查模型的每个对象,或者是否有方法、方法或类可以直接(并且可能更有效)?

请注意: - 没有建模信息是硬编码的:元模型、模型和 OCL 以最通用的方式进行操作, - 我在一个独立的软件上工作:所有 jar 都是专门添加的。我尝试过使用 DresdenOCL,但我不知道为什么包的注册很麻烦。

4

1 回答 1

0

根据您的要求(检查对象的时间和地点),您可以尝试使用通知和/或将一些逻辑添加到您自己的扩展 EMF EObject 的 EObject 实现中。

于 2017-02-04T06:28:34.943 回答