Блоки алгоритмов

В конструкторе блоки еще называются Сущности. Сущности - это старое название, сложившееся исторически. Сейчас мы считаем, что название Блок лучше отражает смысл и постепенно везде переименуем.

Блоки - это строительные "кирпичики" алгоритмов. Алгоритмы состоят из блоков. Алгоритм в процессе выполнения последовательно проходит те или иные блоки. Каждый блок выполняет какую-то свою фукнцию.

Исходя из функций существует 6 типов блоков:

  • Сообщения - блоки которые только отображают какую-либо информацию пользователю
  • Вопросы - блоки, осуществляющие ветвление алгоритма, исходя из выбора пользователя
  • Доп. инфо - блоки, запрашивающие ввод информации от пользователя
  • Выражения - блоки, производящие вычисления и осуществляющие ветвления на основе вычислений
  • Заключения - блоки, формирующие документ на основе шаблона
  • Действия - блоки, производящие разнообразные действия (все что угодно, от отправки сообщения на почту, до запроса к внешнему API или записи данных в БД)

Библиотека блоков

После создания блок существует и хранится как отдельная сущность. Даже если блок создавался внутри алгоритма и был привязан к нему, он существует отдельно от алгоритма. Если блок отвязать (удалить) в алгоритме, физически он не удаляется. Так как все созданные блоки хранятся в библиотеке блоков. Это делает разработку алгоритмов более гибкой и предсказуемой, позволяет переиспользовать ранее созданные блоки в других алгоритмах.

Библиотека блоков поделена на разделы в соответствии с типом блоков. Каждый раздел содержит список всех созданных блоков, выводит ряд соответствующей информации, позволяет добавлять, редактировать и удалять блоки.

Создать новый блок можно:

  • В соответствующем разделе библиотеки блоков, на странице списка блоков, нажатием кнопки "Добавить".
  • В редакторе алгоритма, при помощи панели (подробнее описано в соответствующем разделе).

Заголовок блока

Заголовок блока нужен для того, чтобы при разработке можно было отличить один блок от другого, как в списке блоков, так и в дереве алгоритма.

Заголовок предназначен для использования только внутри Конструтора, и пользователю алгоритмов не виден. Исключение составляет только заголовок заключений, где заголовок блока может использоваться в имени скачиваемого файла.

Заголовок задается при создании блока и может быть изменен в любой момент.

Текст блока

Блоки, которые видны пользователю алгоритма, обычно имеют текст (но не все). Текст выводится внутри блока, и предназначен для пояснения пользователю - например текст вопроса, или какие данные ввести в доп. инфо, или просто информационное сообщение.

Текст редактируется отдельно от свойств блока. Для редактирования текста нужно нажать отдельную кнопку "Редактировать текст" в списке блоков, или в редактировании его свойств.

Текст может редактироваться в виде Текста или HTML. Режим редактирования выбирается соответствующими кнопками.

У блоков сообщение и заключение в тексте могут быть использованы шаблоны.

Режим редактирования текста

Целесообразно использовать когда нет потребности в специфической разметке текста, подгонке размеров шрифтов и т.п. В этом случае достаточно ввести обычный текст, пользователю алгоритмов в блоке он будет отображен максимально лаконично. Переносы строк в тексте сохрянятся.

В этом режиме доступно поле Заголовок. Если задать заголовок, он будет отображен в начале блока и выделен шрифтом, остальной текст будет следовать за ним и иметь шрифт меньше. Блоки сообщение имеют настройку "якорь", которая позволяет включать заголовок блока в навигацию по алгоритму.

Режим редактирования HTML

Целесообразно использовать когда требуется в ручную настроить оформление текста. В этом режиме текст редактируется в специально HTML-редакторе.

Заголовок как текст блока

Заголовок и текст блока предназначены для разных целей. Текст выводится пользователю алгоритмов, заголовок виден только внутри конструктора. Но для удобства разработки используется следующее поведение:

1. При создании блока указанный заголовок копируется в его текст.
Таким образом если вы написали в заголовке блока "Сколько вам лет?", пользователю алгоритма в блоке тоже покажется текст "Сколько вам лет?".

2. Если затем изменить заголовок блока, но текст блока при этом не был изменен. Изменения будут скопированы в текст.
То есть, если вы поменяете заголовок на "Сколько вам полных лет?", то пользователь алгоритма также увидит надпись "Сколько вам полных лет?".

2. Но если изменить текст блока, то изменения заголовка перестанут копироваться в текст. Теперь они независят друг от друга.
Допустим вы изменили текст блока на "Сколько вам полных лет? Требуется указать возраст.", тогда пользователь алгоритма увидит этот текст. А заголовок блока не изменится. Если теперь изменить заголовка на "Ввод полных лет", то изменения также не отразятся на тексте блока.

Наиболее оптимальный подход использовать одинаковый текст и заголовок блока, в случае когда он простой и короткий. И разделять заголовок и текст, когда текст блока длинный. Чтобы не загромождать работу с алгоритмами.

Видимость блока

Алгоритм проходит через блоки, но не все из них при этом будут показаны пользователю. Это определяется типом блока и его настройками. Видимые блоки обычно связаны с вводом каких-то данных пользователем (вопросы, доп. инфо), или отображением данных пользователю (сообщения). Блоки выполняющие какие-то вычисления (выражения), пользователю не показываются никогда.

Можно также принудительно отключить показ блока, это можно сделать двумя способами:

  • параметр "скрытый", для тех блоков у которых он есть;
  • отключение показа в контексте, для тех блоков, у которых есть текст.

Выходы блока

Выходы блока определяют ветвление алгоритма при прходе блока. Упрощенно говоря, это сколько стрелочек можно вытянуть из блока в редакторе алгоритмов. Количество выходов же зависит от того происходит ветвление внутри блока или нет.

Например у блоков сообщений нет ветвления, так как они не обрабатывают никаких данных. У блоков вопросов количество выходов будет соответствовать количеству заданных ответов на вопрос. При выборе соответствующего ответа пользователь выбирает по какой ветке далее пойдет алгоритм.

Блоки выражения обычно не приводят к ветвлению т.к. осуществляют расчет какого-то результата. Но есть отдельный тип выражений - условие, который специально создан для ветвления на основе вычислений.

Поля блока

Практически все блоки содержат в себе какие-то данные. Это могут быть данные введенные пользователем. Или же данные полученные из API. Текст в блоке сообщение - это тоже данные.

Все эти данные могут затем использоваться в других частях алгоритмов. Например могут быть подставлены в шаблоны, отправлены на email, переданы по API. На основе данных других блоков производятся расчеты в выражениях.

Один блок может содержать несколько различных данных. Например блок доп. инфо типа ФИО, содержит как полные ФИО (Иванов Иван Иванович), так и по отдельности фамилию (Иванов), имя (Иван), отчество (Иванович). При использовании в алгоритмах нужно как-то указывать какие именно данные из блока мы хотим взять. Для этого проще всего дать этим данным какое-то имя. Это имя и называется Полем блока.

Поле - это название для части данных, которые содержит блок.

Например полями блока ФИО будут:

  • ФИО целиком
  • Фамилия
  • Имя
  • Отчество

При использовании данных из блока (например при подстановке в шаблон) можно и нужно указать какое именно поле необходимо подставить.

Каждый блок имеет свой набор полей. Подробно они описаны в документации на каждый тип блоков.