Xor

 
<<< Назад

Простые правила - вариант модуля. ч. 2

продолжение + код

Продолжение, начало тут

Архив с модулем тут

гит

Правило представляет собой такую конструкцию:

ПРАВИЛО -> ЕСЛИ { УСЛОВИЯ ИСТИННЫ} ТО {ВЫПОЛНИМ ДЕЙСТВИЕ}

Редактирование Правила:
Называем наше правило. Название правила можно использовать потом в Действиях, в служебной переменной $myrule_name
Активность - тут всё ясно - играем/не играем
Поле Если - тут вводим логическое выражение из наших Условий. Начинаем набирать имя Условия, появляется выпадающий список из имеющегося набора.
Допускаются скобки и логические связки И/ИЛИ/! в различных сочетаниях.
пр1

Ещё из фишек - в Условиях работают конструкции %Объект.Свойство%, на момент проверки Условия подставляется значение.

Интересно еще использовать в качестве сравнения операнд php-код (по МДМ-шному - Advanced condition)
Пример - анализ строки состояния дома
1 это свойство, содержит инфу о доме типа Дома:Сергей, Ольга. Активность: Кухня, Прихожая
2 операнд - php-код
3 сам код, анализирующий значение привязанного свойства $value и возвращающий результат в $res - строго 1 или 0 (ответственность заполнения кода - на пользователе!) $res - обязательно к использованию. Эта переменная анализируется внутри для вынесения утверждения, что Условие выполнилось.
В примере просто проверяется присутствие пользователей (хотя бы одного из них) в доме, при обнаружении - Условие срабатывает.

пр2

Да, Правило не вычисляется, если привязанное свойство обновилось, но не изменило своего значения. Кроме выбора операнда значение обновилось, тут при любом обновлении срабатывает вычисление Правила.
Из интересного, или для чего на вкладке Правил есть птичка?
При сохранении Правила проходит перекодировка логики во внутреннее представление (ну и при нажатии на птичку).
Вот типа такое @CON0005@ && ! @CON0008@ && @CON0003@, что позволило некоторым образом обезопаситься от изменения названий Условий и перейти к айдишникам Условий и к легкому доступу к их значениям (Условия могут находиться только в двух состояниях - 1/0). Вычисление логики Правила сводится к тупому eval выражения, типа 1 && !0 && 1

Если в окне логики Правила существует несуществующее (хе!) Условие - при нажатии на птичку неверное Условие превратится в '0' (false).

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

~~Если все Условия активные, то это не важно. ~~

В версии на гите сделал замену неактивного Условия на 0 (false)

И, эээ, задумывалось использовать в Правилах ветку Иначе, но пока решил не делать.

Сделано для себя, любимого, т.к. стало тяжело ориентироваться в большом количестве алгоритмов, алгоритмиков, условий и сценариев(
И с прицелом на будущее

PS. Модуль при деинсталляции убирает свои таблицы, но пока не отвязывает привязанные свойства! В планах
PPS. Добавлена ссылка на гит

Обсуждение (2) (9)

Смотрите так же:
12.02.2024 Китайская панель в подрозетник с экраном 480*480
29.10.2023 MQTT в МДМ - способ обработки топика через метод
03.04.2023 Todoer: обмен данными с Яндекс календарём
31.03.2023 Todoer: календарь на год
30.03.2023 Todoer: анонс + программное создание задачи
08.05.2022 Глобальный поиск - добавление своих сущностей. Upd Внедрено
05.01.2022 Яндекс Лампочка в Yandex Devices - добавление сцен
18.04.2021 Переезд на мастер спустя год
24.03.2021 Ещё о старте/остановке МДМ в Винде
18.02.2021 Модуль Todoer
06.01.2021 Для виндузятников - перенос бд на рам-диск
22.11.2020 Календарь-планировщик
01.08.2020 Irbis как терминал
18.05.2020 Китайская камера rtsp + vlc как перекодировщик для html
12.05.2020 Опыт интеграции МДМ с Я.Алисой ещё одним способом - без белого адреса, москита, ПУ.(дополнено)
07.05.2020 Поправим формат даты в Панели управления
11.04.2020 Баловство с шаблонами
25.03.2020 Простые правила - вариант модуля
20.12.2019 расширение средств работы с events updated
20.11.2019 По следам наших выступлений - сколько мы наэкономили?
04.11.2019 Группа как объект - экономим на коде - 2
26.10.2019 Прикручиваем Grafana к Мажордому
11.10.2019 Группа как объект - экономим на коде
25.09.2019 Если у вас нет телеги...
11.09.2019 Датчик присутствия из ип камеры
30.07.2019 Win-платформа-замена ffmpeg для получения скриншотов из rstp - потока
24.06.2019 Форматированный отчет в телеграм - имитация таблицы
30.04.2019 Используем зомбо-ящик в Мажордомо
24.03.2019 О среднем в Мажордомо
31.10.2018 Об "обделённых" пользователях Win-систем -- с точки зрения кэширования winTTS сообщений
16.09.2018 Перезагрузка Мажордомо в Win-системах

Домодедово, Россия

На форуме: xor