Версия 1.34.0
В этой версии мы расширили возможности взаимодействия с платформой: теперь пользователи могут оставлять форматированные комментарии в Ленте активности, а также подписываться на пуш-уведомления в браузере. Для администрирования системы мы добавили новую роль Аудитор, которая позволяет предоставлять контролируемый доступ на чтение записей без риска их изменения. Кроме того, теперь текстовые колонки можно преобразовать в форматируемый тип WYSIWYG с сохранением данных.
Для технологических партнеров добавлена возможность упаковывать приложения для Маркетплейса с защитой чувствительных компонентов. Также мы внедрили автоматическое применение фильтров при открытии списков и реализовали ряд системных улучшений.
Новая функциональность
Пуш-уведомления
В этой версии появился новый канал доставки уведомлений — Web Push-уведомления в браузере, в дополнение к электронной почте.
Пользователи могут подписаться на нативные пуш-уведомления в браузере при помощи специального переключателя в меню пользователя. Работа уведомлений поддерживается одновременно на нескольких устройствах, включая мобильные, и браузерах.
Для отправки уведомлений реализован серверный класс SimplePushNotification. Разработчик может отправить уведомление, создав объект класса, указав получателя и параметры сообщения и вызвав один метод — без знания деталей протокола Web Push. Класс самостоятельно обрабатывает ошибки на стороне инфраструктуры, выполняет логирование и возвращает унифицированный результат.
Читайте подробнее в статье Пуш-уведомления.
WYSIWYG-контент в Ленте активности
В Ленте активности теперь используется WYSIWYG-редактор вместо текстового поля. Это позволяет создавать сообщения с форматированием: полужирным и курсивным начертанием, текстовыми эффектами подчеркивания и зачеркивания, маркированными и нумерованными списками, цитатами, гиперссылками и изображениями.
При этом система сохраняет обратную совместимость: ранее созданные сообщения в простом текстовом формате отображаются корректно.
Читайте подробнее в статье Формы.
Преобразование колонок между типами Текст и WYSIWYG
Для более наглядного представления текстовой информации на формах добавили возможность преобразовать существующие колонки типа Text в тип WYSIWYG с сохранением данных. Это потребуется, когда в уже используемом текстовом поле, например, в описании задачи или в пользовательском поле накопились данные и теперь их требуется оформить: выделить текст, добавить списки, ссылки и изображения. Тип колонки обновляется, оставляя ее свойства неизменными, что исключает необходимость создания нового поля и ручного переноса значений.
Для преобразования колонок реализован новый класс SimpleColumn, методы которого позволяют осуществлять преобразование средствами серверного API. Также доступна обратная конвертация.
Колонку с измененным типом данных, преобразованную таким образом, можно экспортировать в SOP-файл и в дальнейшем импортировать на другой экземпляр, что позволяет изменить тип данных соответствующей колонки на WYSIWYG (или Text) и преобразовать все значения существующих записей измененной колонки.
Подробнее читайте в статье Преобразование данных.
Для миграции колонок на новый тип, необходимо выполнить дополнительные действия:
- Конвертировать колонки
- Внести необходимые изменения в бизнес-логику (бизнес-правила, скрипты) экземпляра системы.
- Очистить на экземпляре свойство wysiwyg.columns.scripts_text_mode. Пока в свойстве перечислены ID колонок, серверные и клиентские методы API возвращают их значения как простой текст, а не как WYSIWYG-структуру. Свойство служит вспомогательным средством на время адаптации пользовательской логики. Затем свойство необходимо очистить, чтобы работать с полноценным WYSIWYG.
Роль Аудитор
В систему добавлена роль Аудитор (auditor), которая предоставляет доступ на чтение ко всем таблицам системы, аналогичный доступу для роли admin, но в режиме "только для чтения". Для использования роли Аудитор необходимо повысить свои полномочия.
Для роли запрещены операции создания, изменения и удаления (CUD). Соответствующие элементы интерфейса (например, кнопка Сохранить) скрыты для пользователей с активной ролью Аудитор, а любой CUD-запрос через REST API от имени такого пользователя возвращает код ошибки.
Читайте подробнее в статье Структура ролей.
Режим вендора для партнерских приложений
Технологические партнеры SimpleOne теперь могут упаковывать свои приложения для распространения по партнерскому каналу, включая Маркетплейс, с защитой чувствительных компонентов от изменений.
Для этого при развертывании экземпляра можно указать приложения, для которых пользователи с ролью admin получат доступ уровня вендора на локальном экземпляре, после чего смогут создавать таблицы без клиентского префикса и редактировать VCS-записи приложения.
Подробнее читайте в эксплуатационной документации.
Улучшения
Фильтры для макетов листового представления
Теперь при открытии списка записей могут автоматически применяться условия фильтрации, указанные в фильтре (sys_filter), связанном с макетом списка (sys_ui_list). Это работает как для обычных, так и для связанных списков.
На форме записи макета и в настройках списка доступно поле Фильтр. При открытии списка с выбранным фильтром условия автоматически отображаются в конструкторе условий и в адресной строке. Пользователь может изменить или очистить условия — изменения действуют только в рамках текущего сеанса и не затрагивают сохраненный фильтр.
Для общих листовых представлений в поле Фильтр доступны только общие фильтры таблицы. Для персональных — общие и персональные фильтры текущего пользователя. При переходе по ссылке с указанием макета и условия фильтрации, фильтр из макета не будет применен.
Читайте подробнее в статьях Списки и Представление списка.
Системные улучшения
Микросервис WebPushNotifier
Для отправки пуш-уведомлений выделен отдельный микросервис WebPushNotifier. Его сбои не влияют на основную бизнес-логику платформы, а при росте нагрузки сервис можно масштабировать независимо от остальных модулей. Для WebPushNotifier предусмотрен отдельный мониторинг и оповещения. Микросервис разворачивается автоматически при развертывании и обновлении экземпляра – отдельных действий от администратора не требуется.
Для одного бизнес-события создается одна логическая нотификация на пользователя; при повторных попытках дубликаты не появляются. Система пытается доставить уведомление на все устройства пользователя с активными подписками. Временные ошибки обрабатываются с ограниченным числом повторов и экспоненциальной задержкой. Уведомления с истекшим TTL помечаются как устаревшие и не отправляются.
Исправления
DEF0023124: Разграничено использование переменных postgres_internal и postgres_haproxy_enabled для устранения проблем с развертыванием распределенного стенда с внешней БД на этапе миграции сервиса web-push.
DEF0023106: Устранили влияние элементов расписания с нулевым отрезком времени на работу методов серверного API SimpleSchedule.
DEF0022818: Оптимизированы параметры opcache в конфигурации PHP-FPM: увеличены буфер интернированных строк, количество кешируемых файлов и общий объем памяти под opcache, отключена проверка изменений исполняемых файлов в производственных средах. Это устранило падения воркеров PHP-FPM (SIGSEGV) и ошибки 502 Bad Gateway при высоких нагрузках.
DEF0021032: Исправлено некорректное формирование и парсинг условий, при котором в условие с оператором ИЛИ добавлялись избыточные скобки, что приводило к ошибке Condition query is invalid.
DEF0020568: Устранена критическая проблема доступности — некорректное условие, переданное через ссылку или конечную точку API, могло приводить к отказу распределенного стенда и ошибке 502 для всех пользователей. В этой версии добавлена проверка валидности условий на конечных точках API с корректной обработкой ошибок и возвратом правильного кода ответа.
DEF0020252: Уточнено применение ACL в результатах глобального поиска: карточка результата теперь учитывает ограничения на чтение отдельной колонки конкретной записи, заданные условием ACL.
DEF0019366: Добавлено логирование изменений, вносимых через быстрый импорт JSON: сохранение записи теперь происходит через менеджер записей с триггерами событий, что обеспечивает появление записей в sys_history. Также активирован флаг логирования удаления записей для таблиц user, employee и sys_user_has_role.
DEF0016070: Исправлена обработка фильтрации списков по boolean-полям через dot-walking для полей типа List.