Основные операции > Работа с событиями Постановка события в очередь |
![]() ![]() ![]() |
Процесс обработки события при постановке в очередь зависит от причины его возникновения (поле Тип в очереди в таблице с очередью событий). Это может быть:
первичное событие, возникшее непосредственно при выполнении указанных в его настройках условий (выставился инвойс с услугой, на лицевой счет зачислен платеж и т. п.);
изменяющее или отменяющее событие, автоматически сгенерированное системой для актуализации текущего состояния;
повторное событие, возникшее при перевыполнении события.
Когда происходит некоторое изменение (выставляется инвойс с услугой, меняется состояние оборудования или абонента, зачисляется платеж, расторгается договор и т. п.), система подбирает событие соответствующего типа, настроенное для управляющего объекта, к которому привязано абонентское оборудование, или для сетевой службы, на которую подписан абонент.
Допустим, абоненту был выставлен инвойс, содержащий услугу Доступ в Интернет, а абонентское оборудование, на котором она оказывается, привязано к порту коммутатора (тип привязки — Сетевое соединение). Тогда система будет искать событие типа При подключении услуги, добавленное для позиции номенклатуры, на основе которой создан объект–коммутатор, при этом в настройках этого события в поле Тип привязки объекта должно быть указано значение Сетевое соединение, а в поле Услуга — Доступ в Интернет.
Если подходящее событие найдено, его обработка при постановке в очередь начинается с подбора предыдущего события — последней неархивной записи в очереди событий, удовлетворяющей следующим требованиям:
событие произошло для того же субъекта или объекта;
событие произошло на том же управляющем оборудовании (коммутаторе, сетевой службе и т. п.);
событие имеет такой же тип, что и возникшее, за исключением событий типа При подключении/отключении услуги: событие типа При отключении услуги может использоваться в подборе записи для события типа При подключениии услуги и наоборот;
состояние события в очереди — Подготовлено, Отправлено, Выполнено или Предупреждение;
если для события указана услуга, она совпадает с услугой в новом событии;
если событие имеет тип Поступление на лицевой счет, Выставлен счет, Временная блокировка, Блокировка за неуплату, Расторжение договора, то указанный в записи документ (платежный документ, счет, инвойс или договор) совпадает с документом, связанным с новым событием.
|
|
Далее для нового события формируются прямые команды и вычисляются соответствующие значения подстановок.
Если для события не было найдено предыдущее, оно сразу ставится в очередь в состоянии Подготовлено, в противном случае выполняются следующие действия:
1.Если в настройках события используется параметр Максимальное число повторений, считается количество предшествующих ему неархивных событий в той же цепочке.
2.Команды и значения подстановок для нового события сравниваются с командами и подстановками из предыдущего события.
3.Если команды и значения подстановок не изменились, превышено максимальное число повторений (при условии, что оно задано), установлен флаг Отменять повторяющиеся события и при этом новое и предыдущее события связаны с одним и тем же документом или в них обоих документ не указан, то новое событие отменяется (состояние в очереди — Отменено) и архивируется. Если же документ изменился, новое событие помечается как выполненное (без фактической отправки и выполнения на оборудовании), а предыдущее событие архивируется.
4.Если изменились только значения подстановок и предыдущее событие еще не было обработано, т. е. находится в состоянии Подготовлено, то при установленном в настройках флаге Переформировывать событие при изменении подстановок предыдущее событие будет отменено, а новое поставлено в очередь. Если же флаг не установлен, будет отменено и заархивировано новое событие.
5.Если предыдущее событие было таким же, что и новое (т. е. у них не только одинаковый тип, но и один и тот же идентификатор в таблице настроенных в системе событий) и изменились команды или значения подстановок, то в случае превышенного максимального числа повторений новое событие будет отменено и заархивировано. В противном случае будут выполнены обратные действия, связанные с событием, а новое событие будет поставлено в очередь.
6.Если тип предыдущего события не совпадает с типом нового события (это возможно для событий типа При подключении/отключении услуги), в настройках нового события стоит флаг Отменять повторяющиеся события по разным документам, и предыдущее событие находится в состоянии Подготовлено, система пытается найти в этой цепочке последнее выполненное неархивное событие. В случае, если оно существует, его тип совпадает с новым событием и в нем были использованы те же команды и значения подстановок, выполненное событие архивируется, все события, стоящие в цепочке между новым и найденным выполненным, отменяются и архивируются, а новое событие отмечается как выполненное.
|
|
Если ни одна из описанных выше ситуаций не имела места, событие ставится в очередь в состоянии Подготовлено.
Поскольку изменяющее событие возникает в случае, когда какие-либо параметры уже сгенерированного события перестают быть актуальными (меняются команды, значения подстановок и т. п.), необходимо не только выполнить событие с новыми командами или подстановками, но и нейтрализовать предыдущее событие путем вызова связанных с ним обратных действий.
Сначала система формирует команды для обратных действий, используя значения подстановок из прямых действий предыдущего события. После чего вычисляет новые значения подстановок и создает новые команды для прямых действий.
Например, если при активации абонентского оборудования произошло событие, содержащее команду для создания привязки к порту коммутатора, а после этого у оборудования изменился MAC-адрес, сначала будет удалена привязка со старым MAC-адресом (обратное действие), а затем добавлена привязка с новым MAC-адресом (прямое действие).
Изменяющее событие с обратными и прямыми командами ставится в очередь в состоянии Подготовлено.
Как и изменяющее, отменяющее событие генерируется при актуализации текущего состояния, когда устаревают использованные в событии параметры, но при этом заново выполнять событие не имеет смысла. В случае отменяющего события не требуется формировать новые прямые команды, достаточно лишь выполнить обратные со старыми значениями подстановок. Событие с набором обратных команд ставится в очередь в состоянии Подготовлено.
Повторное событие возникает при перевыполнении специальным заданием Контроль за выполнением событий события, в процессе обработки которого возникла ошибка (такое событие имеет в очереди состояние Ошибка). Для повторного события заново вычисляются подстановки и формируются команды, после чего новое событие ставится в очередь в состоянии Подготовлено, а старое ошибочное событие архивируется.