【发布时间】: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