Определение и реализация событий

При определении событий контекста ваших устройств/агентов/серверов необходимо задать свойства их определений, т.е. имя, описание, формат, текст справки, уровень прав доступа и группу. Для объявления нового события создайте экземпляр объекта EventDefinition и задайте его свойства. Вот пример:

// Creating event data format (scalar, string)

FieldFormat ff = FieldFormat.create("demoEventField", FieldFormat.STRING_FIELD);

TableFormat format = new TableFormat(1, 1, ff);

    

// Creating event definition

EventDefinition ed = new EventDefinition("demoEvent", format, "Demo Event", ContextUtils.GROUP_DEFAULT);

После этого добавьте определение событий к контексту:

  • Определение событий контекста драйвера устройства, соответствующее событию устройства, должно возвращаться переопределенным методом DeviceDriver.readEventDefinitions().

  • Плагины сервера должны добавлять события из методов install() и start().

  • Агенты на базе Java должны добавлять события после создания объекта Agent через Agent.getContext().addEventDefinition().

  • Наконец, скрипты (как сервера, так и виджетов) обычно не должны добавлять какие-либо события.

Для событий сервера также необходимо определить период их действия и уровень прав доступа:

// Setting permission level

ed.setPermissions(ServerPermissionChecker.getManagerPermissions());

События устройства, предоставленные драйвером устройства, вместе с событиями Agent должны принадлежать группе remote.

Группа событий определяется вызовом EventDefinition.setGroup(). Можно использовать следующий синтаксис:

Генерация событий

Плагины, драйвера и Агенты могут генерировать события контекста с помощью метода fireEvent() интерфейса Context. Вот пример:

context.fireEvent("eventName", EventLevel.INFO, new Float(Math.random() * 1000000));

Формат таблицы данных, передаваемой методу fireEvent(), должен соответствовать формату в определении событий. При несоблюдении этого правила данные могут быть утеряны, поскольку система попытается конвертировать таблицу данных в формат, предоставленный определением, сохраняя как можно большее количество данных.