This tutorial explains how to specify and execute bidirectional model transformations within the JTL tool. 

These instructions are based on the Collapse/Expand State Diagrams benchmark. Starting from a hierarchical state diagram (involving some one-level nesting), a flat view has to be provided. Then adding a transition between two flatten states cannot be back-propagated in a unique way, since the corresponding transition in the hierarchical state diagram can be added to any nested states as well as to the container state itself.

Modelling State Machines

The hierarchical and non-hierarchical state machine metamodels (respectively SimpleHierarchicalStateMachine and SimpleStateMachine) are given by means of their Ecore representation within the EMF-based framework.

Then a hierarchical state machine model conforming to the SimpleHierarchicalStateMachine metamodel can be specified

Specifying the HSM2SM bidirectional transformation

Starting from the definition of the involved metamodels, the JTL transformation is specified.

Executing the HSM2SM bidirectional transformation

The transformation can be easily executed from: Right-Click menu > Run as > Run Configurations

The application of the transformation on HSM generates the corresponding SM model.

Note that, by re-applying the transformation in the backward direction it is possible to obtain again the HSM source model. The missing sub-states and the transitions involving them are restored by means of trace information.

Propagating changes

Suppose that in a refinement step the designer needs to manually modify the generated target by adding the transition [alternative = try again] to the state Disk Error to come back to Install Software.

If the transformation HSM2SM is applied on it, changes are propagated on the source model.

The tutorial is available in the JTL workspace attached to the JTL tool, that can be downloaded here. The source code of the tutorial can also be downloaded here