EMF代码生成

2023-12-12 14:10
文章标签 代码生成 emf

本文主要是介绍EMF代码生成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 介绍
基于Eclipse的模型框架。它是Eclipse MDA(Model Driven Architecture)的一个重要组成部分,是Eclipse中许多项目的基础( e.g, GEF), EMF可以将模型转换成高效的,正确的,和易于定制的Java代码。 官网地址:http://www.eclipse.org/modeling/emf/ The EMF project is a modeling framework and code generation facility for building tools and other applications based on a structured data model. From a model specification described in XMI, EMF provides tools and runtime support to produce a set of Java classes for the model, along with a set of adapter classes that enable viewing and command-based editing of the model, and a basic editor
  • 创建一个EMF工程
首先,你选用的Eclipse需要支持EMF开发才可以。
  1. 使用快捷键Ctrl+N,找到菜单Eclipse Modeling Framework
  2. 选择Empty EMF Project,填入工程名称,然后finish
  3. 选择model目录,按Ctrl+N,选择菜单Ecore Model,修改文件名为bowling.ecore,finish
  4. 如下图,双击bowling这个几点就会打开Properties视图,修改Name为bowling,修改Ns Prefix为org.suren.example.bowling,修改Ns URI为http://org/suiren/example/bowling
  5. 在bowling节点上右键新建一个EClass的Child,然后修改Name为Player
  6. 在Player节点上新建EAttribute,Name为name,EType为EString;再新建dateOfBirth,EType为EDate
  7. 在bowling节点上新建League,新增name;再新增一个EReference,EType选择为Player,Containment设置为true,Upper Bound为-1
[caption id="attachment_2507" align="alignnone" width="364"] bowling.ecore bowling.ecore[/caption]  
  • 生成代码
新建一个代码生成器:
  1. 在model上新建EMF Generator Model,输入文件名:bowling.genmodel
  2. 选择Ecore Model
  3. 选择bowling.ecore,然后finish
  4. 打开bowling.genmodel,在根节点上右键选择Generate All
上面的步骤会生成几个Eclipse插件工程和一个测试工程,这里包含了生成代码的工具类等。 这些插件工程包含如下扩展点: org.eclipse.emf.ecore.generated_package org.eclipse.emf.edit.itemProviderAdapterFactories org.eclipse.ui.newWizards org.eclipse.ui.editors
  • EMF的API
  • EMF的客户端(client)
EMF可以生产页面原型、Java类等资源,但是这都不是产品级别的。EMF客户端(EMF Client Platform)ECP就是为了满足用户可以生产出产品级别的资源而存在的。 官网地址:http://www.eclipse.org/ecp/ 可以从 这里先下载一个现成的客户端来做测试用。找到updatesite地址后,作为Eclipse的一个插件来安装。
  • M2T
Model to Text (M2T)是从模型产生文本的一个模块。
  • JET
JET是典型的代码生成器的实现。代码生成器是Model Driven Development(MDD)的重要组成部分。MDD的目标是使用一种抽象的模型(例如EMF/ECORE或者UML)来描述一个软件系统,并且可以由此生成出代码。尽管我们可以自定义实现上面的功能,但MDD的优势在于可以自动地实现上面的过程。 使用快捷键Ctrl+N,然后找到Java Emitter Templates->Convert Project to JET Projects,选择一个Java工程后会添加JET Builder;同时,在工程的根目录下会新增templates目录。 选择当前工程后使用快捷键Alt+Enter打开工程属性对话框,找到JET Settings,设置源码目录。 在templates目录下新建文件suren.textjet,输入如下内容 [codesyntax lang="java"]
<%@ jet package="org.suren.test.jet" class="HelloJet"%>
surenpi.com say hello to jet.
[/codesyntax] 到此时,你就可以看到已经生成了HelloJet源文件了。 有关JET Transformations的详细内容,请看这篇文章。
  • Acceleo
Acceleo是Model to Text Language(MTL)的编码方式的标准实现。
  • XDoclet
这是另外一种基于JavaDoc的代码生成技术。
  • Eclipse新建类向导
我们都知道,通过Eclipse新建一个类时可以添加一个main方法, 这篇文章有对此作具体介绍。
  • Velocity
Velocity经常在Web应用中使用,可以做为代码生成器的引擎。
  • 参考
Eclipse插件扩展点清单 Eclipse插件开发HelloWorld篇 http://eclipsesource.com/blogs/tutorials/emf-tutorial/ http://eclipsesource.com/blogs/tutorials/getting-started-with-the-emf-client-platform/ http://www.cnblogs.com/jpcflyer/archive/2012/05/19/2508479.html

