Патч 3.6.0.8 (13.05.2022)¶
Добавление и изменение функциональности¶
- В форумах (обсуждениях) добавлены ограничения на максимальный размер прикладываемого файла (карточка “Настройки сервера”, поле “Максимальный размер файла, приложенного к сообщению”) и на максимальное количество файлов, приложенных к сообщению (поле “Максимальное количество файлов, приложенных к сообщению”).
- В форумах (обсуждениях) добавлено ограничение на максимальное количество вложений (вставленных изображений) в сообщении (поле “Максимальное количество вложений в сообщении”).
- Улучшен вывод деталей сообщения об ошибке при проверке доступа по карточкам “Правило доступа”.
- Добавлена базовая обработка циклических зависимостей при сохранении изменений таблиц схемы данных.
- В названии сертификата ЭП теперь выводится информация об организации (при наличии).
- В web-клиенте в окне “О программе” добавлена возможность переподключения к Deski в случае, если сервис недоступен.
- В правило доступа добавлены флаги “Чтение обсуждений” и “Чтение и отправка сообщений”, которые позволяют назначить доступ на чтение всех топиков в карточке с опциональным разрешением на отправку сообщений во все топики, независимо от вхождения в участники топика.
- При отсутствии содержимого у компонента рабочего места (удаленный поисковый запрос, ограничение по правам и т.д.) на экран теперь выводится надпись “Содержимое узла недоступно для просмотра”.
- В форумах (обсуждениях) добавлено ограничение на максимальное количество символов в сообщении: в карточке “Настройки сервера” поле “Максимальный размер сообщения, символы”. По умолчанию указано 1000 символов.
- В web-клиенте для элементов управления “Текст с форматированием” и “Обсуждения” добавлена возможность открыть предпросмотр вложенных файлов в диалоговом окне.
- В desktop-клиенте в форумах (обсуждениях) сообщение о попытке отправить пустое сообщение теперь отображается во всплывающем уведомлении.
- В web-клиенте для форумов (обсуждений) диалог выбора файла, вызываемый при добавлении изображения в сообщение, теперь отображает только файлы допустимых форматов изображений. Это актуально для контролов “Текст с форматированием” и “Обсуждения”.
- В конструкторе бизнес-процессов в действии “Подписание” добавлена возможность привязки для параметра “Разрешить дополнительное согласование”.
Консольная утилита tadmin¶
- Команда
InvalidateCache
теперь позволяет сбрасывать кэш метаинформации рабочих мест, имя кэша указывается какWorkplaces
.
Новые версии библиотек¶
.NET 5.0.17
CAdESLib 1.2.2
Kerberos.NET 4.5.162
linq2db 3.7.0
MailKit 3.2.0
Microsoft.NET.Test.Sdk 17.2.0
NLog 4.7.15
Npgsql 5.0.13
Quartz 3.4.0
StackExchange.Redis 2.5.61
Swashbuckle.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)
(необязательное изменение)
-
-
Изменены библиотеки локализации.