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.
