用户模型中的OCL条件

时间:2017-05-01 21:20:34

标签: java eclipse model conditional-statements ocl

我正在尝试使用基于ecore用户模型的OCL条件。 我的第一个问题是在这种情况下是否甚至可以使用OCL条件。因此,在我的特殊情况下,用户可以创建自己的模型,其中包含自己的任务,序列流,变量等。用户还可以在运行时中定义自己的OCL条件。到目前为止一切都很好。

一个简单的例子:我想创建一个条件来验证用户模型的变量值是否为xy> 5。 我的问题是我想评估用户模型本身的条件,而不是它的元模型。在我看过的每个代码片段中(如下所示),OCLHelper的上下文是在元模型(Literals.LIBRARAY)上设置的。

如何将OCL条件用于我的目的?

OCL ocl = OCL.newInstance(new PivotEnvironmentFactory());
OCLHelper helper = ocl.createOCLHelper(EXTLibraryPackage.Literals.LIBRARY);
ExpressionInOCL invariant = helper.createInvariant(
    "books->forAll(b1, b2 | b1 <> b2 implies b1.title <> b2.title)");
ExpressionInOCL query = helper.createQuery(
    "books->collect(b : Book | b.category)->asSet()");

// create a Query to evaluate our query expression
Query queryEval = ocl.createQuery(query);
// create another to check our constraint
Query constraintEval = ocl.createQuery(invariant);

1 个答案:

答案 0 :(得分:0)

如果你想在Ecore中使用OCL,你可能会发现使用OCLinEcore编辑器可以让生活更轻松。

createOCLHelper的参数标识您的类型系统,即您的元模型。在这些类型的实例上检查约束。即你的模特。

此致

Ed Willink