转载于:https://my.oschina.net/surenpi/blog/604715

这篇关于EMF代码生成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/484907

相关文章

LLVM入门2:如何基于自己的代码生成IR-LLVM IR code generation实例介绍

概述 本节将通过一个简单的例子来介绍如何生成llvm IR,以Kaleidoscope IR中的例子为例,我们基于LLVM接口构建一个简单的编译器,实现简单的语句解析并转化为LLVM IR,生成对应的LLVM IR部分,代码如下,文件名为toy.cpp,先给出代码,后面会详细介绍每一步分代码: #include "llvm/ADT/APFloat.h"#include "llvm/ADT/S

jeecg——代码生成器配置

1.修改 数据源连接配置文件resources/jeecg/jeecg_database.properties

芋道源码微服务新建新的模块及代码生成器使用

目录 概述实践新建模块代码生成配置数据源代码生成拷贝代码pom.xml 其它的 问题redis权限配置 效果 结束 概述   芋道源码微服务新建新的模块及代码生成器使用。主要分三块,建立新的模块,代码生成及运行过程中的问题解决。 实践 新建模块   参考芋道源码本身的架构,新建的工程架构如下图所示,代码生成器也会生成对应的架构,但没有pom.xml这些配置文件,需要自己添加

Simulink代码生成:目标硬件配置

本文研究Simulink中关于目标硬件相关的配置。 文章目录 1 目标硬件的含义2 Simulink中的硬件配置3 代码中的位长度信息4 总结 1 目标硬件的含义 不管运行什么软件,都是无法离开硬件单独运行的。我们生活中常见的笔记本电脑、手机等都是硬件。 对于汽车嵌入式软件而言,目标硬件就是嵌入式控制器,譬如博主工作中所用的TC27X系列。在Simulink的配置中必须明确指定

Simulink代码生成: For Iterator子系统及其代码

本文研究Simulink中的For Iterator子系统及其生成的代码。 文章目录 1 Simulink中的For Iterator子系统2 For Iterator子系统建模示例3 For Iterator子系统的代码4 总结 1 Simulink中的For Iterator子系统 不管是在C语言还是Matlab脚本编程的时候,都避免不了使用for循环来反复执行某一段代码。在

Simulink代码生成:学习Simulink以及生成代码

本文介绍博主自己学习Simulink和Embedded Coder的方法。后续博客都会按照本文中的思路来记录博主学习的过程。 文章目录 1 Simulink模型2 Simulink配置3 Simulink生成的代码4 关于S函数和tlc文件5 实战 1 Simulink模型 通过建立正确的模型并且Update通过是生成代码的基础。所以生成代码的第一步是建模。 根据博主工作经验,

Simulink代码生成: Relay模块及其代码

本文研究Relay模块的用法和该模块生成的代码。 文章目录 1 Simulink中的Relay模块2 Relay模块建模3 Relay模块的代码4 总结 1 Simulink中的Relay模块 Relay这个单词有中继设备的含义,在Simulink中,博主将其理解为一个带有缓冲区的开关。 在配置界面可以配置Relay模块的阈值上限、阈值下限和输出的数值。 2 Relay模块建

Simulink代码生成:AliasType配置

AliasType也是Simulink数据字典中的一种对象。本文研究在数据字典中配置AliasType以及生成的代码。 文章目录 1 问题引入2 AliasType的建立和使用3 代码生成研究4 总结 1 问题引入 在Simulink中的数据类型有single,double,uint和int这些基本础类型,也可以给这些基本类型定义一个别名,这就是AliasType的概念。定义好A

Simulink代码生成:数据字典的建立、关联模型

本文介绍如何建立Simulink数据字典,并关联模型。 文章目录 1 数据字典的作用2 数据对象的简单概念3 数据对象的管理方式3.1 mat文件或m文件3.2 Excel表格&m脚本3.3 Simulink自带的数据字典文件 4 建立和关联Simulink数据字典文件5 sldd数据字典的一些说明6 总结 1 数据字典的作用 简单来说,数据字典的作用就是把一个模型用到的所有数据

JAVA:使用Generator生成器实现代码生成的技术指南

请关注微信公众号:拾荒的小海螺 博客地址:http://lsk-ww.cn/ 1、简述 在软件开发中,尤其是企业应用开发中,重复编写CRUD代码(创建、读取、更新、删除)是一项耗时且容易出错的任务。为了提高开发效率,许多开发者会使用代码生成器来自动生成这些重复的代码。本文将介绍如何使用Renren-Generator代码生成器来实现这一目标。 2、准备工作 在开始使用Renren-Gen