Workflow — це серце CRM/ERP
Замовлення, заявки, рахунки, задачі — все живе у статусах. Якщо статуси і переходи описані неявно, система стає непередбачуваною: баги складно відтворити, а зміни лякають.
1) Станова модель (state machine)
- Опиши список станів і дозволені переходи.
- Заборони “стрибки” напряму, якщо вони невалідні.
- Виділи окремі події (approve, cancel, ship), а не “setStatus”.
2) Інваріанти
Інваріанти — правила, які не можна порушити:
- не можна відвантажити без оплати (або без підтвердження);
- не можна змінювати суму після інвойсу;
- не можна видалити документ, якщо є проводки.
3) Side effects і інтеграції
- Побічні ефекти (листи, webhooks, задачі) — асинхронно через чергу.
- Ідемпотентність подій, щоб ретраї не дублювали дії.
4) Аудит
Фіксуй: хто змінив стан, з якої причини, які поля змінилися. Це економить години підтримки.
Підсумок
Коли workflow описаний як state machine з інваріантами і аудитом, CRM/ERP модулі стають керованими і масштабуються без хаосу.