Блоки алгоритмов
В конструкторе блоки еще называются Сущности. Сущности - это старое название, сложившееся исторически. Сейчас мы считаем, что название Блок лучше отражает смысл и постепенно везде переименуем.
Блоки - это строительные "кирпичики" алгоритмов. Алгоритмы состоят из блоков. Алгоритм в процессе выполнения последовательно проходит те или иные блоки. Каждый блок выполняет какую-то свою фукнцию.
Исходя из функций существует 6 типов блоков:
- Сообщения - блоки которые только отображают какую-либо информацию пользователю
- Вопросы - блоки, осуществляющие ветвление алгоритма, исходя из выбора пользователя
- Доп. инфо - блоки, запрашивающие ввод информации от пользователя
- Выражения - блоки, производящие вычисления и осуществляющие ветвления на основе вычислений
- Заключения - блоки, формирующие документ на основе шаблона
- Действия - блоки, производящие разнообразные действия (все что угодно, от отправки сообщения на почту, до запроса к внешнему API или записи данных в БД)
Библиотека блоков
После создания блок существует и хранится как отдельная сущность. Даже если блок создавался внутри алгоритма и был привязан к нему, он существует отдельно от алгоритма. Если блок отвязать (удалить) в алгоритме, физически он не удаляется. Так как все созданные блоки хранятся в библиотеке блоков. Это делает разработку алгоритмов более гибкой и предсказуемой, позволяет переиспользовать ранее созданные блоки в других алгоритмах.
Библиотека блоков поделена на разделы в соответствии с типом блоков. Каждый раздел содержит список всех созданных блоков, выводит ряд соответствующей информации, позволяет добавлять, редактировать и удалять блоки.
Создать новый блок можно:
- В соответствующем разделе библиотеки блоков, на странице списка блоков, нажатием кнопки "Добавить".
- В редакторе алгоритма, при помощи панели (подробнее описано в соответствующем разделе).
Заголовок блока
Заголовок блока нужен для того, чтобы при разработке можно было отличить один блок от другого, как в списке блоков, так и в дереве алгоритма.
Заголовок предназначен для использования только внутри Конструтора, и пользователю алгоритмов не виден. Исключение составляет только заголовок заключений, где заголовок блока может использоваться в имени скачиваемого файла.
Заголовок задается при создании блока и может быть изменен в любой момент.
Текст блока
Блоки, которые видны пользователю алгоритма, обычно имеют текст (но не все). Текст выводится внутри блока, и предназначен для пояснения пользователю - например текст вопроса, или какие данные ввести в доп. инфо, или просто информационное сообщение.
Текст редактируется отдельно от свойств блока. Для редактирования текста нужно нажать отдельную кнопку "Редактировать текст" в списке блоков, или в редактировании его свойств.
Текст может редактироваться в виде Текста или HTML. Режим редактирования выбирается соответствующими кнопками.
У блоков сообщение и заключение в тексте могут быть использованы шаблоны.
Режим редактирования текста
Целесообразно использовать когда нет потребности в специфической разметке текста, подгонке размеров шрифтов и т.п. В этом случае достаточно ввести обычный текст, пользователю алгоритмов в блоке он будет отображен максимально лаконично. Переносы строк в тексте сохрянятся.
В этом режиме доступно поле Заголовок. Если задать заголовок, он будет отображен в начале блока и выделен шрифтом, остальной текст будет следовать за ним и иметь шрифт меньше. Блоки сообщение имеют настройку "якорь", которая позволяет включать заголовок блока в навигацию по алгоритму.
Режим редактирования HTML
Целесообразно использовать когда требуется в ручную настроить оформление текста. В этом режиме текст редактируется в специально HTML-редакторе.
Заголовок как текст блока
Заголовок и текст блока предназначены для разных целей. Текст выводится пользователю алгоритмов, заголовок виден только внутри конструктора. Но для удобства разработки используется следующее поведение:
1. При создании блока указанный заголовок копируется в его текст.
Таким образом если вы написали в заголовке блока "Сколько вам лет?", пользователю алгоритма в блоке тоже покажется текст "Сколько вам лет?".
2. Если затем изменить заголовок блока, но текст блока при этом не был изменен. Изменения будут скопированы в текст.
То есть, если вы поменяете заголовок на "Сколько вам полных лет?",
то пользователь алгоритма также увидит надпись "Сколько вам полных лет?".
2. Но если изменить текст блока, то изменения заголовка перестанут копироваться в текст. Теперь они независят друг от друга.
Допустим вы изменили текст блока на "Сколько вам полных лет? Требуется указать возраст.", тогда пользователь алгоритма увидит этот текст. А заголовок блока не изменится.
Если теперь изменить заголовка на "Ввод полных лет", то изменения также не отразятся на тексте блока.
Видимость блока
Алгоритм проходит через блоки, но не все из них при этом будут показаны пользователю. Это определяется типом блока и его настройками. Видимые блоки обычно связаны с вводом каких-то данных пользователем (вопросы, доп. инфо), или отображением данных пользователю (сообщения). Блоки выполняющие какие-то вычисления (выражения), пользователю не показываются никогда.
Можно также принудительно отключить показ блока, это можно сделать двумя способами:
- параметр "скрытый", для тех блоков у которых он есть;
- отключение показа в контексте, для тех блоков, у которых есть текст.
Выходы блока
Выходы блока определяют ветвление алгоритма при прходе блока. Упрощенно говоря, это сколько стрелочек можно вытянуть из блока в редакторе алгоритмов. Количество выходов же зависит от того происходит ветвление внутри блока или нет.
Например у блоков сообщений нет ветвления, так как они не обрабатывают никаких данных. У блоков вопросов количество выходов будет соответствовать количеству заданных ответов на вопрос. При выборе соответствующего ответа пользователь выбирает по какой ветке далее пойдет алгоритм.
Блоки выражения обычно не приводят к ветвлению т.к. осуществляют расчет какого-то результата. Но есть отдельный тип выражений - условие, который специально создан для ветвления на основе вычислений.
Поля блока
Практически все блоки содержат в себе какие-то данные. Это могут быть данные введенные пользователем. Или же данные полученные из API. Текст в блоке сообщение - это тоже данные.
Все эти данные могут затем использоваться в других частях алгоритмов. Например могут быть подставлены в шаблоны, отправлены на email, переданы по API. На основе данных других блоков производятся расчеты в выражениях.
Один блок может содержать несколько различных данных. Например блок доп. инфо типа ФИО, содержит как полные ФИО (Иванов Иван Иванович), так и по отдельности фамилию (Иванов), имя (Иван), отчество (Иванович). При использовании в алгоритмах нужно как-то указывать какие именно данные из блока мы хотим взять. Для этого проще всего дать этим данным какое-то имя. Это имя и называется Полем блока.
Например полями блока ФИО будут:
- ФИО целиком
- Фамилия
- Имя
- Отчество
При использовании данных из блока (например при подстановке в шаблон) можно и нужно указать какое именно поле необходимо подставить.
Каждый блок имеет свой набор полей. Подробно они описаны в документации на каждый тип блоков.