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 oAW 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>