Using the state machine could keep the Alpha transaction states tracing code simple . We could also use it to trace the command sending states.
Here are some feature requirement of the StateMachine:
- Statemachine should handle timeout dynamically
- Statemachine should support message(event) persistent
- Support to the states of transaction from outside
- Statemachine should have cluster support