Патч 3.6.0.7 (27.03.2022)¶
Добавление и изменение функциональности¶
- В редакторе типов карточек TessaAdmin, для элементов блоков, контролов и колонок в табличных контролах теперь доступен множественный выбор этих элементов, а также массовое перемещение и удаление выбранных элементов.
- Добавлена возможность скачать список отзыва (CRL) из окна отображения информации о проверке подписей.
- В web-клиенте в окне отображения информации о проверке подписей неуспешные статусы проверки выделяются жирным шрифтом.
- В web-клиенте реализована возможность выбора режима открытия PDF файлов по умолчанию в меню “Мои настройки”, выбирая пункт “Постраничный предпросмотр PDF”.
- В web-клиенте добавлены тултипы для вкладок рабочих мест и карточек с полным содержанием информации и названия.
- Сотрудники, которые подписались на определённый тип уведомления по карточке, теперь будут получать уведомления этого типа, даже когда по правилам уведомлений они должны быть отфильтрованы.
- В карточку сотрудника в настройки уведомлений добавлена возможность указать список глобальных типов уведомлений, на которые хочет подписаться сотрудник. Он будет получать уведомления по заданным типам, если при их отправке он указан как опциональный получатель.
- В конструкторе бизнес-процессов в действии “Уведомление” добавлен параметр “Опциональные получатели”. Указанные в нём сотрудники получат уведомление только в том случае, если в настройках уведомлений добавлено правило, разрешающее получение уведомления, или если тип уведомления добавлен в список типов, на которые сотрудник хочет подписаться.
- В маршрутах в этапе “Уведомление” добавлен параметр “Опциональные получатели”. Указанные в нём сотрудники получат уведомление только в том случае, если в настройках уведомлений добавлено правило, разрешающее получение уведомления, или если тип уведомления добавлен в список типов, на которые сотрудник хочет подписаться.
- В web-клиенте добавлена функциональность, учитывающая настройку задержки поиска для элементов управления “Ссылка” и “Список”.
- В web-клиенте в системе обсуждений изменено поведение при клике на внешние ссылки: теперь они открываются в новой вкладке браузера.
- В web-клиенте текст в заголовке вкладки вынесен в локализацию: в окне логина это строка
Titleв файлеlocalization.jsonвеб-сервиса; после логина используется константа локализацииCommon_WebLoginTitle. - В web-клиенте добавлен параметр
AlwaysOpenLinksInSingleBrowserTab, который включает использование алгоритма определения предыдущей открытой вкладки с приложением TESSA и возможностью перехода к этому приложению. - В форумах (обсуждениях) добавлена возможность указывать статус “Подписан на уведомления” при добавлении новых конкретных участников обсуждения. В представлении “Участники” добавлена возможность изменить статус “Подписан на уведомления” конкретного участника обсуждения.
Консольная утилита tadmin¶
- Добавлена команда
Check, которая позволяет вывести на консоль результаты запросов к веб-сервису по адресам/checkи/hcheck. Подробное описание команды содержится в руководстве администратора.
Новые версии библиотек¶
.NET 5.0.15CAdESLib 1.2.1DocumentFormat.OpenXml 2.16.0HtmlAgilityPack 1.11.42HtmlSanitizer 7.1.488ITfoxtec.Identity.Saml2.MvcCore 4.8.2Kerberos.NET 4.5.158MailKit 3.1.1Microsoft.Data.SqlClient 4.1.0Microsoft.NET.Test.Sdk 17.1.0NLog 4.7.14Npgsql 5.0.12NUnit 3.13.3SixLabors.ImageSharp.Drawing 1.0.0-beta14StackExchange.Redis 2.5.43Swashbuckle.AspNetCore 6.3.0ZXing.Net 0.16.8
Изменения API¶
- Добавлен объект
TransactionScopeContext, в который можно передавать обработчики, которые будут выполнены после завершения транзакции. Данный объект можно использовать в методах расширений, выполняемых внутри транзакции, а также в скриптах маршрутов и конструктора процессов. Также добавлен объектITransactionScopeдля управленияTransactionScopeContextи для запуска обработчиков текущего контекста. - В форумах (обсуждениях) диалоги добавления/изменения топиков и участников теперь выводятся с использованием типов диалогов. Удалены виртуальные секции
Fm*, которые автоматически добавлялись в типы карточек, включённые в типовое решение. При этом изменён интерфейсIForumDialogManagerи другие объекты, связанные с UI. - В делегат
CreateDialogFormFuncAsyncдобавлен опциональный параметрtypeFilter, который регулирует типы, предоставляемые в метаинформации диалога. По умолчанию, как и ранее, возвращается указанный тип диалога, а также все файлы и задания, что позволяет отобразить диалог как полноценную карточку. Для оптимизации передайте в параметре функциюDialogFormInvoker.FilterDialogOnly(отображение диалога без файлов и заданий) илиDialogFormInvoker.FilterDialogWithFiles(отображение диалога с файлами без заданий). - Для desktop-клиента добавлено свойство
ITabbedFormViewModel.TabsAreCollapsedдля скрытия заголовков всех вкладок. - Для web-клиента добавлен интерфейс
ITabbedFormViewModel(аналог соответствующего интерфейса в desktop-клиенте). - Для
INotificationManagerдобавлена реализация параметра для определения списка получателейAggregateNotificationRecipientsSourceParameter, которая может включать в себя другие параметры для определения списка получателей. - Для
INotificationManagerв параметры определения списка получателейIDNotificationRecipientsSourceParameterиRoleNameNotificationRecipientsSourceParameterдобавлено свойствоIsOptional, которое указывает, что рассчитанные по данному параметру получатели уведомления являются опциональными. - В
NotificationRecipientдобавлено свойствоIsOptional, которое указывает, что получатель уведомления является опциональным. - В web-клиент добавлены события
tabSelectedиtabDeselectedдля уведомления контролов, находящихся на активной кладке. - В методы
IForumProvider.AddParticipantsAsyncиAddRolesAsyncдобавлен параметрskipServiceMessageдля отключения служебных сообщений о появлении новых участников обсуждения. Параметр игнорируется при запросе с клиента. - Добавлен тип сообщения
MessageType.Custom, который можно использовать для отправки служебных сообщений с произвольным текстом. Служебные сообщения отправляются методомIForumProvider.SendMessageAsync, но только находясь на сервере. - Классы-наследники
Tessa.Platform.Runtime.WebProxyтеперь могут в конструкторе указать пустое имя контроллераcontrollerRoute, при этом методы класса будут выполнять запросы по URI-адресу относительно корневого пути веб-сервиса. Также в класс добавлен флагRequestFlags.OmitInstanceInUri, определяющий, что при формировании запроса необходимо не добавлять имя экземпляра сервераInstanceNameв URI-адрес запроса. Это необходимо для запросов к адресам, которые не являются MVC-контроллерами TESSA, например, к адресу/hcheck. - В форумы (обсуждения) добавлен интерфейс
ITopicNotificationServiceдля получения списка почтовых уведомлений. При необходимости отправки почтовых уведомлений пользователям, не являющимся участниками топика, используйте класс-наследник отTessa.Extensions.Default.Server.Forums.Notifications.TopicNotificationService. - В событии
ICardStoreExtensionContext.OnContentStoringошибку загрузки контента теперь можно указать в свойствеeventArgs.ContentContext.ValidationResultпомимо исключения.
Исправления и оптимизации¶
- Исправлена редкая ошибка
Collection was modified, возникающая при рефреше карточки с одновременным открытием боковой панели в desktop-клиенте. - Исправлена ошибка, приводившая к тому, что не сохранялась первая строка многострочного комментария при завершении задания дополнительного согласования.
- Оптимизировано взаимодействие с базой данных при конвертации файла посредством
IFileConverter.ConvertFileAsync. Теперь соединение с базой данных не будет удерживаться до завершения конвертации. - Исправлена проверка доступа к карточке сателлита, не доступной для загрузки на клиент, при запросе карточки с клиента по её идентификатору.
- В web-клиенте в представлении “Участники” в контроле “Обсуждение” исправлена работа контекстных меню (“Изменить” и “Удалить”). Теперь если у пользователя нет прав супермодератора, то будет предложено рассчитать их. Поведение команд идентично поведению соответствующих плиток в представлении.
- Исправлена конвертация файлов с флагом
IgnoreCacheBeforeConversion. Ранее этот флаг игнорировался и контент файла выдавался из кэша без создания новой операции конвертации. - В плагине асинхронной обработки процессов
WorkflowEngineAsyncPluginисправлена проблема, из-за которой запущенная операция могла зависнуть в состоянии “Выполняется”, если в момент её обработки была инициирована остановка плагина. - В конструкторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлены ошибки при отправке уведомлений.
- В конструкторе бизнес-процессов в действиях “Согласование” и “Подписание” исправлена ошибка, из-за которой при делегировании задания не учитывались параметры: “Редактировать карточку” и “Редактировать любые файлы”. В действии “Согласование” дополнительно не учитывался параметр “Отключить автоматическое согласование”.
- В обсуждениях (форумах) исправлена ошибка, из-за которой топик мог быть доступен пользователю только для чтения, когда у пользователя есть права на отправку сообщений.
- В web-клиенте исправлено поведение определения другой открытой вкладки: по клику нотификации - осуществляется переход, при закрытии или игнорировании - загрузка приложения.
- В web-клиенте исправлена ошибка в обсуждениях приводившая к визуальному отсутствию пустых строк и удалению идущих друг за другом пробелов.
- При проверке подписей исправлено ошибочное отображение иерархии сертификатов.
- Исправлено отображение кавычек в окне отображения информации о проверке подписей.
- Для веб-сервиса убрана поддержка создания операции конвертации со стороны клиента.
- Для контролов “Ссылка” и “Список” исправлен маппинг представления на поля карточки для случаев, когда контрол привязан к карточке задания.
- Исправлен импорт карточки временных зон поверх уже имеющейся.
- В TessaAdmin исправлена ошибка, когда при выборе столбца для привязки элемента управления, наименование группы для таблиц всегда отображалось как “(без группы)”.
- В web-клиенте исправлено появление второй полосы прокрутки при предпросмотре офисных документов.
- Исправлено исключение, возникавшее при компиляции шаблона файла в том случае, когда модуль компиляции не мог выстроить синтаксическое дерево.
- Исправлена ошибка, возникавшая при попытке добавить или отредактировать запись в контроле представления со скрытой колонкой.
- В маршрутах исправлена ошибка, приводившая к ошибочному определению наличия изменения положения этапов.
- В desktop-клиенте исправлены ошибки, возникавшие при сохранении или закрытии карточки с контролами “Представление” или “Список” без предварительного открытия вкладки с соответствующими контролами.
- Оптимизировано отображение типов диалогов в конструкторе представлений и конструкторе виртуальной схемы.
- Исправлена неизменность объекта
SessionToken, которому в конструкторе передан параметрseal = true. - В редакторе бизнес-процессов в действии “Диалог” исправлена ошибка, из-за которой не учитывался параметр “Текст кнопки в задании”.
- Для приложений Tessa Applications исправлена редкая ошибка
FileNotFoundExceptionпри обращении к именованному каналу посредством классаPipeClient. - Исправлена ошибка, возникающая при проверке прав доступа к карточке с выделением номера при создании карточки в ситуации, когда доступ к полям номера карточки запрещён через расширенные настройки правил доступа.
- Исправлен двойной клик по значению
DefaultSortColumnsв конструкторе представлений. - Исправлена ошибка, из-за которой при отправке уведомлений через
INotificationManagerправила уведомлений сотрудника обрабатывались в некорректном порядке. - В системе исправлена проблема с наличием лишнего доступа на изменение карточек-сателлитов из клиента.
- В web-клиенте исправлена некорректная инициализация контрола “Обсуждение”, если контрол находился на скрытой/неактивной вкладке.
- В web-клиенте исправлена ошибка несоответствия времени выбранного для параметра в фильтре его отображению в таблице над представлением.
- В маршрутах исправлена работа этапа “Пересчёт маршрута”. Ошибка воспроизводилась в случае, когда после этапа “Доработка”, с выставленным параметром “Управлять видимостью этапа”, следовал этап “Пересчёт маршрута”.
- Исправлена возможная ошибка
DllNotFoundExceptionпри открытии окна сканирования. - В desktop-клиенте исправлено определение языка пользователя при генерации виртуального файла для предпросмотра с конвертацией в PDF.
- Исправлено определение подписывающего сертификата при импорте.
- При проверке подписей учитывается подтверждённая дата подписи или текущее время.
- Оптимизированы проверки прав доступа и отображение сообщений об ошибках доступа в запросах, связанных с обсуждениями.
- Исправлена невозможность снять флаг “Использовать обсуждения” в настройках типового решения для типа карточки или типа документа, если он был ранее установлен для лицензии, в которой есть модуль “Форумы и обсуждения”, а в текущий момент этого модуля в лицензии нет.
- Улучшена обработка ошибок в API тестов.
- В web-клиенте добавлены всплывающие подсказки для кнопок в обсуждениях.
- В web-клиенте исправлена ошибка, из-за которой контрол “Выбор цвета” блокировался при изменении прозрачности.
- Исправлено изменение значений полей таблиц-перечислений при обновлении схемы. Ошибка появилась в предыдущем патче.
- В web-клиенте для
CardTypeSectionColumn.defaultValueисправлено преобразование типов при десериализации. - В редакторе типов карточек исправлена ошибка, возникающая при нажатии кнопки “Исправить всё” после успешного исправления типов карточек.
- В настройках расширения на узел дерева
RefSectionExtensionисправлены заголовки диалогов для добавления строк в таблицы. - В web-клиенте исправлена ошибка, из-за которой не работало расширение
AutomaticNodeRefreshExtensionна узле рабочего места. - В web-клиенте исправлена ошибка для контрола “Обсуждение” с активированной настройкой “Обратный порядок сообщений”. Пользователю отображался некорректный номер страницы для топика, в который он ещё ни разу не заходил.
- Оптимизировано создание источника файлов
IFileSource, используемого при создании файлового контейнераICardFileContainer. - В web-клиенте исправлена ошибка, из-за которой в контроле “Ссылка” при получении нового значения из кода расширения отображалось неактуальное старое значение.
- В web-клиенте исправлен баг, приводящий к некорректной работе поиска и фильтров при копировании в них полей из элементов управления “Ссылка” и “Список”.
- Исправлена команда
tadmin CheckService: если параметр-timeoutзадан как0(по умолчанию), то таймаут подключения соответствует бесконечному, как указано в описании параметра. Ранее использовался таймаут из конфигурационного файла, который был определён как 40 минут. - Оптимизирована производительность сервисов и приложений, связанная с логированием на уровне
Trace. - В конструкторе шаблонов бизнес-процессов исправлено зависание выполнения асинхронных операций, если в момент их выполнения плагин обработки асинхронных операций был выключен по таймеру или по причине остановки сервиса Chronos.
- Исправлена ошибка, возникавшая при генерации шаблона файла после импорта карточки шаблона файла на уже существующую карточку, если у импортируемой карточки есть изменения в файле шаблона.
- Оптимизировано выполнение представлений для СУБД PostgreSQL.
- При обновлении схемы данных исправлена проблема, из-за которой некорректно выводилась ошибка сохранения схемы данных в ситуации, когда ошибка вызывала поломку транзакции к базе.
- Исправлена ошибка в команде
tadmin ConvertCards, возникающая, когда целевая директория при конвертации карточек совпадает с исходной. - Исправлена ошибка таймаута сохранения схемы в базу данных.
- В desktop-клиенте исправлена ошибка при попытке сохранить файл из сообщения топика на диск, при помощи перетаскивания drag&drop.
- В web-клиенте исправлен текст сообщения об ошибке
Не удалось найти тип документа с ID {0}. - В TessaAdmin исправлена ошибка при добавлении в диалог маппинга для контролов “Ссылка”, “Список”, “Список файлов”, “Представление”.
- В web-клиенте исправлена ошибка в контроле “Нумератор”, из-за которой нельзя было задавать номер карточки вручную после редактирования порядкового номера.
- В форумах (обсуждениях) исправлена ошибка при попытке ответить на сообщение, содержащее в себе только приложенные файлы.
- Исправлена работа ограничения “Максимальный размер файла для загрузки в систему” в карточке настроек сервера.
Обновление на новую сборку¶
- Обновите файл
localization.jsonв папке веб-сервиса: в группу настроекWebLoginStringsдобавлен параметрTitle. - Для расширений на представления и узлы рабочего места
OpenTopicOnDoubleClickExtensionиOpenForumContextMenuViewExtensionизменено пространство имён сTessa.Extensions.Default.Client.ForumнаTessa.Extensions.Default.Client.Forums. Мы рекомендуем произвести поиск и замену по рабочим местам и представлениям в репозитории. - В TessaAdmin исправлена ошибка при добавлении в диалог маппинга для контролов “Ссылка”, “Список”, “Список файлов”, “Представление”. Если вы добавляли/изменяли в диалогах маппинги для указанных контролов, то необходимо открыть приложение TessaAdmin, перейти в пункт меню “Карточки” и нажать кнопку “Исправить все”. После этого исправленные типы диалогов нужно переэкспортировать.
- В файлах проектов расширений
*.csprojимпорт файлов*.targetsиз папки с проектом заменён на*.<group_name>.targets. Значение<group_name>может иметь значениеpre, для установки значений свойств в начале файла проекта,props, для переопределения имён свойств проекта до выполнения скриптов проекта, иpostдля добавления скриптов в конце файла проекта. Это позволяет изменять свойства проекта и добавлять скрипты сборки путём добавления файлов*.targetsв папку с проектом решения без изменения самого файла проекта. - В конструкторах коллекций типов карточек и объектов метаинформации, являющихся наследниками типа
CardSerializableEntryCollection<T>, вместоICollection<T>теперь передаётсяIReadOnlyCollection<T>. Актуализируйте тип передаваемого параметра, если конструкторы используются в проектном решении. - Для desktop и web-клиента изменён интерфейс
IFormViewModel, в котором свойствоTabVisibility(tabVisibility) заменено свойствомIsCollapsed(isCollapsed) для скрытия указанной вкладки. - Изменены названия в API обсуждений для параметров методов
IForumProviderи типов перечислений, для desktop-клиента, сервера и web-клиента. При использовании в проектном решении может потребоваться их переименовать или изменить порядок параметров. Они называются схожим образом, например:readOnly -> isReadOnly,MessageTypes -> MessageType. - Удалена регистрация объекта для отправки уведомлений
CustomNotificationSender. Мы рекомендуем использовать безопасный способ отправки уведомленийINotificationManager. Если сейчас такой возможности нет, то разкомментируйте эту регистрацию в классеTessa.Extensions.Default.Server/Notices/Registrator.cs. - В API форумов результат выполнения операции теперь всегда возвращается в объекте
ValidationResult, тогда как ранее он мог размещаться вresponse.ValidationResult. Измените проектные расширения, которые использовали API форумов. - В файлах
NLog.configдля всех сервисов и приложений рекомендуется удалить строкиwriteTo="null"для всех тегов<logger>. NLog не считает логгеры сwriteTo="null"выключенными, что приводило к снижению производительности.
Изменения конфигурации при обновлении¶
-
Представления:
-
LastTopics -
MetadataEditor -
MyTopics -
TopicParticipants
-
-
Таблицы:
-
FmAddTopicInfoVirtual(удалена) -
FmMessages -
FmMessageTypes(переименована изFmMessagesTypes) -
FmTopicParticipantsInfoVirtual(удалена) -
FmTopicParticipantsVirtual(удалена) -
FmTopicRoleParticipantsInfoVirtual(удалена) -
FmTopics -
FmUserStat -
KrNotificationOptionalRecipientsVirtual(добавлена) -
KrWeAdditionalApprovalOptionsVirtual(добавлена) -
KrWeRequestCommentOptionsVirtual(добавлена) -
PersonalRoleSubscribedTypesVirtual(добавлена) -
WeEmailActionOptionalRecipients(добавлена)
-
-
Библиотеки схемы:
-
Standard solution -
Workflow
-
-
Типы:
-
KrNotificationStageTypeSettings -
NotificationUserSettings -
TopicDialogs(добавлен) -
TopicTabs -
WorkflowNotificationAction
-
-
Изменены библиотеки локализации.