Параллельная работа с диаграммой и слияние изменений
Реализована долгожданная возможность одновременной работы нескольких пользователей с одной диаграммой. Теперь изменения можно вносить не только напрямую в актуальную версию диаграммы, но и в отдельной пользовательской ветке – диаграмма при этом не блокируется для остальных участников команды, и каждый может вести свою работу независимо.
По завершении работы с веткой пользователь может либо заменить ею актуальную версию диаграммы, либо инициировать слияние изменений. Во втором случае система автоматически объединяет правки из обеих версий: уникальные узлы и переменные сохраняются, а при возникновении конфликтов приоритет отдается изменениям из пользовательской ветки. Перед заменой актуальной версии автоматически создается резервная копия, что исключает потерю данных.
Если актуальная версия диаграммы за время работы над веткой была изменена другим пользователем, система предложит выбрать сценарий: отменить операцию, перейти к слиянию или продолжить замену без слияния с явным подтверждением. Такой механизм заметно упрощает совместную разработку диаграмм и снижает риск случайной потери параллельно внесенных правок.
Узел «Обогащение параметров»
В диаграмму добавлен новый узел «Обогащение параметров», который позволяет гибко задавать значения атрибутов внутри комплексного типа данных в зависимости от того, с какой ветви диаграммы на узел поступили входные данные.
Узел может принимать входящие связи от нескольких предшествующих блоков и при выполнении диаграммы автоматически определяет, какой из них фактически передал данные – на основании именно этой ветви формируется результирующий массив значений, а данные остальных входящих блоков игнорируются. Соответствие между блоками и значениями атрибутов задается в удобной таблице маппинга, где для каждого поля можно указать значение вручную, через редактор выражений или выбором из справочника.
Новый узел избавляет от необходимости дублировать логику заполнения переменных для разных сценариев выполнения диаграммы, объединяя их обработку в рамках одного блока.
Тестирование диаграммы: только ключевые переменные во входном сообщении
Формирование тестового набора стало проще: в окне редактирования входных данных появилась кнопка «Сбросить до используемых переменных». При ее нажатии система автоматически формирует JSON, оставляя в сообщении только те переменные, которые непосредственно участвуют в расчете на узлах диаграммы.
Если используемая переменная входит в состав комплексного типа, иерархия вложенности сохраняется, но внутри нее остаются только реально задействованные поля. Остальные значения комплексного типа из json исключаются. Это заметно упрощает подготовку тестовых данных и избавляет от лишнего «шума» при отладке сложных диаграмм.
Доработки узлов «Коммуникация» и «Предложение»
Узлы «Коммуникация» и «Предложение» стали удобнее в работе с большими наборами переменных. В столбце «Имя» рядом с названием переменной появилась иконка с подсказкой, показывающей название атрибута соответствующего канала коммуникации или шаблона предложения. Столбец «Обязательность» теперь поддерживает сортировку, а для поиска нужной переменной в таблице добавлена строка поиска по имени.
Изменения упрощают навигацию по переменным на узлах с большим количеством входных и выходных параметров.
Переработка справочника функций
Справочник системных функций получил обновленную структуру: функции распределены по типам – текстовые, преобразование типов, статистические, математические, дата и время, массивы и другие, – что упрощает их поиск при построении логики диаграммы. Также скорректированы и уточнены описания уже существующих функций.
Наиболее заметно расширился блок функций для работы с массивами: добавлена функция внутреннего объединения двух массивов по заданному условию, функции поиска верхней и нижней границы массива и позиции значения в нем, а также функции извлечения статистик по атрибуту элементов массива – минимального значения, медианы и стандартного отклонения. Отдельная группа новых функций позволяет извлекать значение конкретной ячейки таблицы данных и сразу приводить его к нужному типу: логическому, числовому, строковому или дате.
Также пополнились и другие блоки: в статистическом и математическом добавлены функции для анализа списков значений – подсчет заполненных и пустых аргументов, поиск k-го значения по возрастанию, разброс, среднеквадратичное значение, асимметрия распределения, дисперсия, число сочетаний и перестановок. В блоке работы с датами появились функции подсчета интервалов между датами, определения квартала и пересчета времени между часовыми поясами. Расширились и текстовые функции с функциями преобразования типов: добавлены функции поиска подстроки, выравнивания и разворота строк, приведения значений к логическому и числовому типу.