Блок "Правила"
Блок доступен начиная с версии 0.25
Назначение блока
Блок предназначен для выполнения правил, написанных с использованием выражений.
Настройки блока
Общие настройки блоков описаны в отдельном разделе.
Раздел "Специфические настройки блока"
| Наименование | Тип | Обязательное | Описание | Пример |
|---|---|---|---|---|
| Правила | Ввод выражения | Да | Поле ввода кода правил. Правила разделяются между собой с помощью ; (точки с запятой) |
|
| Количество знаков после запятой | Целое число | Нет | Настройка количества знаков после запятой для вещественного результата выражения | |
| Расчет | Выпадающий список | Да | Методика расчета правил | |
| Максимум циклов в итерации | Целое число | Нет | Доступно, только если в параметре "Расчет" установлено "Пока не сработает хотя бы одно правило". Количество итераций, после которых расчет правил прерывается. |
Методика расчета правил
- До первого сработавшего правила - расчет завершается на первом сработавшем правиле.
- Все правила - один проход по правилам, от первого до последнего.
- Пока срабатывает хотя бы одно правило - расчет завершается, когда ни одно правило не выполняется, или не будет достигнут предел итераций (см. ниже)
Входы блока
Общие настройки входов блока описаны в отдельном разделе.
| Название входа | Тип | Описание |
|---|---|---|
| Правила | JSON | Массив, содержащий в себе правила. |
Если на данном входе есть значения, то они будут применяться вместо правил из настройки "Правила"
Кроме того, доступно создание пользовательских входов.
Для создания входа необходимо нажать на знак + в разделе входов блока.
Для каждого из входов задается следующий перечень полей:
| Название входа | Тип | Обязательный | Описание |
|---|---|---|---|
| Идентификатор | Строка | Да | Идентификатор входа |
| Имя | Строка | Да | Имя входа для отображения в списке входов блока. В отличии от других блоков, используется для получения доступа к данным входа. |
| Описание | Строка | Нет | Дополнительная информация с описанием входа |
| Тип | Выпадающий список | Да | Тип данных, которые будут приходить на вход. Нужен для построения корректных связей с другими блоками.По умолчанию установлен тип "JSON". |
| Обязательный | Флаг | Да | Обязательность входа. Если вход обязательный и на него не пришло данных - блок не будет рассчитан с ошибкой |
| Массив | Флаг | Да | Является ли вход массивом данных |
Выходы блока
Общие настройки выходов блока описаны в отдельном разделе.
| Название выхода | Тип | Описание |
|---|---|---|
| Результат | Ряды | Ряды данных, преобразованные после правил. |
| Рекомендации | JSON | Массив текстовых рекомендаций.Добавляться будут только уникальные рекомендации (если текст есть в массиве рекомендаций, он будет проигнорирован) |
| Отладка | JSON | Массив с номерами сработавших правил. |
Тип выхода зависит от типа входа. Если на вход были поданы объекты, то выход будет аналогичным.
Для добавления текста в рекомендации используется функция msg()
(см. Функции → Функции → Разное).
События блока
В блоке нет событий
Описание работы блока
Блок считывает код, написанный в поле "Правила", после чего последовательно выполняет все обнаруженные правила.
В отличие от блока "Выражение", корректная запись блока "Правила" должна включать в себя одно
или несколько условий if...else разделенных ; (точка с запятой) и опционально, несколько конструкций with:
Пример
[ with | пусть ] <Переменная> [ as | как ] ( <Выражение> )
[ with | пусть ] <Переменная> [ as | как ] ( <Выражение> )
[ if | если ] <Условие> [ then | тогда ] <Правда>;
[ if | если ] <Условие> [ then | тогда ] <Правда>;
[ if | если ] <Условие> [ then | тогда ] <Правда> (Не обязательно [ else | иначе ] <Ложь>);
Правило сработает, если условие пойдет по пути <Правда> (см. Конструкции → Условия).
Все правила без условий if, никогда не будут считаться выполненными.
Условия, написанные в конструкции with не являются правилами.
Подробное описание синтаксиса можно почитать по ссылкам ниже:
Результатом работы блока (для выхода "Результат") является одномерный массив всех входов, задействованных в блоке.
Использование шаблонизатора
В блоке присутствует шаблонизатор Jinja2, связанный со входом "Данные". Таким образом, выражения могут быть дополнены шаблонами. Шаблоны будут преобразованы в значения до выполнения правил, что предотвращает ошибки, связанные с некорректным синтаксисом.
