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.
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
Starting from the definition of the involved metamodels, the JTL transformation is specified.
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.
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.