OnStateChange(attrib:String; oldstate:String; newstate:String) .
Any class with this method signature will get called for each trigger-call that is made on the statemachine.
The main intended use is audit and logging functionality. When you use state machines heavily to track important events in your business – this becomes important.
The event method is NOT for stopping transitions – use guards for that.
You can solve logging by implementing state effects or entry actions as well – but the OnStateChange method helps you to pull out generic logging from the state machines. If your class has multiple state machines, state changes from all of these will go through this same method.