Actions

Why and what is an action?

To separate the Commands, which should be independent of the graph system, and the used graph system, we introduced an abstraction layer, called Actions. Actions provide an interface to the commands, offering basic services on the graph system. It is a natural fact, that this interface cannot support all semantic details, the graph system is offering. If you want your graph system to support more specific actions (like setting some very special values in the graph-system), write these actions on your own and make sure, that only your graph system supports these actions; if you call this command on another graph system it should always fail. One should never call functionality of a specific graph system directly from a command.

How to use Actions

A command can ask Node_Models for a specific action, e.g. "Move". If the asked Node_Model supports this kind of action, it will return a specific "Move_Action"; to this object your command adds all parameters needed for execution. Then you have the last choice to execute or to abort it. If the model does not support the requested action, it should throw an "Action_Not_Supported_Exception". For further details see Actions (the Section called Actions in Chapter 7).