Reputation: 341
I created a Xpand generator. In its src/ folder I've defined my model My.nn a template and a workflow.
This is how my workflow.mwe2 file looks like:
module workflow.NeuralNetworksGenerator
import org.eclipse.emf.mwe.utils.*
var targetDir = "src-gen"
var fileEncoding = "Cp1252"
var modelPath = "src/model"
Workflow {
component = org.eclipse.xtext.mwe.Reader {
// lookup all resources on the classpath
//useJavaClassPath = true
// or define search scope explicitly
path = modelPath
// this class will be generated by the xtext generator
register = org.xtext.example.neuralnetworks.NeuralNetworksStandaloneSetup {}
load = {
slot = "systems"
type = "System"
}
}
component = org.eclipse.xpand2.Generator {
expand = "templates::Template::main FOREACH systems"
outlet = {
path = targetDir
}
fileEncoding = fileEncoding
}
}
When I'm trying to run this workflow.mwe2 file as MWE2 Workflow, I get the following errors:
0 INFO AbstractExpressionsUsingWorkflowComponent - No meta models configured, using JavaBeans as default.
75 ERROR Mwe2Launcher - Problems running workflow workflow.NeuralNetworksGenerator: Couldn't find EClass for name 'System'.
java.lang.RuntimeException: Problems running workflow workflow.NeuralNetworksGenerator: Couldn't find EClass for name 'System'.
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:99)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:73)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:64)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:55)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.run(Mwe2Launcher.java:74)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main(Mwe2Launcher.java:35)
Caused by: org.eclipse.emf.mwe.core.WorkflowInterruptedException: Couldn't find EClass for name 'System'.
at org.eclipse.xtext.mwe.SlotEntry.findEClasses(SlotEntry.java:135)
at org.eclipse.xtext.mwe.SlotEntry.put(SlotEntry.java:91)
at org.eclipse.xtext.mwe.AbstractReader.addModelElementsToContext(AbstractReader.java:95)
at org.eclipse.xtext.mwe.Reader.invokeInternal(Reader.java:166)
at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:126)
at org.eclipse.emf.mwe.core.lib.Mwe2Bridge.invoke(Mwe2Bridge.java:34)
at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:201)
at org.eclipse.emf.mwe2.runtime.workflow.AbstractCompositeWorkflowComponent.invoke(AbstractCompositeWorkflowComponent.java:35)
at org.eclipse.emf.mwe2.runtime.workflow.Workflow.run(Workflow.java:19)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:97)
... 5 more
The example that I used to create my particularized workflow mwe2 file is taken from the Xpand reference manual.
This is the list of plug-in dependencies from the MANIFEST.MF file:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: my.neuralnetworks.generator.project
Bundle-SymbolicName: my.neuralnetworks.generator.project; singleton:=true
Bundle-Version: 1.0.0
Require-Bundle: org.eclipse.jdt.core;bundle-version="3.5.0",
org.eclipse.xtend.profiler;resolution:=optional,
org.apache.commons.logging,
org.apache.log4j;resolution:=optional,
com.ibm.icu;bundle-version="4.0.1",
org.antlr.runtime;bundle-version="3.0.0",
org.eclipse.core.runtime;bundle-version="3.5.0",
org.eclipse.emf.mwe.utils;bundle-version="0.7.0",
org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
org.eclipse.jface.text;bundle-version="3.5.0",
org.eclipse.xpand;bundle-version="0.7.0",
org.eclipse.xtend;bundle-version="0.7.0",
org.eclipse.xtend.typesystem.emf;bundle-version="0.7.0",
org.eclipse.xtend.backend;bundle-version="1.0.0";resolution:=optional,
org.eclipse.xtend.middleend.xpand;bundle-version="1.0.0";resolution:=optional,
org.eclipse.xtend.middleend.xtend;bundle-version="1.0.0";resolution:=optional,
neuralnetworks;bundle-version="1.0.0",
org.xtext.example.neuralnetworks;bundle-version="1.0.0",
org.eclipse.emf.ecore.xmi.source;bundle-version="2.7.0",
org.eclipse.jface.text.source;bundle-version="3.7.0",
org.antlr.runtime.source;bundle-version="3.2.0",
org.antlr.runtime_3.1.b1;bundle-version="3.1.0",
com.ibm.icu.source;bundle-version="4.4.2",
org.eclipse.jdt.core.source;bundle-version="3.7.0",
org.eclipse.emf.mwe2.launch;bundle-version="2.2.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: nn
The neuralnetworks plug-in refers to my gmf project for my graphical editor where the metamodel is found and the org.xtext.example.neuralnetworks is the one corresponding to my text editor.
The ecore file corresponding to the emf file does have the EClass System in it.
Upvotes: 4
Views: 2512
Reputation: 11868
No, but since you use a existing metamodel and not a derived one you should add the following to the beginning of your workflow
bean = StandaloneSetup {
registerGeneratedEPackage = "sample.SamplePackage"
}
Upvotes: 0
Reputation: 11868
How does your dsl look like? Does it contain a EClass named System? Update: Just saw you do not have a Xtext based metamodel. So if you want to use the Xtext Mwe Reader Component you have to use a AbstractGenericResourceSupport and register your epackage as well as it is described in this Xtend2 example http://christiandietrich.wordpress.com/2011/07/29/xtend2-code-generators-with-non-xtext-models/
Upvotes: 0