# # documentSignoffDemo.py # # Example of a state machine modeling the state of a document in a document # control system, using named state transitions # import statemachine import documentsignoffstate print( "\n".join( t.__name__ for t in documentsignoffstate.DocumentRevisionState.transitions() ) ) class Document(documentsignoffstate.DocumentRevisionStateMixin): def __init__(self): self.initialize_state(documentsignoffstate.New) def run_demo(): import random doc = Document() print(doc) # begin editing document doc.create() print(doc) print(doc.state.description) while not isinstance(doc._state, documentsignoffstate.Approved): print("...submit") doc.submit() print(doc) print(doc.state.description) if random.randint(1, 10) > 3: print("...reject") doc.reject() else: print("...approve") doc.approve() print(doc) print(doc.state.description) doc.activate() print(doc) print(doc.state.description) if __name__ == "__main__": run_demo()