2013-05-03 5 views
4

У меня есть модель ecore MyModel.ecore, для которой я хочу сгенерировать код с помощью Xpand. У меня нет кода редактирования или среды выполнения для проекта xpand, я просто хочу создать проект xpand, загрузить MyModel.ecore, создать model.xmi, используя «создать динамический экземпляр» и запустить. Проблема в том, что мой файл workflow, похоже, не распознает элементы из моей метамодели. Вот код из моего рабочего процесса:M2T Xpand с существующей моделью ecore

<?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 - Reader: Loading model from platform:/resource/guiamovil.xpand/src/Application.xmi 890 INFO CompositeComponent - CheckComponent: slot model check file(s): metamodel::Checks 1329 INFO CompositeComponent - Generator: generating 'template::Template::Root FOR Application' => src-gen 1340 ERROR AbstractExpressionsUsingWorkflowComponent - Error in Component of type org.eclipse.xpand2.Generator: EvaluationException : Couldn't find type or property 'Application' [59,11] on line 1 'Application' 1340 ERROR WorkflowEngine - Workflow interrupted. Reason: Couldn't find type or property 'Application' 1340 ERROR WorkflowEngine - [ERROR]: Couldn't find type or property 'Application'(Element: Application; Reported by: Generator: generating 'template::Template::Root FOR Application' => src-gen) 1341 ERROR WorkflowEngine - [ERROR]: Couldn't find type or property 'Application'(Element: EXPAND template::Template::Root FOR Application; Reported by: Generator: generating 'template::Template::Root FOR Application' => src-gen)

Я представляю его что-то в рабочий процесс.

Благодаря

ответ

0

Я думаю, вы должны сначала зарегистрировать свои модели:

<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 

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

 Смежные вопросы

  • Нет связанных вопросов^_^