The workflow ties together model, meta model and templates and defines the process of how to generate code.
To create a new workflow file, switch to the Xpand/Xtend perspective, click on "File", "New" and "Workflow file" . After specifying a folder and a filename an empty workflow is created.
The minimalistic approach consists of two steps:
Read the Model: This is done by
org.eclipse.xtend.typesystem.xsd.XMLReader . It needs
exactly one uri element which defines the XML
file. A further nested element of type
org.eclipse.xtend.typesystem.xsd.XSDMetaModel tells the
XMLReader which metamodel to use.
XSDMetaModel can contain multiple
schemaFile elements. How the schemas are used
for the XML file is determined based on the declared namespaces.
modelSlot defines a location where the model is
stored internally, this is like a variable name which becomes
important if you want to handle multiple models within the same
workflow.
Generate Code: This part just does the regular code generation
using Xpand and is not specific to the Xpand XSD Adapter at all. The
generator org.eclipse.xpand2.Generator needs
to know which meta model to use. This example references the
previously declared one. The expand element
tells the generator to call the definition named
Root within file
template.xpt using the contents of slot
model as parameter. Element
outlet defines where to store the generates
files.
<workflow>
<component class="org.eclipse.xtend.typesystem.xsd.XMLReader">
<modelSlot value="model" />
<uri value="model.xml" />
<metaModel id="mm"
class="org.eclipse.xtend.typesystem.xsd.XSDMetaModel">
<schemaFile value="metamodel.xsd" />
</metaModel>
</component>
<component class="org.eclipse.xpand2.Generator">
<metaModel idRef="mm" />
<expand value="template::Root FOR model" />
<outlet path="src-gen" />
</component>
</workflow>