我有一个ecore模型MyModel.ecore,我想使用Xpand为它生成代码。我没有xpand项目的编辑代码或运行时环境,我只想创建一个to项目,加载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 - 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)
我想这是工作流中的一些东西。
谢谢
发布于 2014-09-10 23:13:04
我认为你应该先注册你的模特:
<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 如果这解决了你的问题..。
https://stackoverflow.com/questions/16367237
复制相似问题