Что Бы Одновременно Агент Дважды Не Запускался ?

Mikle77

Well-known member
19.12.2007
80
0
#1
Есть агент.
Может запускаться как по расписанию так и вручную (по кнопке в которой он запускается на сервере runonserver).

Необходимо сделать так, чтобы когда работает агент, который запустился по расписанию нельзя были запустить этого агента вручную по кнопке.

Может в коде агента можно узщнат что он уже запущен ?
 

Darkhan

Lotus team
14.12.2012
98
2
#2
Для этого можно "вручную" фиксировать где-нибудь момент запуска(и окончания) агента, при условии, что он отрабатывается на сервере
 

erdi

Well-known member
20.08.2008
265
17
#3
в начале запуска агента создаешь документ-блокировка с полями: название агента и дата запуска, в конце убиваешь этот документ. В этом же агенте перед созданием документа-блокировки - проверка нет ли данного документа для этого агента. если есть выходишь из него, если нет - создаешь и потом удаляешь.
Также не забываем обработчик ошибок, чтобы если вылетел агент с ошибкой он убил свой блокирующий документ и желательно еще 1 агент по времени, чтобы если все-таки зависли такие документы блокировки долгое время(30-60 минут) убивать их принудительно.
 

savl

Lotus team
28.10.2011
2 131
102
#4
1. Пересмотреть расписание.
Не запускать по расписанию во время работы пользователей.
2. Еще вариант оставить его только по расписанию раз в 10-30 минут и отобрать кнопку у пользователя.
3. Сделать для документов какой-нибудь промежуточный статус и пусть агент обрабатывает только документы с этим статусом.
На этот "левый" статус переводить документы как раз по той кнопке пользователя.
 

lmike

нет, пердело совершенство
Премиум
27.08.2008
6 567
263
#5
запускаемый по расписанию - это агнет на сервере (как пр-ло) - создать очередь (блокировочный док - это слишком) и сообщение в нем
клиент по кнопке проверяет очередь - не запускается если есть
 

VladSh

начинающий
Lotus team
11.12.2009
1 260
5
#6
"Количество одновременно запускаемых конкурентных агентов = 1" в настройках сервера не оно?