This document discusses state machines, Petri nets, and the Symfony workflow component. It describes finite state machines as a mathematical model for modeling computation and transitions between states. Petri nets are introduced as a generalization of state machines using a bipartite graph structure. The Symfony workflow component provides an implementation of workflows and state machines using concepts from Petri nets. Examples of configuring and using workflows in Symfony are presented, along with code smells that may indicate an opportunity to introduce a state machine pattern.