我有一个 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 INFO CompositeComponent - CheckComponent:槽模型检查文件:metamodel::Checks 1329 INFO CompositeComponent - Generator:生成'模板::Template::Root FOR Application' => src-gen 1340 错误 AbstractExpressionsUsingWorkflowComponent - org.eclipse.xpand2.Generator 类型的组件出错:EvaluationException:在线找不到类型或属性“Application”[59,11] 1 '应用程序' 1340 错误 WorkflowEngine - 工作流中断。原因:找不到类型或属性“应用程序”1340 错误 WorkflowEngine - [错误]:找不到类型或属性“应用程序”(元素:应用程序;报告者:生成器:生成“
我想象它在工作流程中的某些东西。
谢谢