Патч 3.6.0.8 (13.05.2022)¶
Добавление и изменение функциональности¶
- В форумах (обсуждениях) добавлены ограничения на максимальный размер прикладываемого файла (карточка “Настройки сервера”, поле “Максимальный размер файла, приложенного к сообщению”) и на максимальное количество файлов, приложенных к сообщению (поле “Максимальное количество файлов, приложенных к сообщению”).
- В форумах (обсуждениях) добавлено ограничение на максимальное количество вложений (вставленных изображений) в сообщении (поле “Максимальное количество вложений в сообщении”).
- Улучшен вывод деталей сообщения об ошибке при проверке доступа по карточкам “Правило доступа”.
- Добавлена базовая обработка циклических зависимостей при сохранении изменений таблиц схемы данных.
- В названии сертификата ЭП теперь выводится информация об организации (при наличии).
- В web-клиенте в окне “О программе” добавлена возможность переподключения к Deski в случае, если сервис недоступен.
- В правило доступа добавлены флаги “Чтение обсуждений” и “Чтение и отправка сообщений”, которые позволяют назначить доступ на чтение всех топиков в карточке с опциональным разрешением на отправку сообщений во все топики, независимо от вхождения в участники топика.
- При отсутствии содержимого у компонента рабочего места (удаленный поисковый запрос, ограничение по правам и т.д.) на экран теперь выводится надпись “Содержимое узла недоступно для просмотра”.
- В форумах (обсуждениях) добавлено ограничение на максимальное количество символов в сообщении: в карточке “Настройки сервера” поле “Максимальный размер сообщения, символы”. По умолчанию указано 1000 символов.
- В web-клиенте для элементов управления “Текст с форматированием” и “Обсуждения” добавлена возможность открыть предпросмотр вложенных файлов в диалоговом окне.
- В desktop-клиенте в форумах (обсуждениях) сообщение о попытке отправить пустое сообщение теперь отображается во всплывающем уведомлении.
- В web-клиенте для форумов (обсуждений) диалог выбора файла, вызываемый при добавлении изображения в сообщение, теперь отображает только файлы допустимых форматов изображений. Это актуально для контролов “Текст с форматированием” и “Обсуждения”.
- В конструкторе бизнес-процессов в действии “Подписание” добавлена возможность привязки для параметра “Разрешить дополнительное согласование”.
Консольная утилита tadmin¶
- Команда
InvalidateCacheтеперь позволяет сбрасывать кэш метаинформации рабочих мест, имя кэша указывается какWorkplaces.
Новые версии библиотек¶
.NET 5.0.17CAdESLib 1.2.2Kerberos.NET 4.5.162linq2db 3.7.0MailKit 3.2.0Microsoft.NET.Test.Sdk 17.2.0NLog 4.7.15Npgsql 5.0.13Quartz 3.4.0StackExchange.Redis 2.5.61Swashbuckle.AspNetCore 6.3.1
Изменения API¶
- В API тестов добавлена возможность выполнения действия “Таймер” с помощью метода
WeProcessInstanceLifecycleCompanion.ProcessTimerOperations. - В API тестов в
PermissionsConfiguratorдобавлены методыAddFlags,RemoveFlags,ReplaceFlags,AddType,RemoveType,AddState,RemoveState,AddRole,RemoveRole, позволяющие оптимизировать выполнение соответствующих операций над карточкой правила доступа. - В API тестов добавлены методы
KrStageGroupBuilderExtensions.SetConditionForCardиKrStageTemplateBuilderExtensions.SetConditionForCard, позволяющие задать условное выражение, ограничивающее применение группы или шаблона этапов указанной карточкой. - В API тестов в класс
TestRoleHelperдобавлены методыTryAddUserIfEmptyAsyncиAddUserAsync, упрощающие добавление пользователя в указанную роль. - В API тестов добавлен метод
CardLifecycleCompanionExtensions.GetTaskWithRoleOrThrow, возвращающий первое задание, имеющее указанный тип и назначенное на роль с заданным идентификатором. - В API тестов добавлено поле
KrStageGroupDescriptor.DefaultStageGroup, содержащее дескриптор группы этапов по умолчанию (“Согласование”). Его можно использовать вместо значения возвращаемого методомKrStageGroupDescriptor.GetDefaultStageGroupAsync, если в группе этапов по умолчанию не изменялся порядок или название. - Добавлен метод
Tessa.Platform.AssemblyHelper.SaveEmbeddedResourcesToFileAsync, позволяющий сохранить содержимое встроенного ресурса в указанном файле. - В класс KrConstants добавлены константы
DefaultApprovalStageGroupNameиDefaultApprovalStageGroupOrder, содержащие информацию о группе этапов по умолчанию (“Согласование”). - В API тестов удалён метод
TestHelper.DeleteOldFiles. Для удаления временных внешних ресурсов используйте механизм сборки мусора. - В API тестов добавлена возможность использования областей выполнения. Подробнее в руководстве разработчика в разделе “Автоматические тесты NUnit”, в п. “Области выполнения”.
- В API тестов добавлен механизм для отслеживания временных внешних ресурсов. Подробнее в руководстве разработчика в разделе “Автоматические тесты NUnit”, в п. “Сборка мусора”.
- В API тестов изменён запрос выполняемый методом
CardLifecycleCompanion<T>.Load. Теперь свойствоCardGetRequest.GetTaskModeвместо значенияCardGetTaskMode.AllравноCardGetTaskMode.Default. Подробнее про изменение запроса см. в руководстве разработчика в разделе “Автоматические тесты NUnit”, в п. “Управление жизненным циклом карточки”. - В API серверных тестов изменён используемый
ICardLifecycleCompanionRequestExtender. Теперь запросы по умолчанию выполняются с указаниемCardServiceType.DefaultвместоCardServiceType.Client. В общем случае рекомендуется использовать клиентские тесты. Подробнее про изменение запроса см. в руководстве разработчика в разделе “Автоматические тесты NUnit”, в п. “Управление жизненным циклом карточки”. - В web-клиенте для объекта
validationResultItemдобавлено полеkey. Позволяет получить ключ сообщения, возникшего при валидации. - В web-клиенте для элемента управления “Текст с форматированием” добавлена возможность скрывать кнопку разворачивания на весь экран. Управлять видимостью кнопки можно через свойство
RichTextBoxViewModel.canExpand. - В API клиентских тестов добавлена возможность простой работы от имени разных пользователей. Подробнее в руководстве разработчика в разделе “Автоматические тесты NUnit”, в п. “Управление сессиями в клиентских тестах”.
- В методах
IForumProvider.AddParticipantsAsyncиAddRolesAsyncпараметрskipServiceMessageзаменён на параметрserviceMessageModeдля отключения служебных сообщений о появлении новых участников обсуждения. Параметр игнорируется при запросе с клиента. - В проекты с клиентскими тестами добавлены файлы конфигурации
appsettings.json. Они содержат параметры тестового сервера, используемого в клиентских тестах. - В API тестов изменено расположение классов
Tessa.Test.Default.Server.ServerTestBaseиTessa.Test.Default.Server.Kr.KrServerTestBaseнаTessa.Test.Default.Shared.ServerTestBaseиTessa.Test.Default.Shared.Kr.KrServerTestBaseсоответственно. Это позволяет создавать серверные тесты в проектах с клиентскими тестами для использования клиентских зависимостей. - В web-клиенте объект
DeskiManagerбыл перенесён из типовых расширенийdefaultв платформу, неймспейсtessa\deski. В этом объекте теперь доступна вся информация о Deski из компонентаMetadataStorage. - В web-клиенте добавлено свойство
PreviewManager.previewInDialog, позволяющее включить/выключить предпросмотр файлов в диалоговом окне. - В web-клиенте добавлена возможность закрывать представления, открытые в диалоге, посредством объекта
UIContext. - Добавлены свойства
IScrollingControlViewModel.MaxImageWidthиMaxPreviewImageWidth, позволяющие управлять максимальной шириной рендеринга страниц документа для области предпросмотра с прокруткой страниц. Также добавлен методScrollingControlViewModel.CalculateRecommendedMaxImageWidthAsyncдля определения рекомендуемой ширины страниц (вызывается автоматически). - Добавлена реализация
ICardMetadataBuilder-CardMetadataAllTablesBuilder, выполняющая построение метаинформации для всех таблиц независимо от их использования в типах карточек. - В API тестов в методе
CardLifecycleCompanionExtensions.CompleteTaskдобавлена возможность автоматического определения состояния завершаемого задания. Для этого необходимо для параметраdeleteTaskуказать значениеnull. - Добавлен серверный кэш
WorkplacesCacheдля метаинформации рабочих мест. Серверная реализацияITessaWorkplaceServiceтеперь использует данный кэш в методах для получения метаданных рабочих мест.
Исправления и оптимизации¶
- В web-клиенте исправлена ошибка, приводящая к отсутствию индикации статуса “Архивировано” для архивированных топиков форумов (обсуждений).
- В web-клиенте исправлена ошибка в примерах расширений в файле
carUIExtension.tsдля карточки “Автомобиль”, из-за которой было возможно приложить.exeфайл, тогда как в расширении должен быть запрет на это действие. - Оптимизировано открытие карточки, добавленной в типовое решение, в случае, если в ней отсутствуют виртуальные файлы.
- В desktop-клиенте для контрола “Представление” исправлен вывод ошибки при указании некорректного алиаса параметра
CardID. - Исправлен сброс кэша виртуальных файлов при изменении карточек шаблонов файлов.
- При сохранении карточек виртуальных файлов сброс кэша теперь происходит вне открытой транзакции.
- В web-клиенте в форумах (обсуждениях) исправлена ошибка, не позволяющая изменить отображаемое имя внешней ссылки в сообщении.
- Исправлены ошибки, связанные с использованием локального кэша метаинформации в консольном приложении tadmin. Теперь в консольных приложениях локальный кэш не используется.
- Исправлено зависание сервера приложений при изменении конфигурации системы. Проблема воспроизводилась при перезапуске сервера приложений в случае, если для рабочего процесса был выдан тот же идентификатор, какой он был до перезапуска, и не был настроен сброс кэшей посредством
Redis. Это актуально дляDockerконтейнеров, где для рабочего процесса всегда указывается идентификатор равным 1. - В форумах (обсуждениях) исправлена ошибка, из-за которой в режиме “Единственное обсуждение” не загружался топик.
- В destop-клиенте в форумах (обсуждениях) исправлена ошибка при попытке ответить на пустое сообщение с приложенными файлами.
- В конструкторе бизнес-процессов исправлены потенциальные NRE, вызванные возвратом значения
nullметодами:IWorkflowEngineCardsScope.GetCardAsync,IWorkflowEngineCardsScope.GetFileContainerAsync,IWorkflowEngineCardsScope.GetCardForSendTasksAsync,IWorkflowEngineContext.GetTaskAsync,IWorkflowEngineContext.SendTaskAsync. - Установка системы из Docker теперь выполняется для текущего релиза 3.6.0, а не для последнего опубликованного в Docker Hub. Это предотвращает ошибки после того, как будет опубликована новая версия платформы.
- Исправлены возможные утечки памяти в TessaClient при использовании сканирования и предпросмотра.
- В форумах (обсуждениях) исправлено удаление дубликатов строк в таблице
FmUserStat, из-за которых дублировались сообщения в почтовых уведомлениях. - Исправлена ошибка, которая в редких ситуациях могла приводить к возникновению дедлоков при одновременном завершении нескольких заданий.
- В API тестов исправлена ошибка, из-за которой при возникновения ошибки во время обработки списка отложенных действий в
PendingActionsProvider, объект оставался запечатанным и содержащим запланированные действия. - В API тестов исправлено удаление временных внешних ресурсов (база данных, файловое хранилище и т.д.), если они не были удалены при завершении предыдущего запуска тестов.
- В API тестов в методе
PendingActionsProviderExtensions.RegisterPendingActionsProducerисправлена ошибка, приводившая к частичной потере результатов валидации. - В API тестов исправлена ошибка удаления карточек при параллельном выполнении на уровне тестов.
- В desktop-клиенте исправлена ошибка, из-за которой при добавлении нового параметра в поисковый запрос во время нахождения в узле данного запроса имелась возможность удалить последний добавленный параметр из наложеннего фильтра, а также нельзя было сбросить фильтр после применения запроса вне данного узла.
- В TessaAdmin исправлено формирование текста запроса при отладке представлений. Ошибка появилась в предыдущем патче.
- В web-клиенте для элемента управления “Текст с форматированием” исправлена ошибка, из-за которой в некоторых ситуациях было невозможно вставить ссылку в текст с первого раза.
- В web-клиенте в форумах (обсуждениях) исправлена ошибка, из-за которой не осуществлялся перенос строк в длинных сообщениях.
- В web-клиенте исправлена ошибка, приводящая к изменению значений контролов “Дата и Время” при потере фокуса.
- В web-клиенте значения колонок “Дата и Время” в представлениях теперь отображаются с учетом параметра
TreatValueAsUtc. - Исправлена ошибка, из-за которой при сохранении карточки с клиента проверка флагов запроса на сохранение
DoesNotAffectVersionиForbidStoringHistoryне выполнялась. - В TessaAdmin в редакторе типов карточек исправлена локализация всплывающей подсказки для незаполненных обязательных полей.
- В web-клиенте в форумах (обсуждениях) исправлена ошибка, приводившая к некорректной работе элемента управления “Обсуждение” в режиме “Единственное обсуждение”, расположенного на вкладке, отличной от стандартной. Ошибка появилась в предыдущем патче.
- В приложениях TessaClient и TessaAdmin исправлена загрузка сборок, указанных в настройке
ProbingPathв файлеapp.json. - В приложении TessaClient исправлена утечка памяти при перетаскивании файла drag&drop.
- В desktop-клиенте в модели представления контрола “Нумератор” исправлено свойство
Number, теперь оно корректно возвращает целое числоInt64. - В приложении TessaClient исправлена иконка курсора при обновлении и сохранении карточки.
- Исправлена доступность поля ввода номера страницы в панели пейджинга представления при изменении свойства
IPagingSource.OptionalPagingStatus. - В форумах (обсуждениях) исправлена ошибка, приводившая к некорректному открытию топика из представлений “Мои обсуждения” и “Последние обсуждения”, расположенного на вкладке, отличной от стандартной.
- В desktop-клиенте исправлена работоспособность контрола “Текст с форматированием” в форме редактирования строки таблицы.
- В web-клиенте исправлена ошибка ввода спецсимволов в поле поиска элементов управления “Таблица”, “Представление”.
- В web-клиенте исправлена ошибка, позволяющая пользователю, не обладающему правами администратора, видеть папку “Общие запросы” при сохранении поисковых запросов в представлениях.
- В API тестов исправлена выдача предупреждения “Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware. Failed to determine the https port for redirect.”.
- Исправлена сортировка значений в представлении
VatTypes(“Типы НДС”) для PostgreSQL. - При чтении JSON в системе увеличена максимально допустимая глубина вложенности до 128, что исправило, например, чтение типов карточек с вложенными контролами “Контейнер” и “Вкладки”, и чтение рабочих мест с большой вложенностью узлов.
- Оптимизировано выполнение расширения
KrCardGetExtensionдля карточек, не входящих в типовое решение. - В маршрутах исправлены потенциальные NRE и другие ошибки, вызванные возвратом значения
nullметодами:IKrScope.CreateSecondaryKrSatelliteAsync,IKrScope.GetKrSatelliteAsync,IKrScope.GetMainCardAsync,IKrScope.GetMainCardFileContainerAsync,IKrScope.GetSecondaryKrSatelliteAsyncиIMainCardAccessStrategy.GetFileContainerAsync. - Исправлена ошибка, возникающая при нажатии на кнопку “Отложить” в задании, когда в нём есть файловый контрол.
- В конструкторе бизнес-процессов в действиях “Задание” и “Группа заданий” исправлена ошибка, из-за которой не учитывался параметр “Сохранять файлы после завершения диалога”.
- В редакторе бизнес-процессов в действиях “Задание” и “Группа заданий” исправлена ошибка NRE при инициализации задания диалога при открытии карточки. Ошибка воспроизводилась, если задание диалога не было взято в работу.
- В маршрутах в этапе “Диалог” и в редакторе бизнес-процессов в действиях “Диалог”, “Задание” и “Группа заданий” исправлена ошибка при отображении скрытого задания диалога.
- В desktop-клиенте исправлена ошибка, возникавшая при попытке обновить элемент управления “Представление” с пустым содержимым.
- Учтена ситуация при формировании подписи, когда метка времени может быть выдана на время в недалеком будущем, что могло приводить к формированию невалидных подписей уровня XLT1.
- При проверке подписей учитывается информация, содержащаяся во вложенных атрибутах, что могло влиять на проверку подписей уровня XLT1.
- В desktop-клиенте исправлено некорректное формирование документа в элементе управления “Текст с форматированием”, при изменении размера шрифта.
- Оптимизировано получение типа документа для карточки.
- В методе
KrComponentsHelper.CheckKrComponentsAsyncисправлена ошибка, из-за которой не обрабатывался флагKrComponents.UseForum. - Оптимизировано выполнение расширений
KrCheckGroupBoundariesStoreExtensionиKrCheckStageRowModifiedStoreExtensionдля карточек, у которых не включены маршруты документов. - В web-клиенте исправлена ошибка в контроле “Дата”, из-за которой при нажатии кнопки выбора даты пропадало все содержимое страницы в мобильной версии.
- Исправлена проблема одновременной инициализации объекта шаблона бизнес-процесса из нескольких потоков. Из-за неё в потоках, осуществивших инициализацию объекта первыми, могла возникнуть ошибка отсутствия узла бизнес-процесса, хотя фактически узел в процессе существовал.
- Оптимизирована загрузка метаинформации представлений и рабочих мест.
- В web-клиенте исправлена некорректная работа при объединении документов в Word для списка версий в файловом контроле.
- Оптимизирован SQL-скрипт, генерируемый с помощью команды tadmin
SchemeScript. - Повторные вызовы команды tadmin
SchemeScriptбез изменения конфигурации не приводят к изменению генерируемого SQL-скрипта. - Исправлено функционирование мьютексов в Linux при отмене ожидания по
cancellationToken. Мьютексы могут использоваться при сбросе глобального кэша в web-сервисе и Chronos, а также при запуске дочерних процессов Chronos. - Исправлена ошибка в TessaAppManager, не позволяющая ввести логин и пароль при добавлении первого сервера.
- Исправлено отображение записи из истории действий по импорту карточки в режиме
SmartMergeпри наличии в ней отложенных заданий. - В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой некоторые сообщения, отправленные в основном из web-клиента, не отображались из-за невозможности определить стиль, что пользователю выводилось как ошибка загрузки, а в логах записывалось исключение
NullReferenceException. - В маршрутах в этапе “Настраиваемое задание” исправлена ошибка, из-за которой задание не содержало вариантов завершения, указанных в настройках. Ошибка воспроизводилась, если в типе задания
KrUniversalTaskбыл выставлен флаг “Автоматически брать в работу” или в объекте задания был указан флагCardTaskFlags.AutoStart. - В конструкторе бизнес-процессов в действии “Настраиваемое задание” исправлена ошибка, из-за которой задание не содержало вариантов завершения, указанных в настройках. Ошибка воспроизводилась, если в типе задания
KrUniversalTaskбыл выставлен флаг “Автоматически брать в работу” или в объекте задания был указан флагCardTaskFlags.AutoStart. - Для мобильных браузеров отключено определение ранее открытой вкладки из-за некорректного поведения во встроенных браузерах.
- Оптимизировано потребление памяти для просмотра файлов PDF/TIFF.
- В представлении “Мои задания” (
MyTasks) в сабсете “По роли” исправлена ошибка счетчика, возникавшая после переименования роли. - В форумах (обсуждениях) исправлено отображение сообщений, отправленных удалёнными или несуществующими сотрудниками, и исправлено формирование логотипа по имени сотрудника, указанному в сообщениях.
- В TessaAdmin исправлена ошибка инвалидации кэша для типов карточек после изменения схемы.
- В TessaAdmin исправлена ошибка, при которой в маппинге полей карточки не было видно таблиц и их колонок, если таблица не является секцией какого-либо типа карточек.
- Исправлено возможное выполнение методов расширений
TileExtension.InitializingGlobalдважды при запуске TessaClient. Теперь соответствующий метод гарантированно выполняется ровно один раз. - В desktop-клиенте в форумах (обсуждениях) исправлена отрисовка панели инструментов при нехватке места. Кнопка “Отправить” отображается всегда, а остальная часть тулбара прокручивается колесом мыши.
- В web-клиенте исправлена ошибка, из-за которой в файловом контроле при группировке файлов по циклам согласования могло отображаться некорректное число файлов.
- В TessaClient исправлено выбрасывание исключения
ObjectDisposedExceptionпри обращении к методуIFileContent.EnterLockAsync. В частности, ошибка воспроизводилась в виде диалога с сообщениемThe semaphore has been disposedв случае, если при загрузке файла для предпросмотра, карточка была обновлена. - В web-клиенте исправлен баг, из-за которого скрытые этапы маршрута не выделялись серым цветом.
- В web-клиенте исправлена ошибка доступа к Deski при сохранении отредактированной копии файла.
- В web-клиенте исправлена ошибка, приводящая к зависанию панели тайлов при использовании тайла “Создать файл по шаблону”.
- В маршрутах в этапах “Согласование” и “Подписание” исправлена ошибка, из-за которой учитывалось значение комментария, заданного на форме варианта завершения “Запросить комментарий”, при завершении задания с вариантом завершения “Запросить дополнительное согласование”.
- В редакторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлена ошибка, из-за которой учитывалось значение комментария, заданного на форме варианта завершения “Запросить комментарий”, при завершении задания с вариантом завершения “Запросить дополнительное согласование”.
- В API тестов исправлено потенциальное NRE при выполнении метода
WeProcessInstanceLifecycleCompanion.SendSignal, если переданный в конструкторе объектCardLifecycleCompanionне содержал карточки. - В API тестов в методе
KrAssert.HasNoTaskисправлена ошибка, из-за которой не работала проверка на отсутствие указанного типа задания в карточке. - Оптимизирован запуск
TessaClientи web-клиента в части инициализации рабочих мест. - В web-клиенте на мобильных устройствах исправлена обработка ошибки во время открытия карточки, когда другие рабочие места переставали быть доступны для пользователя.
Обновление на новую сборку¶
- Перед обновлением схемы данных выполните запрос “Удаление дубликатов в FmUserStat” из файла
Fixes\Migration-3.6-pre.XX.sql, где вместоXXуказаноmsдля MS SQL Server,pgдля PostgreSQL. - В API тестов изменён способ доступа к спискам действий. Замените прямое обращение к списку на доступ к нему через вызов метода
TestBase.GetTestActions. Например, доступ к списку действийBeforeInitializeAsyncтеперь можно получить следующим образом:GetTestActions(ActionStage.BeforeInitialize). - Статический класс
ApplicationFoldersпреобразован в зависимость. Получите её из Unity-контейнера по интерфейсуIApplicationFolders. - В API тестов изменено расположение классов
Tessa.Test.Default.Server.ServerTestBaseиTessa.Test.Default.Server.Kr.KrServerTestBaseнаTessa.Test.Default.Shared.ServerTestBaseиTessa.Test.Default.Shared.Kr.KrServerTestBaseсоответственно. Обновите проектный код c тестами, содержащими ссылки на эти классы.
Изменения конфигурации при обновлении¶
-
Представления:
-
MyTasks -
VatTypes
-
-
Таблицы:
-
FmAttachments -
KrPermissions -
ServerInstances -
SignatureSettings
-
-
Типы:
-
KrSigningAction -
ServerInstance -
SignatureSettings
-
-
Карточки:
-
Server settings (settings)(необязательные изменения) -
Signature settings (settings)(необязательное изменение)
-
-
Изменены библиотеки локализации.