This is a generic container for user-defined modeling.
An Action executes in runtime on the same tier (client or server) as its parent process. In cases where the modeling should always be executed on the server tier use Service instead.
The Action template does not require any triggers, but can have as many user-defined triggers as needed. Triggers can be of any type (including user-defined, composite types), they can be repetitive (or not) and mandatory (or not).
Apart from passing parameters, triggers define execution order explicitly. If you want to use a trigger specifically for setting execution order without passing any value, you can create a new empty trigger ("empty trigger" is a trigger with data type Nothing). In order to simplify creation of an empty trigger, a default implementation, Control, is available through the template prototype (right-click the process model, select Add Element, and choose Control). Note that the name Control has no special meaning, and any other name can be used for empty triggers you create.
If no triggers are specified (or if all triggers are non-mandatory and none have flows into them), the process will execute when the parent process commences. If a parent contains multiple processes of this type, the precise order of execution is undetermined.
The Action template does not require any exit, but can have as many user-defined exits as needed to return results to be used outside the scope of the action. Exits can be of any data type (including user-defined, composite types), and they can be repetitive (or not).<Done> (non-repetitive empty exit [not required]): Fired when processing of the action is done. The <Done> exit is used mainly to explicitly define execution order in the parent model (e.g. by adding a flow from the <Done> exit to a Control trigger of another processes). The <Done> exit is available via the template prototype (right-click the process model, select Add Element, and choose <Done>).