【问题标题】:OCL conditions in usermodels用户模型中的 OCL 条件
【发布时间】:2017-09-29 07:37:14
【问题描述】:

我正在尝试使用基于 ecore 用户模型的 OCL 条件。 我的第一个问题是在这种情况下是否可以使用 OCL 条件。因此,在我的特殊情况下,用户能够创建一个具有自己的任务、序列流、变量等的模型。用户还可以在运行时定义自己的 OCL 条件。到目前为止一切顺利。

一个简单的例子:我想创建一个条件来验证用户模型xy的变量的值是否> 5。 我的问题是我想评估用户模型本身的条件,而不是它的元模型。在我见过的每个代码 sn-p 中(如下所示),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);

【问题讨论】:

    标签: java eclipse model conditional-statements ocl


    【解决方案1】:

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

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

    问候

    艾德·威林克

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-04
      • 2017-03-24
      • 2012-03-12
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多