Патч 3.6.0.16 (16.09.2023)¶
Новые возможности¶
- Добавлена поддержка приложения-ассистента DeskiMobile для подписания ЭП в web-клиенте с использованием токенов РуТокен на мобильных устройствах. Поддерживаются варианты токенов NFC, Bluetooth, USB. Приложение устанавливается из магазинов приложений для Android, iPhone, iPad. В карточку “Настройки сервера” добавлен флаг “Использовать мобильный ассистент DeskiMobile” и настройка “Время жизни JWT токена DeskiMobile”.
Добавление и изменение функциональности¶
- В представление “Типы условий” добавлена колонка “Описание”.
- В обсуждениях (форумах) добавлена логика обработки ошибок, которые могут возникать при парсинге содержимого сообщения.
- В редакторе схемы данных в записи таблиц с типом “Перечисление” добавлена поддержка комплексных колонок.
- В карточку настройки подписей можно добавлять файлы CRL (список проверки отзыва сертификатов).
- Доработан плагин рассылки уведомлений о заданиях. В
app.json
сервиса Chronos добавлена настройкаTaskNotifications.MaxTasksPerUserNotification
. Эта настройка ограничивает максимальное количество заданий, приходящихся на одного сотрудника, которые попадают в уведомление (по умолчанию - 20 заданий на сотрудника). Из базы отбирается ограниченное количество заданий, начиная с самых новых, которые потом передаются в уведомление. Информация об общем количестве заданий сверх тех, что попали в уведомление, также отображается в уведомлении, если общее количество заданий сотрудника превышает заданное ограничение. Помимо этого, в плагине был оптимизирован запрос получения информации по заданиям. - Доработаны проверки типов карточек на корректность, была добавлена проверка на наличие дубликатов секций в типе карточки и наличие дубликатов колонок в секциях. Также доработано исправление типов карточек, было добавлено исправление дубликатов секций и дубликатов колонок.
- Добавлено открытие параметров этапов по двойному клику по строке представления в рабочем месте “Администратор -> Маршруты -> Шаблоны этапов”, detail-представление с этапами.
- В маршрутах в этап “Диалог” добавлен параметр “Не выводить вкладки”, позволяющий скрыть вкладки карточки.
- В конструкторе бизнес-процессов в действия “Диалог”, “Задание” и “Группа заданий” добавлен параметр “Не выводить вкладки”, позволяющий скрыть вкладки карточки.
- В контекстном меню для файла расширена функциональность пунктов “Объединить с текущим в Word” и “Сравнить в Word”. Теперь для сравнения и объединения доступны файлы с расширением
.odt
. - При подписании выводится информация о валидации подписи.
- Доработан диалог импорта карточек. Теперь элементы управления диалога блокируются во время выполнения процедуры импорта.
- В маршрутах в этапе “Доработка” теперь больше не переносится текст из поля “Комментарий к циклу маршрута” в поле “Комментарий” задания “Доработка”.
Консольная утилита tadmin¶
- Для команд
Sql
иSelect
добавлен флагtran
. Если он указан - SQL-скрипт выполняется внутри транзакции (без флага - каждые команды, разделённыеGO
имеют свою транзакцию, как и раньше). При наличии флага каждый файл выполняется в рамках отдельной транзакции, когда файлов несколько. Если при выполнении команды внутри транзакции возникла ошибка, то, независимо от её типа, происходит откат. - В команды
ImportScheme
,ImportSchemeSql
,ExportScheme
,ExportSchemeSql
иMigrateDatabase
в случае ошибки при работе со схемой данных добавлено логирование объекта схемы, при обработке которого возникла ошибка. - Для команды
ConvertConfiguration
добавлен режимBOM
, с помощью которого можно преобразовать файлы с кодировкой UTF-8 без BOM в файлы с кодировкой UTF-8 с BOM.
Новые версии библиотек¶
CAdESLib 1.6.0
HtmlAgilityPack 1.11.53
ITfoxtec.Identity.Saml2.MvcCore 4.8.8
Kerberos.NET 4.6.29
LiteDB 5.0.17
Npgsql 5.0.17
PDFiumSharpV2 1.1.3
Quartz 3.7.0
SixLabors.ImageSharp.Drawing 1.0.0
Изменения API¶
- В маршрутах в обработчике этапа “Регистрация” изменено поведение при невозможности обработки завершаемого задания. Теперь метод
RegistrationStageTypeHandler.HandleTaskCompletionAsync
возвращает значениеStageHandlerResult.EmptyResult
вместо создания исключения. - Освобождение объектов, зарегистрированных в
IUnityDisposableContainer
, теперь выполняется в порядке, обратном их регистрации. - В
IWorkflowEngineProcessRequest
добавлены свойстваProcessDigest
иCardID
. Первое позволяет задать дайджест процесса, используемый при создании асинхронной операции. Второй параметр позволяет задать идентификатор карточки, для которой создаётся процесс при запуске нового процесса. - В
IWorkflowEngineContext
добавлено свойствоAsyncRequests
, в который можно добавить список запросов для асинхронной обработки процесса, отправляемых при успешном завершении обработки текущего процесса. - В web-клиенте добавлена возможность вызвать методы
focus
иblur
для контролов: “Таблица”, “Представление” и представления в рабочем месте. - В web-клиенте для контрола “Представление” исправлена подписка на событие
viewControlViewModel.onRefreshing
.
Исправления и оптимизации¶
- Исправлена логика обработки ошибок, которые могут возникать при парсинге содержимого контрола “Текст с форматированием”.
- В маршрутах и конструкторе бизнес-процессов в этапах и действиях “Согласование” и “Подписание” исправлена ошибка, из-за которой при запросе дополнительных согласований, начиная со второго уровня вложенности, не выполнялась проверка полей: “Исполнители”, “Длительность, рабочие дни” и “Комментарий”.
- В web-клиенте исправлена ошибка, из-за которой настройка “Предпросмотр файлов посредством Р7-Офис / OnlyOffice” не применялась для контролов “Обсуждения” и “Предпросмотр файлов”.
- В расширении типа карточки “Очистка связанных полей” исправлено сообщение об ошибке, которое возникало при попытке открыть редактор выбора очищаемой колонки, не выбрав перед этим отслеживаемую колонку.
- При открытии карточки теперь загружают данные только контролы “Представление”, видимые пользователю, т.е. находящиеся на текущей вкладке карточки.
- Для СУБД PostgreSQL исправлена ошибка, приводившая к потере нескольких часов от результата функции
CalendarAddWorkingDaysToDateExact
, а также возможная некорректная работа функцийCalendarGetFirstQuantStart
иCalendarGetLastQuantStart
в случаях, когда рабочие интервалы календаря граничат с полночью. - Исправлена ошибка, возникавшая при обработке бизнес-процессов, созданных в предыдущих версиях Tessa, в случае, когда в таких процессах присутствует действие “Таймер”.
- В бизнес-процессах Workflow Engine исправлена ошибка, возникавшая при обновлении подписки на действие “Таймер”.
- В web-клиенте исправлена ошибка, из-за которой область предпросмотра “Р7-Офис / OnlyOffice” отображалась некорректно.
- Исправлена ошибка переноса содержимого прикрепленных к карточке файлов, которая могла возникать при копировании карточки с файлами.
- При создании нового параметра представления теперь по умолчанию проставляется флаг
Multiple
. - В web-клиенте в контроле “Таблица” исправлена ошибка, приводившая к некорректной сортировке по числовым значениям.
- В web-клиенте в контроле “Метка (заданный текст)” исправлена ошибка, приводящая к изменению местами настроек отступов справа/слева и сверху/снизу.
- В web-клиенте в контролах “Метка (заданный текст)” и “Текст (поле только для чтения)” исправлена ошибка, приводящая к “схлопыванию” контрола при отсутствии текста.
- В web-клиенте исправлена ошибка с выбором сертификата при наличии нескольких сертификатов с одинаковым именем.
- При формировании подписи уровня XLT1 необходимые сертификаты для подписанта и метки времени вставляются в пакет подписи независимо.
- Исправлена ошибка в карточке уведомления о новых сообщениях в обсуждении, из-за которой уведомление не формировалось.
- Исправлена ошибка, когда файлы, добавленные в диалоге со временим жизни диалога “Задание”, сохранялись в основной карточке, а не в диалоге.
- В редакторе схемы данных исправлена ошибка, возникающая при попытке задать пустое значение для записи таблицы с типом “Перечисление” в ячейке, допускающей значение
null
. - В web-клиенте исправлена ошибка, из-за которой иногда контрол “Строка” считался изменённым, хотя реальных изменений в полях карточки не было.
- Исправление появление в логах ошибки
Couldn't unsubscribe from Redis channel
по причинеCannot access a disposed object
. Это не влияло на валидность закрытия соединения. - Исправлена ошибка в редакторе виртуальных схем диалогов, возникающая при попытке связать комплексную колонку с таблицей типа “Перечисление”, если в данной таблице отсутствует колонка с наименованием “ID”.
- Исправлено возможное подвисание плагина асинхронной обработки процессов
WorkflowEngineAsyncPlugin
в ситуации, когда процесс создавал асинхронную задачу, например, при обработке асинхронной связи между узлами, а затем продолжал выполнение других синхронных узлов. - Исправлена проблема сохранения ошибок в экземпляре процесса при завершении обработки процесса Workflow Engine с ошибкой.
- При экспорте представлений и рабочих мест файлы записываются в кодировке UTF-8 с BOM, как и для других объектов конфигурации. Ранее использовалась кодировка UTF-8 без BOM.
- В маршрутах и конструкторе бизнес-процессов исправлена ошибка, из-за которой в задании “Доработка” не сохранялся комментарий к новому циклу согласования, если к карточке был приложен несохранённый файл.
- Исправлена ошибка
Object must implement IConvertible
в отладке представлений TessaAdmin при указании ссылочных параметров и потенциально других типов, у которых в метаинформации указан Null-тип схемы. Ошибка появилась в предыдущих патчах. - Исправлено дублирование номеров в последовательности в случае возникновения ошибок после завершения транзакции при первом сохранении карточки.
- Для СУБД PostgreSQL исправлено выполнение представлений внутри транзакции, если при создании хранимой функции для представления произошла ошибка в SQL.
- В desktop-клиенте в контроле “Представление” при сбросе группировки исправлено восстановление позиции столбца.
- Исправлена обработка параметров представлений в связке master-detail в тех случаях, когда параметр в detail не был указан заранее.
- При запуске TessaAdmin теперь не выполняется загрузка содержимого всех неактивных вкладок.
- В API desktop-клиента исправлено выполнение из потока UI некоторых асинхронных методов, где был пропущен вызов
ConfigureAwait(false)
. - Исправлено время запуска TessaAdmin, если язык локализации отличается от английского. Проблема появилась в патче 3.6.0.15.
- Исправлена ошибка, которая могла возникать при чтении строковых объектов в
pdf
-файле с помощью методаPdfSharp.PdfReader.Open
, если строка имела кодировку Unicode. Актуально для модуля потокового сканирования при использовании конвертераPdfToBmpConverter
. - Исправлено расширение
KrSecondaryProcessMetadataExtension
, благодаря чему из шаблона больше не добавляются уже имеющиеся в типе секции и колонки, что ранее приводило к тому, что в метаинформации типа появлялись дублированные элементы. - Оптимизировано получение смещения временной зоны по умолчанию для создания ролей через
IRoleRepository
. - В web-клиенте исправлена ошибка, приводящая к некорректной работе ссылочных контролов при активированных настройках ручного ввода и задержки поиска: после окончания ввода и мгновенном нажатии на клавишу Enter значение контрола менялось на предыдущее.
- Исправлена невозможность удалить из корзины карточку, у которой в базе не заполнено поле
Deleted.Card
. Такое могло происходить, если при миграции карточек с бинарного формата на формат JSON не производилась миграция для карточек в корзине. - Исправлена ошибка в работе команды
tadmin MigrateFiles
, когда система неуспешно пыталась разрешить зависимости, связанные с компиляцией. - В web-клиенте исправлена ошибка, приводящая к некорректной работе ссылочных контролов с активированной настройкой ручного ввода: при использовании медленного интернет-соединения после окончания ввода и мгновенном нажатии на клавишу Enter значение контрола менялось на значение из предыдущего запроса.
- В web-клиенте исправлен диалог указания категории при добавлении файлов. В контролах “Список файлов” и “Представление” с расширением “Список файлов в представлении”, для которых указаны флаги “Использовать категории” и “Запретить файлы без категорий”, и не указан флаг “Запретить добавлять категории вручную”, заблокирована кнопка ввода пустой категории, которая была аналогична выбору “Без категории” в списке.
- В desktop-клиенте исправлен автоматический расчёт ширины столбцов для представлений “Мои обсуждения” и “Последние обсуждения”.
- В desktop-клиенте исправлена работа горизонтальной прокрутки при использовании тачпадов или иных устройств, поддерживающих горизонтальную прокрутку.
- У объекта подключения к базе данных
DbManager
исправлена версия конструктора, использующая подключениеDbConnection
в качестве параметра. Теперь передаваемое подключение к базе корректно завершает работу/возвращается в пул подключений при вызове методаDisposeAsync
уDbManager
. Проблема была актуальна только в тестах и консольных операциях, использующих подключение к базе данных напрямую. - В desktop-клиенте исправлено обновление представлений по F5 или тайлу “Обновить”. Теперь всегда обновляется и узел дерева, и таблица.
- Из таблицы
KrStages
удалён избыточный индексndx_KrStages_RowID
. - В desktop-клиенте исправлена позиция открытия контекстного меню элементов управления “Список”, “Ссылка” и “Строка” с типом строки “Расширенный”.
- Удалено лишнее предупреждение о необходимости включения типа карточки в типовое решение, возникающее при работе с контролом “Обсуждение” в карточке, не входящей в типовое решение.
- Исправлено формирование карточек ошибок из плагина конвертации файлов. Теперь дополнительное описание корректно формируется для карточек ошибок.
- Исправлены проблемы при расчёте доступа к файлам по правилам доступа.
- Исправлена ошибка при параллельном обращении к свойствам, возвращающим dynamic-обёртку над Storage-хранилищем в объектах:
Card
,CardInfoStorageObject
,ConfigurationObject
,InfoStorageObject
,ValidationInfoStorageObject
,WorkflowEngineSignal
иWorkflowStorageBase
. - В маршрутах исправлена ошибка “An item with the same key has already been added.” при получении сателлита основного процесса с помощью метода
IKrScope.GetKrSatelliteAsync
. - В API тестов в методе
PendingAction.SetInfo
исправлена ошибка при задании значенияnull
, из-за которой старое значение свойстваPendingAction.Info
не удалялось. - В маршрутах исправлена ошибка, из-за которой при задании нового значения свойству
Stage.SettingsStorage
свойстваStage.Settings
иStage.Author
возвращали неактуальные значения. - В маршрутах исправлена ошибка, из-за которой неправильно определялось положение SQL исполнителей этапов при задании роли “SQL исполнители”.
- В маршрутах исправлена ошибка, из-за которой после копирования карточки документа, содержащей маршрут, после пересчёта маршрута этапы изменяли своё положение. Ошибка воспроизводилась, если после копирования карточка не была сохранена.
- В маршрутах исправлена ошибка, из-за которой не восстанавливался изменённый пользователем порядок этапов, заданный в шаблоне этапов, после снятия флага “Можно перемещать”.
- В маршрутах исправлена ошибка, из-за которой при установке флага “Все этапы нередактируемые” в группе этапов изменённые параметры и/или положение этапов не восстанавливались в соответствии с шаблоном этапов.
- В конструкторе бизнес-процессов в методе
KrWorkflowActionBase.SetStateIDAsync(IWorkflowEngineContext, KrState, CancellationToken)
исправлена ошибка, из-за которой для нетиповых состояний устанавливалось отображаемое название состояния, равное значениюnull
. - Оптимизированы настройки для временных баз данных, создаваемых для автотестов, при использовании с СУБД MS SQL Server.
- В desktop-клиенте исправлен отступ, отображаемый у флажков для списка “Ссылочные колонки” в редакторе виртуальной схемы и для контрола карточки “Представление” с расширением “Таблица в представлении” и указанной настройкой “Колонка флажка”.
- Оптимизировано отображение списка представлений в TessaAdmin.
- В web-клиенте исправлена ошибка в карточке “Сотрудник”, возникающая при изменении значения контрола “Тип входа в систему” при включенном автозаполнении задействованных полей.
- Исправлена загрузка карточки сателлита сотрудника при первом входе в систему. Это могло проявляться в некорректном автоматическом определении языка и настроек форматирования в web-клиенте.
- В web-клиенте исправлена ошибка проверки подписи токена правил доступа, возникающая при обновлении карточки в ситуации, когда в расширенных настройках были настройки доступа для заданий.
- В web-клиенте исправлено скрытие контролов заданий по настройкам доступа для заданий.
- В диалоге “Мои настройки” больше не отображается вкладка “История заданий” в случае, если для карточки сотрудника была разрешена отправка заданий. Исправление в версии 3.6.0.15 было неполным.
- Исправлено возможное зависание при остановке сервисов
web
иchronos
на ОС Linux, если не используется Redis для синхронизации кэшей.
Обновление на новую сборку¶
- После обновления схемы данных необходимо выполнить запрос из файла
Fixes/Migration-3.6.XX.sql
после комментария “Insert KrTask entries for KrEdit tasks”, где вместоХХ
должно быть указано значениеms
для MS SQL Server илиpg
для PostgreSQL. При обновлении с предыдущих релизов 3.5.0.x и ранее он выполняется автоматически в скриптахUpgrade.bat
/upgrade.sh
.
Изменения API при обновлении¶
- В маршрутах в обработчике этапа “Регистрация” изменено поведение при невозможности обработки завершаемого задания. Теперь метод
RegistrationStageTypeHandler.HandleTaskCompletionAsync
возвращает значениеStageHandlerResult.EmptyResult
вместо создания исключения. Актуализируйте его использование в проектном решении. - У обработчиков процессов
IWorkflowEngineProcessor
иIWorkflowEngineProcessorClient
в методеSendAsyncSignalAsync
изменён набор параметров. Теперь метод принимает объект запросаIWorkflowEngineProcessRequest
, который позволяет более гибко настраивать отправку асинхронных запросов в процессы. Старый вариант методаSendAsyncSignalAsync
вынесен как метод-расширение и доступен в пространстве имёнTessa.Workflow
. - В web-клиенте у обработчика процессов
IWorkflowEngineProcessorClient
в методеsendAsyncSignalAsync
изменён набор параметров. Теперь метод принимает объект запросаIWorkflowEngineProcessRequest
, который позволяет более гибко настраивать отправку асинхронных запросов в процессы. - Изменён конструктор
DbManager(IDataProvider, IDbConnection)
. По умолчанию переданное соединение закрывается при освобожденииDbManager
, ранее оно оставалось открытым. Изменить поведение можно через опциональный параметрbool leaveOpen = false
. - Изменена сигнатура метода
IEDSProvider.ExtendDocumentAsync
. - Изменена регистрация зависимостей из пакета
CAdESLib
вTessa.EDS.EDSExtensions
.
Изменения конфигурации при обновлении¶
-
Представления:
-
ConditionTypes
-
KrStageRows
-
LastTopics
-
MyTopics
-
ReportPastTasksByUser
-
SignatureFileCategories
(добавлено)
-
-
Таблицы:
-
KrDialogStageTypeSettingsVirtual
-
KrStages
-
KrTaskCommentVirtual
(удалена) -
MobileDeskiLocks
(добавлена) -
ServerInstances
-
SignatureFileCategories
(добавлена) -
Tasks
-
WeDialogAction
-
WeTaskActionDialogs
-
-
Процедуры:
-
EscalateMobileReaderLock
(добавлена) -
EscalateMobileWriterLock2
(добавлена) -
ObtainMobileReaderLock
(добавлена) -
ObtainMobileWriterLock2
(добавлена) -
ObtainMobileWriterLock
(добавлена)
-
-
Функции:
-
CalendarAddWorkingDaysToDateExact
-
CalendarGetFirstQuantStart
-
CalendarGetLastQuantStart
-
DateTruncUtc
(добавлена)
-
-
Типы:
-
KrAdditionalApproval
-
KrDialogStageTypeSettings
-
KrEdit
-
ServerInstance
-
SignatureSettings
-
WorkflowDialogAction
-
WorkflowTaskAction
-
WorkflowTaskGroupAction
-
-
Карточки:
-
ForumNewMessagesNotification
-
Server settings (settings)
(необязательные изменения) -
TasksNotification
-
-
Изменены библиотеки локализации.