We don’t have the need to build complex Constraint hierarchy, end-users are totally lost when too much concept are used.
We really want to keep it as simple as possible.
If the invariant Constraint of StateInvariant couldn't be contained by StateInvariant, it will solve our problem, does-it make sense to have a unique Constraint into StateInvariant that couldn’t be link with anything else ?
Each time you will want to express a pre-requisite on a lifeline (related to a state expressed into a statemachine), you will have to build another instance of Constraint even if it’s the same state invariant… it’s really counter-productive. In this case we could use an Action that will check something instead of using a StateInvariant that finally is useless ...
The norm doesn’t affirm that the invariant cannot be reused, it’s just an implementation problem due to the usage of EMF technology (and particularly its serialization engine that require a parent container for any object).
As is the mdt-uml2 implementation doesn’t allow to make a logical link between State stateInvariant and StateInvariant invariant whereas it would be convenient to reuse state already described into sequence diagram.
Best Regards