Xor

 
<<< Back

Простые правила - вариант модуля. ч. 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. Добавлена ссылка на гит

Discuss (2) (9)

See also:
2024-02-12 Китайская панель в подрозетник с экраном 480*480
2023-10-29 MQTT в МДМ - способ обработки топика через метод
2023-04-03 Todoer: обмен данными с Яндекс календарём
2023-03-31 Todoer: календарь на год
2023-03-30 Todoer: анонс + программное создание задачи
2022-05-08 Глобальный поиск - добавление своих сущностей. Upd Внедрено
2022-01-05 Яндекс Лампочка в Yandex Devices - добавление сцен
2021-04-18 Переезд на мастер спустя год
2021-03-24 Ещё о старте/остановке МДМ в Винде
2021-02-18 Модуль Todoer
2021-01-06 Для виндузятников - перенос бд на рам-диск
2020-11-22 Календарь-планировщик
2020-08-01 Irbis как терминал
2020-05-18 Китайская камера rtsp + vlc как перекодировщик для html
2020-05-12 Опыт интеграции МДМ с Я.Алисой ещё одним способом - без белого адреса, москита, ПУ.(дополнено)
2020-05-07 Поправим формат даты в Панели управления
2020-04-11 Баловство с шаблонами
2020-03-25 Простые правила - вариант модуля
2019-12-20 расширение средств работы с events updated
2019-11-20 По следам наших выступлений - сколько мы наэкономили?
2019-11-04 Группа как объект - экономим на коде - 2
2019-10-26 Прикручиваем Grafana к Мажордому
2019-10-11 Группа как объект - экономим на коде
2019-09-25 Если у вас нет телеги...
2019-09-11 Датчик присутствия из ип камеры
2019-07-30 Win-платформа-замена ffmpeg для получения скриншотов из rstp - потока
2019-06-24 Форматированный отчет в телеграм - имитация таблицы
2019-04-30 Используем зомбо-ящик в Мажордомо
2019-03-24 О среднем в Мажордомо
2018-10-31 Об "обделённых" пользователях Win-систем -- с точки зрения кэширования winTTS сообщений
2018-09-16 Перезагрузка Мажордомо в Win-системах

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

На форуме: xor