Основные операции > Работа с событиями

Текущее состояние

В начало  Предыдущий раздел  Следующий раздел

В АСР «Гидра» используется понятие текущего состояния объектов и субъектов, которое определяется по очереди событий. Текущим состоянием называется набор последних неархивных событий в очереди в разрезе объекта или субъекта и услуги (если она задана в настройках события). При этом события в очереди должны иметь состояние Подготовлено, Выполнено или Предупреждение; и любой тип, кроме Отменяющая. Например, если на данный момент на абонентском оборудовании включена услуга доступа для определенного IP-адреса, то в очереди событий для этого оборудования последним должно стоять событие по включению услуги доступа, в подстановках которого указан именно этот IP-адрес.

Если необходимо повторно выполнить события, относящиеся к текущему состоянию (например, после перезагрузки управляющего оборудования), используется специальная утилита hamdctl.py в составе менеджера активного оборудования hamd. С ее помощью задается список объектов-получателей (сетевых служб, коммутаторов), текущее состояние которых будет восстановлено при очередном запуске задания по hamd.

Для того, чтобы состояние оборудования, определенное по очереди событий, всегда соответствовало тому, что реально происходит в системе, используется специальная процедура, которая при необходимости генерирует изменяющие и отменяющие события. Вызов данной процедуры производится при изменении параметров оборудования или абонента (удалении или изменении привязок оборудования, изменении адресов и т. п.) и просто нажатии на кнопку Сохранить на форме редактирования объекта или субъекта.

Процедура актуализации текущего состояния работает следующим образом. Для объекта или субъекта формируется список событий из очереди, относящихся к текущему состоянию. Далее производится проверка каждой записи из этого списка.

1.Если речь идет о событии для объекта, система проверяет, существует ли на текущий момент связь (поле Тип привязки объекта на форме редактирования события) с другим объектом, на основе которой событие было поставлено в очередь, например, привязано ли все еще абонентское оборудование к порту коммутатора. Если связь уже не существует, т. е. привязка оборудования к данному объекту была удалена, формируется и ставится в очередь отменяющее событие.

2.Если событие произошло из-за изменения состояния объекта или субъекта, система определяет его состояние на данный момент и сравнивает с тем, которое указано в поле В состояние на форме редактирования события (если оно заполнено). Если состояния не совпадают, формируется и ставится в очередь отменяющее событие.

3.Если событие связано с подключением услуги (кроме услуг передачи данных и голоса) система ищет действующий инвойс, содержащий данную услугу. Если такого инвойса нет, формируется и ставится в очередь отменяющее событие.

4.Если ни одна из описанных выше ситуаций не имела место и в настройках события стоит флаг Переформировывать событие при изменении подстановок, проверяются значения подстановок, которые были использованы в связанных с событием командах. Система заново вычисляет эти значения на основе данных, актуальных на текущий момент. Если вычисленные значения не совпадают с использованными значениями (например, изменился IP-адрес абонентского оборудования), формируется и ставится в очередь изменяющее событие.

Актуализация событий по инвойсу

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

Данная процедура также вызывается при изменении состояния инвойса, добавлении в него новой услуги или изменении параметров оказания существующей услуги, например, срабатывании очередного количественного порога для интернет-трафика. Кроме того, ее можно вызвать вручную.

При формировании событий по инвойсу система выполнят следующие действия:

по очереди событий определяет, для каких услуг из инвойса были сформированы события типа При подключении услуги;

если инвойс находится в состоянии Актуален, составляет список услуг, которые оказываются абоненту на текущий момент. В него включаются обычные услуги и услуги доступа, если в инвойсе для них есть строки, в период действия которых попадает текущая дата, а также услуги передачи данных и голоса, входящие в состав тарифного плана;

если инвойс находится в состоянии Актуален, сравнивает сформированные на первых двух шагах списки и вызывает недостающие события с типом При подключении услуги;

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

 

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

 

В предоставляемом компанией «Латера» API есть процедура для массового формирования новых событий по уже действующим инвойсам.