JAVA中解析OCL解析的参数

Parameters for parsing OCL Parsing in JAVA

我正在开发一个 java 应用程序,它将一组有效模型和一组无效模型作为输入,自动生成 OCL 约束,我的 objective 是检查模型违反约束或没有。

我在这个主题上找到了一个答案,但参数不是很清楚。

有谁知道我应该做什么而不是 "EXTLibraryPackage.Literals.LIBRARY"

// 创建一个 OCL 辅助对象 OCLHelper 助手 = ocl.createOCLHelper();

    // set the OCL context classifier
    helper.setContext(EXTLibraryPackage.Literals.LIBRARY);

    Constraint invariant = helper.createInvariant(
        "books->forAll(b1, b2 | b1 <> b2 implies b1.title <> b2.title)");

    OCLExpression<EClassifier> query = helper.createQuery(
        "books->collect(b : Book | b.category)->asSet()");

OCL 在模型上定义表达式,您必须为其提供元模型,以便 OCL 理解您的类型系统。 EXTLibraryPackage.Literals.LIBRARY 是对 EXTLibrary 示例根目录下的 genmodeled 包的引用。

要重用相同的样式,您应该对模型进行 genmodel 并引用相应的 EPackages。

然而,以这种方式以编程方式使用 OCL 远非唯一或最佳方式。如果您有模型,那么您可以在 Sample Ecore Editor 中加载您的模型并在那里进行验证。请参阅 Eclipse OCL 文档的验证方面。您甚至可以将 OCL 转换为 Java 以避免在解释器中执行 OCL 的成本。