3.8. Bidirectionality

As mentioned above, transformations are executed in a particular direction. A transformation that can be executed to produce senseful target models in both directions is said to be bidirectional. Bidirectionality is not mandatory but practical because it allows changes to be made to any of the models (not only to "source" models) and propagated to the other ones. However to achieve meaningful bidirectionality, the relations of a transformation must be left and right unique !!. To explain this with our example, consider a model containing only one package with name MyPackage. If umlToRdbms is executed in direction rdbms thereby creating a schema, then executing it back in the uml direction should map to exactly the same MyPackage, irrespective of whether it was executed in the context of traces or not !!. The medini QVT engine supports bidirectionality.