Working with State Machine

Hello everyone,
I have been trying to get into Plutus and one of the features that caught my attention was the state machine.
I would like to use it order to verify the validity of certain operations on smart contracts (for example enforcing a certain order for the operations like A->B->C and throw an exception if the order was not being followed).

Therefore I would like to ask two questions:

  1. Is state machine a good fit for this type of situation?
  2. Are there any examples of how to utilize with the state machine API?

Thank you very much!