M2T Xpand с существующей моделью ecore

У меня есть модель 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>

My template file:

«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: Загрузка модели с платформы:/resource/guiamovil.xpand/src/Application.xmi 890 INFO CompositeComponent - CheckComponent: файл(ы) проверки модели слота: metamodel::Checks ::Template::Root FOR Application' => src-gen 1340 ERROR AbstractExpressionsUsingWorkflowComponent — ошибка в компоненте типа org.eclipse.xpand2.Generator: EvaluationException: не удалось найти тип или свойство «Приложение» [59,11] в строке 1 «Приложение» 1340 ERROR WorkflowEngine — рабочий процесс прерван. Причина: Не удалось найти тип или свойство «Приложение» 1340 ОШИБКА WorkflowEngine — [ОШИБКА]: Не удалось найти тип или свойство «Приложение» (Элемент: Приложение; Сообщил: Генератор: создание «template::Template::Root FOR Приложение» => src-gen) 1341 ОШИБКА WorkflowEngine — [ОШИБКА]: не удалось найти тип или свойство «Приложение» (Элемент: EXPAND template::Template::Root FOR Application; Сообщил: Генератор: генерация «template:: Template::Root FOR Application' => src-gen)

Я представляю, что это что-то в рабочем процессе.

Спасибо


person Moises B.    schedule 03.05.2013    source источник


Ответы (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 

позвольте мне сейчас, если это решило вашу проблему...

person issamux    schedule 10.09.2014