Package io.github.contractautomata.catlib.automaton.label.action

The action package groups the classes implementing actions of labels.
Action is the super class from which the other actions are inheriting.
In Contract Automata, an action can be either an OfferAction, a RequestAction or an IdleAction (i.e., nil action).
Actions are matchable and a request action matches an offer action (and vice-versa) if both have the same label.
Actions can have an Address, in this case implementing the interface AddressedAction.
Actions with addresses are AddressedOfferAction and AddressedRequestActions.
These actions are equipped with an address storing senders and receivers of actions.
For two addressed actions to match also their sender and receiver must be equal.
Addressed actions are used to implement Communicating Machines, in which each participant in the composition
is aware of the other participants. Communicating Machines are a model for choreographies.
Actions not having an address are used in Contract Automata: in this case the participants are oblivious of
the other partners and the model assume the presence of an orchestrator in charge of pairing offers and requests.
Class diagram of this package:
the class diagram