In previous step, we created a text template expecting a UML Class parameter to generate a Java source file. Now we want to iterate on all classes of a UML model and generate the Java source file for each of these classes. This is done using a ruleset.
A ruleset is a group of logically interdependent rules, where a rule defines a set of procedural expressions that query or update model elements.
To create a ruleset:
A file JavaGeneration.mqr is created in the folder com.sodius.mdw.samples.tutorial/src/tutorial/java and is opened in an editor.
package tutorial.java; public ruleset JavaGeneration(in model : uml21) { public rule main() { foreach (class : uml21.Class in model.getInstances("Class")) { $JavaSource(class); } } }
Here is the behavior of this ruleset:
Class
in the input UML model,
using model.getInstances("Class")
.foreach
and the loop variable class
of type UML Class
.
JavaSource
with the class
variable as argument
('$'
is the notation used to call a text template).
The referenced template is evaluated and the generated contents is written on disk.