首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >现有ecore模型的M2T Xpand

现有ecore模型的M2T Xpand
EN

Stack Overflow用户
提问于 2013-05-03 20:42:30
回答 1查看 1.1K关注 0票数 4

我有一个ecore模型MyModel.ecore,我想使用Xpand为它生成代码。我没有xpand项目的编辑代码或运行时环境,我只想创建一个to项目,加载MyModel.ecore,使用“”创建一个model.xmi并运行。问题是,我的工作流文件似乎无法识别元模型中的元素。下面是我工作流程中的代码:

代码语言:javascript
复制
<?xml version="1.0"?>
  <workflow>
<property name="model" value="com.example/src/Application.xmi" />
<property name="src-gen" value="src-gen" />

<!-- set up EMF for standalone execution -->
<bean class="org.eclipse.emf.mwe.utils.StandaloneSetup" >
    <platformUri value=".."/>
</bean>

<!-- instantiate metamodel -->
<bean id="mm_emf" class="org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel"/>

<!-- load model and store it in slot 'model' -->
<component class="org.eclipse.emf.mwe.utils.Reader">
    <uri value="platform:/resource/${model}" />
    <modelSlot value="model" />
</component>

<!-- check model -->
<component class="org.eclipse.xtend.check.CheckComponent">
    <metaModel idRef="mm_emf"/>
    <checkFile value="metamodel::Checks" />
    <emfAllChildrenSlot value="model" />
</component>

<!--  generate code -->
<component class="org.eclipse.xpand2.Generator">
    <metaModel idRef="mm_emf"/>
    <expand
        value="template::Template::Root FOR Application" />
    <outlet path="${src-gen}" >
        <postprocessor class="org.eclipse.xpand2.output.JavaBeautifier" />
    </outlet>
</component>

我的模板文件:

代码语言:javascript
复制
«IMPORT MyModel»

  «DEFINE Root FOR Application»
 «FILE "AndroidManifest.xml"»

 «ENDFILE»

     «EXPAND ProcesaScreens FOREACH Screens»


     «ENDDEFINE»


   «DEFINE ProcesaScreens FOR Screen»
    «FILE this.name +".java"»
    «IF (this.metaType.compareTo(StartScreen.metaType) == 0)»
        «EXPAND ProcesaStartScreen FOR (StartScreen)this»
    «ENDIF»

«ENDFILE»
    «ENDDEFINE»


   «DEFINE ProcesaStartScreen FOR StartScreen»
      «FILE "FilePrueba.java"»
      «ENDFILE»

    «ENDDEFINE»

我得到了这个错误:

695 INFO CompositeComponent - Reader:从CompositeComponent 890 INFO CompositeComponent -CheckComponent加载模型:元模型::检查1329 INFO CompositeComponent-生成器:生成‘模板:模板:=> src-gen 1340错误AbstractExpressionsUsingWorkflowComponent -错误类型org.eclipse.xand2.generator: EvaluationException :无法找到类型或属性“应用程序”59,11在第1行’应用程序‘1340错误WorkflowEngine -工作流中断。原因:找不到类型或属性‘应用程序’1340错误WorkflowEngine -错误:找不到类型或属性‘应用程序’(元素:应用程序;由:生成器:生成模板::模板:根为应用程序‘=> src-gen) 1341错误WorkflowEngine -错误:找不到类型或属性’应用程序‘(元素:模板::模板::根为应用程序;报告:生成器:生成模板::模板::根为应用程序’=> src-gen)

我想这是工作流中的一些东西。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-09-10 23:13:04

我认为你应该先注册你的模特:

代码语言:javascript
复制
 <bean class="org.eclipse.emf.mwe.utils.StandaloneSetup" >
 <platformUri value=".."/>  
 <registerGeneratedEPackage value="com.issamux.example"/>
  ....
  //
 </bean>
 <!-- instantiate metamodel -->
 <bean id="mm_emf" class="org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel"/>

//your code 

如果这解决了你的问题..。

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

https://stackoverflow.com/questions/16367237

复制
相关文章

相似问题

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