首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java解析OCL?

用Java解析OCL?
EN

Stack Overflow用户
提问于 2013-10-31 11:58:10
回答 2查看 3.6K关注 0票数 4

我正在为一个以UML类图(即元模型)作为输入并允许用户创建元模型中指定类型的图的课程编写Java程序。然后,用户应该能够对此图建模的实例进行建模。

因此,我正在解析表示UML的生成XML文件,并提取所有类和关联。到现在为止还好。

但是,当用户违反这些约束时,我需要了解这些约束并发出警告。但是,我不知道如何进行OCL解析。我已经了解了德累斯顿东方集团公司,但我不确定这是否是我想要的,因为我需要在运行时解析OCL,而不是使用eclipse导入模型并从OCL生成java代码。

因此,如果有人能向我介绍一种解析OCL并提取其基本语法的方法,我将非常感激。

向你问好,若昂·费尔南德斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-03 18:49:21

Eclipse OCL项目提供了独立的使用(只是Eclipse中的一个java程序),还有一些关于如何实现的文件和例子

具体而言,请参阅关于以下内容的链接:

  • 如何以编程方式创建和评估java中的OCL约束和查询
  • 如何在独立模式中使用Eclipse
  • 如何下载OCL。在这个wiki中,您有一些其他有用的信息,这些信息不在Eclipse帮助中。

一些Jave API使用示例(取自“帮助”)用于公开如何创建和计算不变量和查询:

代码语言:javascript
复制
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);

List<Library> libraries = getLibraries();  // hypothetical source of libraries
// only print the set of book categories for valid libraries
for (Library next : libraries) {
   if (constraintEval.check(next)) {
      // the OCL result type of our query expression is Set(BookCategory)
      @SuppressWarnings("unchecked")
      Set<BookCategory> categories = (Set<BookCategory>) queryEval.evaluate(next);

      System.out.printf("%s: %s%n", next.getName(), categories);
   }
}
票数 5
EN

Stack Overflow用户

发布于 2013-11-02 07:21:05

看看Eclipse组件(它提供了一个验证器特性,用于评估模型/实例是否满足元模型/模型的良好构造规则)和使用工具(创建该工具的目的是让人们使用OCL,让他们对一组实例进行OCL表达式的评估,以查看表达式的效果)。两者都是开源的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19705929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档