Конечные автоматы и стейт-машины
Конечные автоматы и стейт-машины простыми словами: что это, когда флаги и if пора заменить автоматом, как реализовать в Java (enum, таблица переходов, State-паттерн, Spring Statemachine) и когда нужен BPM-движок вроде Camunda.
Раздел — про то, как навести порядок в объектах, которые проходят через набор состояний: заказ, платёж, заявка, задача. Когда состояний становится много, россыпь boolean-флагов и if начинает путаться и разрешать невозможные комбинации. Конечный автомат делает состояние явным, а недопустимые переходы — невозможными. Три статьи идут от концепции к практике: сначала что это такое и когда пора, потом как реализовать в Java, и наконец — когда своей стейт-машины мало и нужен BPM-движок.
- Конечные автоматы и стейт-машины: что это и когда нужны — состояния, переходы, события, guard'ы; флаги против автомата; когда хватит
if, а когда нужен автомат. - Как реализовать стейт-машину в Java — enum со switch, таблица переходов, State-паттерн, Spring Statemachine; хранение состояния и защита от гонок.
- BPM и оркестрация процессов: Camunda и аналоги — BPM-движок и BPMN, Camunda, Temporal, Zeebe, Flowable, AWS Step Functions; связь с saga; когда движок вместо кода.