arm_blocking
Руководство по реализации механизма блокировки/разблокировки (Backend)
Цель: реализовать систему блокировок/разблокировок, позволяющую ограничивать выполнение операций (приемка, отбор, хранение и пр.) на основании установленных бизнес-правил. StateMachine не используется. Работа идёт через прямые сервисные вызовы и кеширование.
1. Бизнес-функциональность
Механизм должен обеспечивать:
- Гибкий выбор сущностей, на которые накладывается блокировка (ячейка, место, ряд, зона, склад, контейнер, SKU, партия, группа и пр.)
- Выбор причины блокировки (из справочника)
- Привязка к операциям (приемка, отбор, перемещение и др.)
- Возможность множественного выбора
- История изменений (аудит)
1.2 Бизнес‑процесс (sequence‑diag)
2. Структура данных и персистенция
2.1. Документы
Сущность | Назначение | Ключевые поля |
---|---|---|
BlockingDoc | Заголовок документа блокировки | id (UUID), docNumber , docDate , status , reasonId , comment , responsibleEmployeeId , createdAt |
BlockingDocItem | Строки документа (конкретные объекты) | id , docId (FK), type , referenceId , operations (JSON/SET), createdAt |
BlockingReason | Справочник причин | id , code , description , isActive |
Все сущности помечаем
@Audited
для сохранения истории.