【问题标题】:M2T Xpand with existing ecore modelM2T Xpand 与现有的 ecore 模型
【发布时间】:2013-04-28 08:21:57
【问题描述】:

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

<?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>

我的模板文件:

«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 - 阅读器:从平台加载模型:/resource/guiamovil.xpand/src/Application.xmi 890 信息 CompositeComponent - CheckComponent:槽模型检查文件:metamodel::Checks 1329 信息 CompositeComponent - 生成器:生成 'template::Template::Root FOR Application' => src-gen 1340 错误 AbstractExpressionsUsingWorkflowComponent - org.eclipse.xpand2.Generator 类型的组件出错: 评估异常:找不到类型或属性“应用程序” [59,11] 第 1 行“应用程序” 1340 错误 WorkflowEngine - 工作流中断。原因:找不到类型或属性“应用程序” 1340 错误 WorkflowEngine - [错误]:找不到类型或属性“应用程序”(元素:应用程序;报告者:生成器:生成“模板::模板::根应用程序”=> src-gen) 1341 错误 WorkflowEngine - [错误]:找不到类型或属性“应用程序”(元素:扩展模板::模板::根应用程序;报告者:生成器:生成“模板::模板::根应用程序”= > src-gen)

我想象它在工作流程中的某些东西。

谢谢

【问题讨论】:

    标签: import workflow xpand ecore


    【解决方案1】:

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

     <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 
    

    如果这解决了您的问题,请告诉我...

    【讨论】:

      猜你喜欢
      • 2018-09-16
      • 2022-01-06
      • 1970-01-01
      • 2021-03-12
      • 2012-04-04
      • 1970-01-01
      • 2016-10-29
      • 2019-06-18
      • 2018-10-13
      相关资源
      最近更新 更多