Перейти к содержанию

Блок "Правила"

Блок доступен начиная с версии 0.25

Назначение блока

Блок предназначен для выполнения правил, написанных с использованием выражений.

Настройки блока

Общие настройки блоков описаны в отдельном разделе.

Раздел "Специфические настройки блока"

Наименование Тип Обязательное Описание Пример
Правила Ввод выражения Да Поле ввода кода правил. Правила разделяются между собой с помощью ; (точки с запятой)
Количество знаков после запятой Целое число Нет Настройка количества знаков после запятой для вещественного результата выражения
Расчет Выпадающий список Да Методика расчета правил
Максимум циклов в итерации Целое число Нет Доступно, только если в параметре "Расчет" установлено "Пока не сработает хотя бы одно правило". Количество итераций, после которых расчет правил прерывается.

Методика расчета правил

  • До первого сработавшего правила - расчет завершается на первом сработавшем правиле.
  • Все правила - один проход по правилам, от первого до последнего.
  • Пока срабатывает хотя бы одно правило - расчет завершается, когда ни одно правило не выполняется, или не будет достигнут предел итераций (см. ниже)

Входы блока

Общие настройки входов блока описаны в отдельном разделе.

Название входа Тип Описание
Правила JSON Массив, содержащий в себе правила.

Если на данном входе есть значения, то они будут применяться вместо правил из настройки "Правила"

Пример массива
[
    {
        "rule": "<Правило 1>"
    },
    {
        "rule": "<Правило 2>"
    }
]

Кроме того, доступно создание пользовательских входов.

Для создания входа необходимо нажать на знак + в разделе входов блока. Для каждого из входов задается следующий перечень полей:

Название входа Тип Обязательный Описание
Идентификатор Строка Да Идентификатор входа
Имя Строка Да Имя входа для отображения в списке входов блока. В отличии от других блоков, используется для получения доступа к данным входа.
Описание Строка Нет Дополнительная информация с описанием входа
Тип Выпадающий список Да Тип данных, которые будут приходить на вход. Нужен для построения корректных связей с другими блоками.По умолчанию установлен тип "JSON".
Обязательный Флаг Да Обязательность входа. Если вход обязательный и на него не пришло данных - блок не будет рассчитан с ошибкой
Массив Флаг Да Является ли вход массивом данных

Выходы блока

Общие настройки выходов блока описаны в отдельном разделе.

Название выхода Тип Описание
Результат Ряды Ряды данных, преобразованные после правил.
Рекомендации JSON Массив текстовых рекомендаций.Добавляться будут только уникальные рекомендации (если текст есть в массиве рекомендаций, он будет проигнорирован)
Отладка JSON Массив с номерами сработавших правил.

Тип выхода зависит от типа входа. Если на вход были поданы объекты, то выход будет аналогичным.
Для добавления текста в рекомендации используется функция msg() (см. Функции → Функции → Разное).

События блока

В блоке нет событий

Описание работы блока

Блок считывает код, написанный в поле "Правила", после чего последовательно выполняет все обнаруженные правила.

В отличие от блока "Выражение", корректная запись блока "Правила" должна включать в себя одно или несколько условий if...else разделенных ; (точка с запятой) и опционально, несколько конструкций with:

Пример

[ with | пусть ] <Переменная> [ as | как ] ( <Выражение> )
[ with | пусть ] <Переменная> [ as | как ] ( <Выражение> )

[ if | если ] <Условие> [ then | тогда ] <Правда>;
[ if | если ] <Условие> [ then | тогда ] <Правда>; 
[ if | если ] <Условие> [ then | тогда ] <Правда> (Не обязательно [ else | иначе ] <Ложь>);

Правило сработает, если условие пойдет по пути <Правда> (см. Конструкции → Условия).

Все правила без условий if, никогда не будут считаться выполненными. Условия, написанные в конструкции with не являются правилами.

Подробное описание синтаксиса можно почитать по ссылкам ниже:

  1. Типы данных
  2. Базовые операции
  3. Функции
  4. Методы
  5. Конструкции

Результатом работы блока (для выхода "Результат") является одномерный массив всех входов, задействованных в блоке.

Использование шаблонизатора

В блоке присутствует шаблонизатор Jinja2, связанный со входом "Данные". Таким образом, выражения могут быть дополнены шаблонами. Шаблоны будут преобразованы в значения до выполнения правил, что предотвращает ошибки, связанные с некорректным синтаксисом.

Полезные ссылки

https://jinja.palletsprojects.com/en/3.0.x/