Саад Ахмад, исполнительный вице-президент Smart IS International
Обзор
Одна вещь, которая объединяет все крупные реализации, — это необходимость периодически выполнять некоторые задачи. Это могут быть задачи, созданные по замыслу или из-за повреждения данных. Часто нам не удается получить исправление от поставщика, или для исправления может потребоваться обновление, которое может оказаться невыполнимым.
В предыдущих версиях у нас были Агенты расписания, которые могли это сделать. В новых версиях у нас есть более сложная конструкция под названием jobs.
Наш подход
В Оракулар мы подходим к этой проблеме чуть более изощренно. Мы реализуем концепцию монитора приложений, который выявляет аномалии и исправляет их. Хотя он выполняется с использованием предоставленных конструкций агента расписания или заданий, он обеспечивает более абстрактное представление этой проблемы и, таким образом, упрощает управление общим решением.
Мы рассматриваем проблему монитора приложений следующим образом:
- Обнаружение проблем определенного типа. Возвратите несколько строк, где каждая строка указывает на проблему этого типа. Это может принимать форму команды MOCA или оператора SQL.
- Для каждой из строк, возвращенных сверху, выполните код MOCA, чтобы исправить эту ситуацию.
- При желании войдите в систему dlytrn
- Опционально поднять оповещения EMS.
- Предоставьте внешний интерфейс, чтобы опытные конечные пользователи могли управлять этими мониторами или добавлять новые.
- Выполняйте их как одно задание, чтобы не повлиять на общий график задания.
- Публикация прогресса в системе мониторинга заданий, разработанной Smart IS
Наше решение
Мы определяем эти мониторы в новой таблице:
Решение представлено в виде одной команды MOCA под названием «запустить монитор ossi», которая запланирована с использованием заданий MOCA. Мы определяем это для выполнения каждую минуту и для управления отдельными заданиями, которые мы можем захотеть запускать реже — мы используем концепцию «Время с момента последнего запуска». Пользователи могут сами поддерживать эту информацию с помощью простого внешнего приложения:
Во всех реализациях WMS есть некоторые из этих заданий, которые со временем разрабатываются для решения типичных проблем. Например:
- У нас часто бывают бесхозные записи invmov. Мы можем обнаружить такие записи, а затем удалить их.
- Иногда у нас есть записи pckmov, которым нет соответствующих записей pckwrk. Мы можем обнаружить условие и убить такие записи pckmov.
- Часто возникают ситуации, когда rescod не очищается. Мы можем обнаружить условие и запустить «освобождение местоположения ресурсов» для этих местоположений.
- Часто требуется повторная обработка загрузок в статусе EERR.
- Мы можем создать монитор для обнаружения какого-либо ненормального состояния и отправить электронное письмо группе пользователей с результатами запроса. Это решение проще, чем создание оповещения EMS, поскольку оно не требует процесса развертывания, а электронное письмо может содержать подробные результаты.
Заключение
Любой вид монитора приложений является обычным требованием в любой крупной системе, и RedPrairie/JDA WMS не является исключением. Приведенный выше шаблон проектирования может быть реализован в целом для любой большой системы. Он рассматривает проблему абстрактно и предлагает решение, простое в реализации, обслуживании и управлении.
Первоначально опубликовано на saadwmsblog.blogspot.com.