Translation of View-updates is performed through rules specified in an Xtend-based DSL from VIATRA. When the state of a query pattern changes, the corresponding transformation rule is fired. The logic behind De-instantiation remains the same, irrespective of the scenario.
The way in which the graphical queries have been designed provides two advantages:
- The same queries are re-used for state-based and delta in-place scenarios.
- The movement of an Instance model element from one node to another is automatically interpreted as the deletion of a match and addition of a match, which eliminates the need to consider the MOVE operation separately. The MOVE operation is condensed into a DELETION followed by a CREATION.
The advantage of using VIATRA within OSATE-DIM is evident through the high number of decisions (based on complex conditions) required for various de-instantiation operations, which cannot be supported through other view-update frameworks. (for example, an explosion in state-space is expected with use of Triple-Graph-Grammars)