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 的成本。
我正在开发一个 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 的成本。