Завязывайте ходить по кругу.
Если к изменению статуса привязано КУЧА РОБОТОВ, БИЗНЕС-ПРОЦЕССОВ и тд которые по определению АСИНХРОННЫ -- то оставлять возможность пользователю изменять статус, а потом делать откат -- очень, очень плохая идея.
Потому что пользователь будет изменять статус, забывать об этом смотреть что статус "опят старый" и опять менять его.
Только в этот раз он будет "почти сразу" видеть что статус откатился назад и быстрее чем отработают все ваши откаты опять дергать на "очень нужный статус"
и это не только будет бесконечным кругом, но и гарантировано из-за асинхронности вылетит в неправильный откат.
Еще раз резюме:
Если к изменению статусов привязаны бизнес-процессы и роботы, то
ВСЕМ пользователям нужно запретить изменение мышкой статуса, и делать "кнопку" изменения статуса, которая СНАЧАЛА проверит все ли готово к изменению статуса, и только после этого, изменит статус.
Как вы реализуете эту кнопку -- снаружи через изменение php кода или через Бизнес-Процессы == это уже ваш выбор.
Никогда не рассчитывайте на корректный ОТКАТ, в асинхронной и многопользовательской среде.
"А зачем они сделали мышкой если правильно через проверки????" -- потому что мышкой это самый простой способ, рассчитанный на быстрых и ответственных пользователей, и именно это снижает требования при вступлении в эту систему.
На внедрение/пробу всегда посылают умных и быстрых операторов -- и не всякий умный и быстрый оператор -- еще и думает как защитится от тупого и ленивого оператора.
И тут быстро изменить статус мышкой становится СМЕРТЕЛЬНО ОПАСНЫМ для системы.
Характерный пример со статусами:
Есть сделки для конкретного операциониста закрываются после оплаты счета. Ухты делаем для операционистки которая знает только счета и банковскую выписку три стадии --
- выставить счет
- ждем оплату
- оплата получена
само собой делаем робота который после Оплата получена скрывает от нее сделки перенося их куда-то дальше по бизнес процессу...
Автор процесса очень ответственный методичный и безошибочный человек...
На канбане сначала вносит все данные, переключается на список перепроверяет по списку/выписке и потом переносит на новый статус.
Но вот девочка севшая после него на выписку в ужасе
Она на канбане вносит и тут же меняет статус, закрывает окно сделки...
Переходит к следующей... следующей... а потом понимает что в предыдущей сделке внесла не правильно...
ОЙ ОНИ ВСЕ ИСЧЕЗЛИ, Я ИХ НЕ ВИЖУ!!!
Сделали видимыми, ОЙ ИХ ОЧЕНЬ МНОГО!
Потом прилетает следующий по техпроцессу человек и орет -- какого фига -- мне прилетело собщение оплата получена, стадия Скоплектовать, я открыл сделку -- скомплектовал заказ закрываю == и он ИСЧЕЗ!!!
И такая поебень целый день - как результат для операционстки ОТДЕЛЬНЫЙ адрес без прямого входа в интерфейс с битрикс заточеный только на список по выписке, чтобы могла списком проверять ожидаемые и только галочки "совпало" по сумме, не совпало по сумме" и никаких откатов...