Create a ruleset to launch the Java template

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:

  1. Click File > New > Rule Set.
  2. Type JavaGeneration/src in the Source folder field.
  3. Type tutorial.java in the Package field.
  4. Type JavaGeneration in the Name field.
  5. Select Call a text template in the Available patterns section.

  6. Click Next.
  7. Type tutorial.java.JavaSource in the Text template field, on second page.

  8. Click Finish.

A file JavaGeneration.mqr is created in the folder JavaGeneration/src/tutorial/java and is opened in an editor.

package tutorial.java;

public ruleset JavaGeneration(in model : rhapsody) {

    public rule main() {
        foreach (class : rhapsody.Class in model.getInstances("Class")) {
            $JavaSource(class);
        }
    }

}

Here is the behavior of this ruleset:

  1. Expects an input Rational Rhapsody model (the direction in tells RulesComposer the model parameter is expected to be read from Rational Rhapsody.
  2. Retrieves the list of instances of the type Class in the input Rational Rhapsody project, using model.getInstances("Class").
  3. Iterates on this instance list using foreach and the loop variable class of type Rational Rhapsody Class.
  4. Calls the text template 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.

Next Section: Run the generation
Prev Section: Create a Java generation template


Related concepts
Ruleset

Related reference
MQL (Model Query Language)
Model APIs
Text template call