Правила Groovy
Версия: 1.26.0
Правила Groovy написаны на Groovy, языке программирования, который может легко работать вместе с Java. Эти правила способны выполнять любую задачу, которую OpenRemote позволяет выполнять правилам, и предназначены для сценариев, слишком сложных, чтобы их можно было определить с помощью When-Then Rules или Flow Rules. Пользователи с опытом программирования могут предпочесть писать правила в Groovy, независимо от их сложности.
Groovy Rules можно создавать в техническом менеджере и писать вручную. В следующих разделах представлена дополнительная информация о том, как создавать собственные правила Groovy.
Как работают правила Groovy?
Правила Groovy работают с использованием механизма сценариев Groovy. Правила анализируются и привязываются различные объекты. Правила впоследствии регистрируются в порядке сверху вниз в наборе правил.
Список объектов:
-
LOGобеспечивает базовые функции ведения журнала с использованиемjava.util.logging.Logger. -
rulesобеспечивает доступ к набору правил. Таким образом отдельные правила добавляются в набор правил. Соответствующий класс в исходном коде -
assetsобеспечивает доступ к соответствующим активам. Соответствующий класс в исходном коде -
usersобеспечивает доступ соответствующим пользователям. Соответствующий класс в исходном коде -
notificationsпредоставляет возможность отправлять уведомления. Соответствующий класс в исходном коде
Примеры правил Groovy
В этом разделе вы можете найти шаблоны кода и соответствующие примеры использования правил Groovy.
Шаблоны правил Groovy:
- Правило группового контроля
- Правило группового суммирования
Пример: групповое управление
Пример: групповое управление. Группа активов вместе с атрибутами и элементами конфигурации, используемыми в этом примере.
В этом примере показано, как одновременно управлять несколькими дочерними активами (светами) с помощью родительского актива (контроллера освещения). В демонстрационных целях мы будем использовать общий Thing Asset, но вы можете заменить его своим собственным типом актива. Если у вас уже есть группа активов с конфигурацией Rule state, вы можете пропустить шаги 1–3.
-
Создайте актив:
- Перейдите на страницу
Assetsи щелкните значок+. - Выберите
Thing Assetи назовите его Контроллер освещения. - Нажмите
ADD, чтобы создать актив.
- Перейдите на страницу
-
Создайте атрибут с состоянием правила:
– Выберите ресурс Контроллер освещения и нажмите
MODIFY.- Нажмите
+ ADD ATTRIBUTE. - Создайте атрибут с помощью:
- Тип:
Custom attribute - Имя:
onOff - Тип значения:
Boolean.
- Тип:
- Нажмите
ADD. - Щелкните значок
>вновь созданного атрибутаonOffи щелкните+ ADD CONFIGURATION ITEMS. - Выберите
Rule stateи нажмитеADD. - Нажмите
SAVE, чтобы сохранить изменения. – Создайте 2 дополнительных объекта, щелкнув значок копирования❐, назовите их Light 1 и Light 2. - Нажмите
VIEW, чтобы вернуться к просмотру активов.
- Нажмите
-
Создайте группу активов:
– Выберите Свет 1 и Свет 2 в списке ресурсов и перетащите их на Контроллер освещения.
-
Создайте правило:– Выберите ресурс Контроллер освещения и запишите его идентификатор ресурса (последняя часть URL-адреса, см. рисунок выше).
- Перейдите на страницу
Rules, щелкните значок+и выберитеGroovy. В редакторе кода появится базовый пример правила Groovy. Удалите этот пример. - Скопируйте Правило группового контроля в редактор кода.
– В редакторе кода замените идентификатор ресурса переменной
parentAssetIdна идентификатор ресурса Lights Controller. – Назовите правило Правило контроллера освещения и нажмитеSAVE.
- Перейдите на страницу
После выполнения вышеуказанных шагов вы сможете одновременно управлять Light 1 и Light 2, нажав кнопку On off на Контроллере освещения. Вы по-прежнему можете управлять освещением по отдельности, но их значение перезаписывается каждый раз, когда используется Контроллер освещения. Вы можете использовать это правило в качестве отправной точки для создания собственных правил настраиваемой группы.
Пример: групповое суммирование
Пример: групповое суммирование. Группа активов вместе с атрибутами и элементами конфигурации, используемыми в этом примере.
В этом примере показано, как суммировать значения атрибутов дочерних активов с родительским активом внутри группы. В демонстрационных целях мы будем использовать общий Thing Asset, но вы можете заменить его своим собственным типом актива. Если у вас уже есть группа активов с конфигурацией Rule state, вы можете пропустить шаги 1–3.
-
Создайте актив:
- Перейдите на страницу
Assetsи щелкните значок+. - Выберите
Thing Assetи назовите его Солнечная ферма. - Нажмите
ADD, чтобы создать актив.
- Перейдите на страницу
-
Создайте атрибут с состоянием правила:
– Выберите объект Солнечная ферма и нажмите
MODIFY.- Нажмите
+ ADD ATTRIBUTE. - Создайте атрибут с помощью:
- Тип:
Custom attribute - Имя:
solarPower - Тип значения:
Number.
- Тип:
- Нажмите
ADD. - Щелкните значок
>вновь созданного атрибутаsolarPowerи щелкните+ ADD CONFIGURATION ITEMS. - Выберите
Rule stateи нажмитеADD. - Нажмите
SAVE, чтобы сохранить изменения. – Создайте 2 дополнительных объекта, щелкнув значок копирования❐, назовите их Солнечная панель 1 и Солнечная панель 2. - Нажмите
VIEW, чтобы вернуться к просмотру активов.
- Нажмите
-
Создайте группу активов:
– Выберите Солнечная панель 1 и Солнечная панель 2 из списка ресурсов и перетащите их в Солнечную ферму.
-
Создайте правило:
– Выберите объект Солнечная ферма и запишите его идентификатор актива (последняя часть URL-адреса, см. рисунок выше).
- Перейдите на страницу
Rules, щелкните значок+и выберитеGroovy. В редакторе кода появится базовый пример правила Groovy. Удалите этот пример. - Скопируйте Правило группового суммирования в редактор кода.
- В редакторе кода замените идентификатор актива переменной
parentAssetIdна идентификатор вашего актива Solar Farm. – Назовите правило Правило суммирования солнечной энергии и нажмитеSAVE.
- Перейдите на страницу
Выполнив описанные выше действия, вы сможете установить значения мощности для Солнечной панели 1 и Солнечной панели 2 и увидеть сумму в атрибуте мощности Солнечная ферма. Вы можете использовать это правило в качестве отправной точки для создания собственных правил настраиваемой группы.
Дополнительная информация:— По умолчанию будут суммироваться все дочерние атрибуты с конфигурацией Rule state. Если вы хотите суммировать только определенные атрибуты, вы можете указать имена их атрибутов в переменной attributeNames.
– По умолчанию тип родительского и дочернего активов должен совпадать. Если вы хотите суммировать атрибуты с одинаковыми именами разных типов активов, вы можете установить для переменной matchParentAssetType значение false.
- Правило срабатывает, когда в группе обнаруживаются изменения временной метки дочернего атрибута. Если вы перемещаете дочерний актив за пределы группы, сумма не пересчитывается до тех пор, пока метка времени дочернего атрибута не будет обновлена внутри группы.
См. также
Уведомление о лицензии: атрибуция документации OpenRemote