State Machine
I used to use Eco (now called MDriven) which provided Entity-State logic as part of the entity design.
Developer could define a number of "state machines" per entity, where control logic was applied as Guards (code that evaluates to prevent state X->Y change); Trigger (code that executes during the transition); Effect (code that executes at the conclusion of the transition).
For ex. I could have an "OnlineOrder" entity with an initial state of "ShoppingCart" and want it to go through the stage of "OrderEntry" then "OrderConfirmed", and finaly "OrderShipped".
see http://www.new.capableobjects.com/ for more details.
![](https://secure.gravatar.com/avatar/95c6b83b9a0b30e54f1cf4b1514e792f?size=40&default=https%3A%2F%2Fassets.uvcdn.com%2Fpkg%2Fadmin%2Ficons%2Fuser_70-6bcf9e08938533adb9bac95c3e487cb2a6d4a32f890ca6fdc82e3072e0ea0368.png)