Патч 3.6.0.4 (22.10.2021)¶
Добавление и изменение функциональности¶
- Скрипты “setup” и “upgrade” для Windows/Linux теперь импортируют приложения с параметром “-ignored”, в котором передаётся путь к файлу “Applications/ignored-files.txt” в сборке платформы. Это гарантирует, что файлы логов и другие артефакты не повлияют на возможность импорта карточек приложений.
- При работе с путями в storage-объектах добавлена возможность перехода к родительскому элементу. Подробности в документе “Руководство разработчика” в разделе “База знаний”, п. “API для работы со storage-объектами”.
- При экспорте карточек шаблонов этапов и вторичных процессов расширен набор выгружаемых во внешние файлы полей, содержащих C# и SQL скрипты. Файлы расположены в подпапке с именем карточки.
- При экспорте карточки “Методы расширений” текст метода теперь выгружается во внешний файл, расположенный в подпапке с именем карточки.
- В web-клиенте в обсуждениях (форумах) в контроле “Текст с форматированием” увеличен размер вставляемого изображения.
- Теперь при импорте карточек, для прикрепленных к ним файлов, по умолчанию всегда считается хэш. Поведение по умолчанию может быть изменено с помощью опций слияния. Информация по опциям слияния содержится в руководстве администратора в разделе “Карточки”, п. “Экспорт и импорт”, пп. “Карточки”.
- Добавлен вертикальный скроллинг в выпадающий список с доступными рабочими местами в desktop-клиенте.
- При экспорте/импорте карточки теперь вместе с ней экспортируются/импортируются экземпляры бизнес-процессов конструктора процессов.
- В web-клиенте для обсуждений добавлена поддержка настройки “Тип обсуждений”.
Новые версии библиотек¶
.NET 5.0.11HtmlAgilityPack 1.11.37linq2db 3.5.0Microsoft.Data.SqlClient 3.0.1Npgsql 5.0.10NTwain 3.7.1StackExchange.Redis 2.2.79Swashbuckle.AspNetCore 6.2.3Unchase.Swashbuckle.AspNetCore.Extensions 2.6.12
Изменения API¶
- В ICardManager изменилась сигнатура метода ReadExportedRequestAsync(), метод больше не возвращает в кортеже IValidationResultBuilder, вместо этого добавлен обязательный параметр IValidationResultBuilder validationResult.
- В IStorageSerializer изменилась сигнатура метода DeserializeAsync(), метод больше не возвращает в кортеже IValidationResultBuilder, вместо этого добавлен обязательный параметр IValidationResultBuilder validationResult.
- В API тестов добавлены методы HybridClientTestBase.CreateContainerServerAsync() и HybridClientTestBase.InitializeContainerServerAsync(IUnityContainer), предназначенные для создания и инициализации серверного Unity контейнера, используемого в клиентских тестах, выполняющихся на специально подготовленном сервере приложений.
- В web-клиенте в модели представления topicEditorViewModel добавлены значения в поле name для элементов меню “Обновить” (Refresh), “Назад к списку топиков” (BackToTopics) и меню (TopicMenu).
- В web-клиенте в модели представления topicListViewModel добавлено поле name для меню (TopicListMenu).
- Изменены параметры метода StageTypeFormatterBase.AppendString. Удалены параметры: settings и name. Вместо них передавайте само значение. Добавлен параметр appendNewLine, позволяющий управлять добавлением символа новой строки.
- Добавлен метод IStoragePathResolver.IsUnambiguous, позволяющий определить, указывает ли путь на единственный элемент хранилища.
- Добавлен метод IStoragePathResolver.SetValueWithSuffix, принимающий хранилище типа IList.
- В API тестов метод TestConfigurationBuilder.GetExternalPendingActionsProvider заменён на PendingActionsProviderExtensions.RegisterPendingActionsProducer.
- Добавлен метод
FormattingHelper.FormatNullable<T>(T?, string, IFormatProvider), возвращающий строковое представление объекта с использованием заданного формата, если он задан, иначе значение FormattingHelper.NullText. - Добавлено свойство ICardModel.IsHtmlSanitizingEnabled, установив которое как true в области предпросмотра desktop-клиента выполняется санитайзинг html-документов для противодействия потенциальным угрозам безопасности. Ввиду ограничений, связанных с используемым браузером в области предпросмотра, санитайзинг приводит к искажениям в стилях html-содержимого, поэтому свойство по умолчанию установлено как false. Поскольку документ отображается внутри desktop-клиента, т.е. не внутри полноценного браузера, это не приводит к известным угрозам безопасности.
- В API тестов в методы
TestHelper.ExecuteSqlScriptsAsync,TestHelper.ExecuteSqlScriptsFromEmbeddedResourcesAsync,TestConfigurationBuilder.ExecuteSqlScriptsи атрибутSetupTempDbAttributeдобавлена возможность указания таймаута при выполнении SQL-скриптов. В методах таймаут можно задать с помощью параметраtimeoutSeconds, в атрибутеSetupTempDbAttribute- с помощью свойстваSetupTempDbAttribute.TimeoutSeconds. - В контекст скриптов подсистемы маршрутов
IKrScriptдобавлено свойствоCardType, возвращающее тип текущей карточки или значениеnull, если выполнение происходит вне карточки. - При слиянии карточек в процессе импорта раздел Info из карточки-источника теперь целиком переносится в карточку-назначение. Карточки-сателлиты, содержащиеся в Info, используют ту же логику слияния, как и основные карточки.
- В API тестов добавлено свойство
HybridClientTestBase.UnityContainerServer, возвращающее Unity-контейнер, используемый на сервере. - В API тестов добавлен класс
KrTestContext, предоставляющий дополнительную информацию, используемую в тестах. - В API тестов добавлена возможность переопределения метода, выполняющего валидацию результатов выполнения отложенного действия по умолчанию. Для переопределения необходимо свойству
KrTestContext.ValidationFuncзадать требуемый метод. Если свойствоKrTestContext.ValidationFuncвозвращает значениеnull, то используется методValidationAssert.IsSuccessful(ValidationResult). - В API тестов добавлены методы:
KrSecondaryProcessBuilderExtensions.SetConditionForCard,KrStageGroupBuilderExtensions.SetConditionForCardиKrStageTemplateBuilderExtensions.SetConditionForCard, позволяющие задать условное выражение, ограничивающее применение вторичного процесса, группы или шаблона этапов указанной карточкой. - В список флагов обработки процесса
WorkflowEngineProcessFlagsдобавлен новый флагSendToTaskSubscribers, который определяет, нужно ли отправлять сигнал на подписки по заданиям. Использование данного флага добавлено в методы-расширения для обработки сигнала процессаSendSignalToAllSubscribersAsyncиSendSignalToAllSubscribersWithContextAsync. - Добавлен метод
Tessa.Platform.IO.FileHelper.CreateSubFolderPath(string), который создаёт и возвращает путь к уникальной по имени папке в заданной папке.
Исправления и оптимизации¶
- В контроле “Текст с форматированием” исправлен отображаемый текст для сплэша, который возникает при добавлении файлов Outlook.
- В web-клиенте сабсеты в узлах деревьев теперь отображают только уникальные значения.
- В web-клиенте для обсуждений добавлена инициализация со стандартными настройками, если настройки не были предоставлены сервером.
- Исправлена валидация внешних файлов, прикрепленных к карточке, в методе CardManager.ReadExportedRequestAsync.
- В web-клиенте исправлена ошибка, приводившая к тому, что при наличии нескольких элементов управления “Обсуждение” и переходе по ссылке на сообщение оно могло открыться в первом элементе управления, а не в том, в котором была нажата ссылка.
- В API тестов в клиентских тестах, выполняющихся на специально подготовленном сервере приложений, исправлена ошибка, из-за которой выполнялась повторная инициализация тестового сервера.
- В API тестов исправлена ошибка при создании Unity контейнера, используемого в клиентских тестах, выполняющихся на специально подготовленном сервере приложений. Ошибка приводила к некорректной инициализации Unity контейнера при переопределении TestBase.CreateContainerAsync.
- Исправлена ошибка в логике построения метаданных при слиянии карточек в процессе импорта. Неправильно строились уровни метаданных слияния по иерархии секций в карточках. Также данная ошибка приводила к тому, что могли выводиться лишние предупреждения с ключом ParentSectionNotExistsInCardType в случаях, когда этого не должно происходить.
- В web-клиенте исправлен баг, из-за которого тайл “Создать карточку” оставался виден, даже когда нет доступных для создания карточек.
- При закрытии диалога выбора из представления рабочие места помечаются как отключённые
IWorkplaceViewModel.IsActive = false. - В API тестов исправлено освобождение ресурсов, которые были зарегистрированы в IUnityDisposableContainer.
- StringWidthLimitConverter.Instance теперь возвращает корректный тип конвертера.
- В desktop-клиенте исправлена прокрутка пальцами на тач-скрине в области заданий, когда там отображаются сообщения форумов.
- В desktop-клиенте исправлена сериализация метаданных поискового запроса.
- Исправлена проверка соединения с существующей базой данных для скриптов setup, upgrade, migrate и export (в Windows и Linux вариантах): вместо подключения к БД master/postgres выполняется подключение к БД TESSA. Это позволяет использовать скрипты для учётных записей СУБД, у которых нет доступа к master/postgres. Исключением являются скрипты setup в режиме создания базы данных.
- В маршрутах в этапе “Создать файл по шаблону” исправлена ошибка при отображении параметров этапа. Ошибка воспроизводилась, когда имя шаблона файла являлось строкой локализации и было задано значение в поле “Имя файла”.
- В маршрутах исправлена ошибка при отображении параметров этапов. Ошибка воспроизводилась, если в отображаемом параметре была указана строка локализации, длиной превышающая 30 символов.
- Если карточка экспортируется в папку без файла .jcard, то при наличии подпапки с именем файла экспорт завершается с ошибкой.
- Исправлены ошибки при синтаксическом анализе строкового представления пути в storage-объекте с помощью метода StoragePathParser.Parse.
- Исправлено использование зависимостей IStoragePathParser и IStoragePathResolver в объекте StorageValuesKeeper.
- Исправлена ошибка при сериализации объекта с учётом контента, расположенного во внешних файлах, с помощью метода StorageSerializer.SerializeAsync, если имя файла, в котором должен располагаться внешний контент, не имеет расширения.
- Исправлена ошибка, из-за которой нельзя было экспортировать карточку, если к ней был прикреплен файл, в названии которого имелись символы, не поддерживаемые файловой системой.
- В web-клиенте исправлена ошибка при сохранении карточки с файлом, которая могла приводить к лишнему запросу данных карточки с сервера, даже если сохранение не было успешным.
- Исправлена ошибка сохранения экземпляра бизнес-процесса в ситуации, когда при запуске бизнес-процесса в его скрипте производился запуск другого процесса, не являющегося подпроцессом.
- Исправлены настройки типизированного сериализатора в desktop-клиенте, из-за проблем с которыми у отложенных заданий некорректно сохранялось поле “Отложить до”.
- В desktop-клиенте реализована обработка строк локализации в текстовых значениях, передаваемых из master-представления в параметры detail-представления.
- Исправлена ошибка, из-за которой при открытии карточки из индикатора новых сообщений в базе не обновлялась дата последнего посещения топика пользователем.
- Для desktop-клиента исправлен перезапуск предпросмотра средствами внешних приложений в другой разрядности после ошибки E_FAIL в некоторых инсталляциях.
- Исключено появление лишней папки ~/.local/share/’tessa\cache’ при использовании tadmin на Linux. Вы можете её удалить, если она присутствует на сервере для пользователя, от имени которого запускался tadmin.
- В web-клиенте исправлена ошибка, из-за которой шаблоны файлов не обновлялись в клиентском кеше.
- В web-клиенте исправлена ошибка, из-за которой супермодератор не мог изменить участников обсуждения.
- В маршрутах исправлена ошибка учёта изменения порядка этапов. Ошибка приводила к изменению порядка добавленного вручную этапа при пересчёте несохранённой карточки.
- В API тестов исправлена ошибка при добавлении нового этапа при использовании методов: RouteBuilder.AddStage и KrStageTemplateBuilder.AddStage.
- В классе KrStageSerializer исправлены NRE, если не была установлена информация по сериализуемым секциям и полям.
- В web-клиенте исправлена ошибка, из-за которой при закрытии карточки мог появляться диалог с предложением сохранить карточку, даже когда это не требовалось.
- Исправлены ошибки “An item with the same key has already been added” в методе HttpHeaders.ThrowDuplicateKeyException() при логине с Kerberos-аутентификацией и в заголовках, перечисленных в разделе “ResponseHeaders” в файле app.json веб-приложения.
- Исправлен запуск плагинов Chronos, конструктор которых ссылается на объекты в библиотеке расширений или в других библиотеках, расположенных в папках, которые подключаются в ProbingPath.
- Исправлено закрытие вкладки или диалога с карточкой посредством свойства
ICardEditorModel.ClosePendingпри отмене переоткрытия или сохранения карточки указаниемcontext.Cancel = true, или при установке свойстваCardGetResponse.CancelOpening. При первом открытии карточки и при её создании отмена открытия вкладки реализуется указаниемcontext.Cancel = true(независимо от свойстваICardEditorModel.ClosePending). - При обновлении с платформы версии 3.5.0 в логе tadmin исправлен вывод информационных сообщений вида “Query expected to update one row but updated 0 rows.” при вызове команды tadmin ConvertBson для таблицы Outbox.
- При подписании файлов в desktop-клиенте исправлено появление ошибки “The process cannot access the file”.
- Исправлена рассылка почтовых уведомлений по обсуждениям, которая ранее не выполнялась, пока пользователь хотя бы раз не открыл обсуждение в карточке.
- В маршрутах исправлена ошибка при выполнении дополнительных сценариев вручную добавленных этапов.
- В API тестов исправлена ошибка, приводившая при некорректном использовании параметра “modifyRequestAction” в методах CardLifecycleCompanion<T>.Load/Save/Delete к рассогласованию значений свойств CardID, CardTypeID, CardTypeName и соответствующих значений, указанных в карточке, которой управляет объект.
- Исправлена ошибка при клонировании Storage-объектов с помощью метода
StorageHelper.Clone, из-за которой у типизированного списка после клонирования мог измениться тип данных наobject. - В маршрутах исправлена ошибка, из-за которой не учитывалось значение параметра вторичного процесса “Не отображать сообщение при отсутствии этапов, доступных для выполнения” при запуске процесса с помощью этапа “Создание карточки”.
- В маршрутах исправлена ошибка при определении значения плейсхолдера
#doc_type_idво всех SQL-скриптах, в которых он разрешён. Вместо плейсхолдера#doc_type_idподставляется идентификатор типа документа текущей карточки или значениеnull, если тип документа не задан для карточки. - В маршрутах исправлена ошибка, из-за которой не заполнялись свойства
IKrEventExtensionContext.MainCardTypeиIKrEventExtensionContext.MainCardDocTypeIDпри обработке событий типов: “Создание новой карточки”, “Перед сохранением карточки”, “Сохранение карточки”, “Перед созданием задания”, “Перед завершением задания”, “Создание задания”, “Завершение задания”. - Исправлена ошибка NRE при выполнении метода Tessa.Cards.FileSourceForCard.GetSignaturesCoreAsync. Ошибка происходила, например, при выполнении метода IFileSource.GetSignaturesAsync, если тип файла является виртуальным.
- В web-клиенте исправлена ошибка в модуле SAML аутентификации, из-за которой IdP сервер не мог проверить подпись логин-запроса.
- Реализована корректная работа расширения “Список файлов в представлении” в форме таблицы.
- Исправлены ошибки при отмене транзакции в случае возникновения ошибок при: сохранении основной карточки сателлита или первом создании и сохранении сателлита. Ошибка, например, приводила к завершению задания, если оно завершалось из карточки задачи, но при этом происходила ошибка.
- Исправлены ошибки, из-за которых не создавалась карточка сателлита при установленном флаге
NoLockingMainCard, который управляет отсутствием блокировки основной карточки при создании или изменении сателлита. Ошибка воспроизводилась при создании карточки сателлита задания. - Исправлена ошибка, возникающая при подписке на уведомления карточки, у которой нет дайджеста.
- Исправлена очистка кэша кнопок шаблонов бизнес-процессов при импорте карточек шаблонов бизнес-процессов.
- Исправлена ошибка NRE при отправке уведомления, содержащего C# скрипты, сотруднику с правилами уведомлений, содержащих условия.
- В API тестов исправлена ошибка при получении информации о процессах, запущенных по карточке с указанным идентификатором. Ошибка затрагивает методы:
KrTestHelper.GetWorkflowProcessAsync,KrAssert.HasWorkflowProcessAsyncиKrAssert.HasNoWorkflowProcessAsync. - В маршрутах исправлена ошибка, из-за которой этап “Доработка” пропускался, если при переходе в начало текущей группы этапов или на этап “Доработка” выполнялся вторичный процесс, работающий в режиме “Действие” с типом события: “Сохранение карточки” или “Перед сохранением карточки”.
- Исправлена передача null вместо объекта карточки в случае формирования тела письма по скрипту, если в INotificationSendContext.GetCardFuncAsync передается метод, возвращающий null.
- В web-клиенте исправлена ситуация, при которой в предпросмотре pdf при переключении на постраничный режим с режима прокрутки не сохранялась страница.
- В web-клиенте исправлена ситуация, когда при мультивыборе значения из представления в фильтре оставалась пустая строка.
- В desktop-клиенте восстановлена поддержка правил инициализации рабочих мест (WorkplaceInitializationRule).
- В конструкторе бизнес-процессов исправлена ошибка, когда подписки по умолчанию у запущенных процессов не обновлялись при импорте карточки шаблона бизнес-процесса.
- Исправлена проблема при выполнении проверки прав доступа через
IKrPermissionsManager, из-за которой при выполнении расчёта или проверки прав доступа дополнительная информация, записываемая в свойствоIKrPermissionsManagerContext.Info, также записывалась и в свойствоInfoконтекста расширения, вызвавшего расчёт или проверку прав. - Исправлена проблема, из-за которой при включении типа карточки “Сотрудник” в типовое решение кнопки “Создать копию” и “Создать шаблон” не были доступны обычным сотрудникам, даже если у них был доступ на создание шаблона и копирование карточек в правилах доступа.
- Исправлено возможное зависание API Tessa.PdfSharp при попытке открытия файла PDF с определённым содержимым. Актуально при его использовании в расширениях, например, для наложения штампа.
- В методе
Tessa.Platform.IO.TempFile.AcquireFolder(string)исправлена ошибка, из-за которой возвращаемый объект управлял не временной папкой, а папкой, указанной в параметре. - Исправлена ошибка, из-за которой в реализации интерфейса
Tessa.Platform.IO.ITempFolderпо умолчанию временная папка не удалялась, если была создана не при создании временного файла черезTessa.Platform.IO.ITempFolder.AcquireFile(string). - В форумах (обсуждениях) desktop-клиента атрибуты вводимого текста теперь по умолчанию всегда соответствуют атрибутам символа, находящегося перед курсором, и не зависят от предыдущей позиции курсора.
- В форумах (обсуждениях) desktop-клиента при вставке изображения/ссылки в выделенную область содержимое выделенного блока теперь не сдвигается, а очищается.
- В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой при добавлении цветов в незаполненную целиком пользовательскую палитру после обновления исчезал последний из добавленных цветов.
- В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой при открытии ссылки на сообщение в текущем топике и наличии нескольких вкладок с обсуждениями, для отображения сообщения всегда выбиралась первая вкладка, а не та, в которой была нажата ссылка.
- В форумах (обсуждениях) desktop-клиента в диалоге вставки внешней ссылки исправлена ошибка, из-за которой при вводе длинного адреса либо заголовка ссылки кнопки диалога скрывались под нижней границей окна и становились недоступны для нажатия.
- В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой после выбора цвета в контроле “Цвет текста”, “Цвет выделения текста” и “Цвет блока” в области ввода текста курсор менял положение.
- В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой при начале ввода первого сообщения в открытом форуме текст терял атрибуты “Подчеркнутый” и “Зачеркнутый”.
- В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой после отправки сообщения сбрасывались цвета в контролах “Цвет текста”, “Цвет выделения текста” и “Цвет блока”.
- В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой атрибуты вводимого текста в ряде случаев не соответствовали установленным в контролах “Цвет текста” и “Цвет выделения текста”.
- В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой атрибуты “Цвет текста”, “Цвет выделения текста”, “Подчеркнутый”, “Зачеркнутый” не применялись при выставлении их перед началом ввода текста в новом сообщении.
- В форумах (обсуждениях) desktop-клиента отключены кнопки “Ответить” и “Редактировать” для сообщений с информацией об ошибке.
- В форумах (обсуждениях) desktop-клиента исправлено исключение, возникавшее при попытке скопировать в буфер обмена сообщение с информацией об ошибке.
- В форумах (обсуждениях) desktop-клиента исправлена ошибка при отображении спецсимволов в сообщениях (неразрывный пробел, знак copyright и т.п.).
- В форумах (обсуждениях) desktop-клиента исправлена ошибка, которая возникала при чтении сообщения, содержащего символы ‘<’ и ‘&’.
- В форумах (обсуждениях) desktop-клиента установленные по умолчанию цвета в контролах “Цвет текста”, “Цвет выделения текста” и “Цвет блока” изменены на “Нет цвета”.
- В форумах (обсуждениях) desktop-клиента при обновлении форума теперь происходит сброс цветов в контролах “Цвет текста”, “Цвет выделения текста” и “Цвет блока”.
- В форумах (обсуждениях) desktop-клиента при вставке ссылки теперь применяются все установленные атрибуты шрифта, кроме цвета.
- В форумах (обсуждениях) desktop-клиента при обновлении форума теперь происходит сброс размера шрифта в контроле ввода сообщения.
- В форумах (обсуждениях) desktop-клиента при обновлении форума теперь происходит сброс размера шрифта на значение по умолчанию.
- В форумах (обсуждениях) desktop-клиента при вставке текста в поле ввода сообщения гарнитура шрифта теперь заменяется на стандартную.
- В форумах (обсуждениях) desktop-клиента при вводе текста в блок, а также в позиции после блока шрифт теперь сохраняет ранее установленные атрибуты.
- В форумах (обсуждениях) desktop-клиента при вводе списка шрифт теперь сохраняет цвета и атрибуты.
- В форумах (обсуждениях) desktop-клиента исправлена ошибка, из-за которой при вставке в начале сообщения нового блока свойство “цвет выделения текста” применялось к фону всего блока, а не к подложке текста.
Обновление на новую сборку¶
- В объектах, описываемых
IKrEventExtensionContext,IKrExecutionContext,IKrProcessButtonVisibilityEvaluatorContext,IKrProcessRunnerContext,IKrSecondaryProcessEvaluatorContext,IStageTypeHandlerContext, вместо свойствCardTypeID,CardTypeNameиCardTypeCaptionнеобходимо использовать соответствующие значения из свойстваCardType. - Удалены методы IStoragePathResolver.ResolveMultiple. Вместо них используйте соответствующие методы IStoragePathResolver.Resolve.
- Флаг настроек запуска бизнес-процессов по шаблону бизнес-процесса “WorkflowEngineProcessFlags.CreateNew” переименован в “WorkflowEngineProcessFlags.StartNew”.
- В API тестов некоторые методы классов RouteBuilder и PerformerBuilder переделаны на аналогичные с отложенным выполнением. Для выполнения отложенных методов необходимо вызвать метод GoAsync(). Более подробная информация содержится в документе “Руководство разработчика” в разделе “Автоматические тесты NUnit”, п. “Отложенные действия”.
- Переделана логика хранения и обработки подписок по умолчанию в шаблонах бизнес-процессов. Теперь подписки не хранятся вместе с экземпляром процесса, а хранятся в объекте шаблона бизнес-процесса. Как следствие, метод
IWorkflowInstanceService.GetCommandSubscriptionsAsyncтеперь не возвращает подписки по умолчанию.
Изменения конфигурации при обновлении¶
-
Таблицы:
-
DefaultTimeZone -
FmUserStat -
NotificationSubscriptions
-
-
Изменены библиотеки локализации.