
module org.eclipse.xtext.example.fowlerdsl.generator.StatemachineGeneratorMWE

import org.eclipse.emf.mwe.utils.*

var targetDir
var modelPath

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.eclipse.xtext.example.fowlerdsl.StatemachineStandaloneSetup {}
		loadResource = {
			slot = "model"
		}
	}

	component = org.eclipse.xtext.generator.GeneratorComponent {
		register = org.eclipse.xtext.example.fowlerdsl.StatemachineStandaloneSetup {}
		slot = 'model'
		outlet = {
			path = targetDir
		}
	}
}
