Как смоделировать пошаговый бизнес-процесс в приложении?
Есть проект, условно похожий на любое такси-приложение. Мобильный апп, клиент заказывает что-то на определённую дату и адрес, заказ принят одной из «машин», выехал к клиенту, будет через 5 минут, прибыл, началась поездка, по пути заехали в пункт N, окончилась, расплатились. Некие характерные шаги в бизнес-логике.
Логика может ветвиться: если сейчас состояние А, то после него могут быть состояния либо Б либо Д, и никакое другое. После Б может быть В, после В – Г. Похоже на граф.
Вопрос: как лучше хранить и обрабатывать такую логику в бэкэнде и мобильном приложении? Что есть best practice для подобного сценария?
Придётся ли дублировать бизнес-логику в backend + mobile, или можно держать её в одном месте?
Сейчас в прототипе прямо в коде прописаны текстовые метки для каждого возможного состояния, и условия, из какого состояния какие есть возможные следующие. В таблицу БД пишем очередное состояние объекта с датой-временем. Чтобы узнать текущее состояние объекта, выбираем самое недавнее.
Мобильный клиент запрашивает «матрицу» состояний и возможных переходов между ними с бэкенда.
Поменять логику, например, вставить новый шаг в процесс – надо переписывать код. А в идеале, наверное, это всё должно рулиться только данными в БД?
Может, у вас в проектах встречался похожий сценарий – расскажите, как вы его решили.