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

Тема в разделе "Lotus - Программирование", создана пользователем Mikle77, 28 мар 2013.

  1. Mikle77

    Mikle77 Well-Known Member

    Регистрация:
    19 дек 2007
    Сообщения:
    81
    Симпатии:
    0
    Есть агент.
    Может запускаться как по расписанию так и вручную (по кнопке в которой он запускается на сервере runonserver).

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

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

    Darkhan Lotus team
    Lotus team

    Регистрация:
    14 дек 2012
    Сообщения:
    97
    Симпатии:
    4
    Для этого можно "вручную" фиксировать где-нибудь момент запуска(и окончания) агента, при условии, что он отрабатывается на сервере
     
  3. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    в начале запуска агента создаешь документ-блокировка с полями: название агента и дата запуска, в конце убиваешь этот документ. В этом же агенте перед созданием документа-блокировки - проверка нет ли данного документа для этого агента. если есть выходишь из него, если нет - создаешь и потом удаляешь.
    Также не забываем обработчик ошибок, чтобы если вылетел агент с ошибкой он убил свой блокирующий документ и желательно еще 1 агент по времени, чтобы если все-таки зависли такие документы блокировки долгое время(30-60 минут) убивать их принудительно.
     
  4. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    1. Пересмотреть расписание.
    Не запускать по расписанию во время работы пользователей.
    2. Еще вариант оставить его только по расписанию раз в 10-30 минут и отобрать кнопку у пользователя.
    3. Сделать для документов какой-нибудь промежуточный статус и пусть агент обрабатывает только документы с этим статусом.
    На этот "левый" статус переводить документы как раз по той кнопке пользователя.
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    запускаемый по расписанию - это агнет на сервере (как пр-ло) - создать очередь (блокировочный док - это слишком) и сообщение в нем
    клиент по кнопке проверяет очередь - не запускается если есть
     
  6. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    "Количество одновременно запускаемых конкурентных агентов = 1" в настройках сервера не оно?
     
Загрузка...

Поделиться этой страницей