作为后端的模型

Model as Backend

首先: 我是 EMF 世界的新手。我读完了“Model driven software engineering in practice”这本书,现在我想在一个项目中应用它:

我 "meta modelled" 我的项目并实现了一些 OCL 约束,因此它就像一个语义数据库模式。

  1. 我不明白的是,我如何实现业务逻辑?这是否仅适用于 OCL 约束和模型转换?如果我用 henshin 实现所有东西,那将是非常过度设计的。

  2. 我想将我的模型用作 "backend"。客户端可以通过 REST 访问模型的某些部分。我有什么可能性让它发生?

谢谢, 劳伦斯

如果您使用的是 EMF,您可能希望使用 Eclipse OCL 或 Dresden OCL。

(作为主要的 Eclipse OCL 作者,我可以回答 Eclipse OCL。也许德累斯顿 OCL 作者可能会给你一个替代答案。)

Eclipse OCL 提供了一个 Xtext-based OCLinEcore 编辑器,允许您将 OCL 作为 EAnnotations 嵌入到 Ecore 模型中,从而实现您的业务逻辑。您还可以选择将嵌入式 OCL 生成模型作为直接 Java 代码而不是解释的 OCL。请参阅 Eclipse OCL 发行版随附的 OCL 文档中的 OCL 教程。

或者您可以使用 Xtext-based Complete OCL 编辑器来维护您的 OCL 作为元模型的补充文档。目前没有针对此方法的直接 Java 代码生成,您需要安排将完整的 OCL 文档导入到您的消费应用程序中。

我是 M2M 的热心支持者,所以我建议使用 M2M,Henshin(如果这是您的最爱)来定义仅诉诸 OCL 的转换或 Java 充实一些 per-class 查询. EMF 提供了很好的隔离,因此 EMF 应用程序可以基本上忽略用于实现 EOperations 的技术。

如前所述,OCLinEcore 是基于 Xtext 的。 Xtext 现在完全支持语言服务器协议,这意味着您可以将模型保存在服务器上并通过 REST、Json-RPC 甚至 websockets 与其交互。 xtext 的家伙最近想出了 Sprotty,这是一个

web based, diagramming framework

您可能会感兴趣,因为它演示了如何使用 model serverHere 还有一些关于 sprotty 和 Xtext LSP 架构的幻灯片。 Sprotty 的目标是浏览器中的图表支持,但我认为服务器架构可能会让你入门,即使你不需要前端或编辑器。

您可能想看看我们的 EMF Rest 工具 https://som-research.uoc.edu/tools/emf-rest/

我们已经有一段时间没有更新它了,但它可以用作您可以构建的示例