Основные операции > Работа с событиями Текущее состояние |
![]() ![]() ![]() |
В АСР «Гидра» используется понятие текущего состояния объектов и субъектов, которое определяется по очереди событий. Текущим состоянием называется набор последних неархивных событий в очереди в разрезе объекта или субъекта и услуги (если она задана в настройках события). При этом события в очереди должны иметь состояние Подготовлено, Выполнено или Предупреждение; и любой тип, кроме Отменяющая. Например, если на данный момент на абонентском оборудовании включена услуга доступа для определенного IP-адреса, то в очереди событий для этого оборудования последним должно стоять событие по включению услуги доступа, в подстановках которого указан именно этот IP-адрес.
Если необходимо повторно выполнить события, относящиеся к текущему состоянию (например, после перезагрузки управляющего оборудования), используется специальная утилита hamdctl.py в составе менеджера активного оборудования hamd. С ее помощью задается список объектов-получателей (сетевых служб, коммутаторов), текущее состояние которых будет восстановлено при очередном запуске задания по hamd.
Для того, чтобы состояние оборудования, определенное по очереди событий, всегда соответствовало тому, что реально происходит в системе, используется специальная процедура, которая при необходимости генерирует изменяющие и отменяющие события. Вызов данной процедуры производится при изменении параметров оборудования или абонента (удалении или изменении привязок оборудования, изменении адресов и т. п.) и просто нажатии на кнопку Сохранить на форме редактирования объекта или субъекта.
Процедура актуализации текущего состояния работает следующим образом. Для объекта или субъекта формируется список событий из очереди, относящихся к текущему состоянию. Далее производится проверка каждой записи из этого списка.
1.Если речь идет о событии для объекта, система проверяет, существует ли на текущий момент связь (поле Тип привязки объекта на форме редактирования события) с другим объектом, на основе которой событие было поставлено в очередь, например, привязано ли все еще абонентское оборудование к порту коммутатора. Если связь уже не существует, т. е. привязка оборудования к данному объекту была удалена, формируется и ставится в очередь отменяющее событие.
2.Если событие произошло из-за изменения состояния объекта или субъекта, система определяет его состояние на данный момент и сравнивает с тем, которое указано в поле В состояние на форме редактирования события (если оно заполнено). Если состояния не совпадают, формируется и ставится в очередь отменяющее событие.
3.Если событие связано с подключением услуги (кроме услуг передачи данных и голоса) система ищет действующий инвойс, содержащий данную услугу. Если такого инвойса нет, формируется и ставится в очередь отменяющее событие.
4.Если ни одна из описанных выше ситуаций не имела место и в настройках события стоит флаг Переформировывать событие при изменении подстановок, проверяются значения подстановок, которые были использованы в связанных с событием командах. Система заново вычисляет эти значения на основе данных, актуальных на текущий момент. Если вычисленные значения не совпадают с использованными значениями (например, изменился IP-адрес абонентского оборудования), формируется и ставится в очередь изменяющее событие.
При сохранении параметров объекта система дополнительно просматривает связанные с ним действующие инвойсы и, при необходимости, генерирует недостающие события по подключению и отключению услуг путем вызова специальной процедуры.
Данная процедура также вызывается при изменении состояния инвойса, добавлении в него новой услуги или изменении параметров оказания существующей услуги, например, срабатывании очередного количественного порога для интернет-трафика. Кроме того, ее можно вызвать вручную.
При формировании событий по инвойсу система выполнят следующие действия:
по очереди событий определяет, для каких услуг из инвойса были сформированы события типа При подключении услуги;
если инвойс находится в состоянии Актуален, составляет список услуг, которые оказываются абоненту на текущий момент. В него включаются обычные услуги и услуги доступа, если в инвойсе для них есть строки, в период действия которых попадает текущая дата, а также услуги передачи данных и голоса, входящие в состав тарифного плана;
если инвойс находится в состоянии Актуален, сравнивает сформированные на первых двух шагах списки и вызывает недостающие события с типом При подключении услуги;
вызывает события с типом При отключении услуги для услуг, по которым в очереди присутствует событие на подключение, но при этом инвойс находится в состоянии, отличном от Актуален, или же в актуальном инвойсе на текущий момент для них нет действующей строки.
|
|
|
|