Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用户模型中的OCL条件_Java_Eclipse_Model_Conditional Statements_Ocl - Fatal编程技术网

Java 用户模型中的OCL条件

Java 用户模型中的OCL条件,java,eclipse,model,conditional-statements,ocl,Java,Eclipse,Model,Conditional Statements,Ocl,我试图使用基于ecore用户模型的OCL条件。 我的第一个问题是,在这种情况下是否可能使用OCL条件。因此,在我的特殊情况下,用户可以创建自己的模型,其中包含自己的任务、序列流、变量等等。用户还可以在运行时定义自己的OCL条件。到目前为止还不错 一个简单的例子:我想创建一个条件来验证用户模型xy的变量值是否大于5。 我的问题是我想评估用户模型本身的条件,而不是它的元模型。在我看到的每个代码片段(如下所示)中,OCLHelper的上下文都是在一个元模型(Literals.LIBRARAY)上设置的

我试图使用基于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);
OCL-OCL=OCL.newInstance(新数据透视环境工厂());
OCLHelper=ocl.createOCLHelper(EXTLibraryPackage.Literals.LIBRARY);
ExpressionInOCL invariant=helper.createInvariant(
“书籍->全部(b1,b2 | b1 b2意味着b1.title b2.title)”;
expressionIOCL query=helper.createQuery(
“图书->收藏(b:Book | b.category)->资产()”;
//创建查询以计算查询表达式
queryqueryeval=ocl.createQuery(查询);
//创建另一个以检查约束
Query constraintEval=ocl.createQuery(不变量);

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

createOCLHelper的参数标识您的类型系统,即元模型。将在这些类型的实例上检查约束。i、 给你的模型打电话

问候

埃德·威林克