Остановка ранее запущенных экземпляров процесса
- Информация о материале
- Категория: Хаутушки
- Опубликовано: 18.08.2021, 09:00
- Просмотров: 1476
Зачастую процессы, запускаемые по таймеру, обрабатывает множество записей и в некоторых случаях их количество настолько велико, что процесс не успевает завершиться до запуска следующего экземпляра. Это чревато нестабильным поведением системы, т.к. фильтры на процессах одинаковые, может запуститься обработка одной и той же записи, могут сбиться счётчики и возникнуть прочие проблемы.
Чтобы этого избежать необходимо сделать так, чтобы одновременно в системе работал только один экземпляр интересующего нас процесса.

Задача
Принудительно завершить ранее запущенные экземпляры процесса при запуске текущего процесса
Решение
- Ожидание требования остановки
- Одновременно с запуском процесса запускаем ветку ожидания сигнала прерывания. Называть сигнал лучше по названию процесса. Например, процесс называется
ProcessImportOrdersUpdateOpen, тогда сигнал назватьStopProcessImportOrdersUpdateOpen
- Ставим таймер задержки прерывания, чтобы процесс не остановил сам себя;
- Одновременно с запуском процесса запускаем ветку ожидания сигнала прерывания. Называть сигнал лучше по названию процесса. Например, процесс называется
- Генерация требования остановки
- Добавляем генерацию сигнала по всей системе на остановку прочих экземпляров

- Добавляем генерацию сигнала по всей системе на остановку прочих экземпляров
Описание
Процесс идёт по всем безусловным веткам управления одновременно. А дальше останавливается на элементе, который необходимо выполнить. Если это системное действие, оно будет выполнено автоматически, если пользовательское, процесс на нём остановится в ожидании реакции пользователя. На ожидании промежуточного сигнала процесс тоже остановится. Как только в системе будет сгенерирован нужный промежуточный сигнал, продолжит выполняться параллельная ветка процесса и процесс перейдёт к сигналу завершения. В результате процесс будет завершён вне зависимости от статуса выполнения прочих шагов (они будут отменены).
Обсудить в Telegram