Патч 3.6.0.3 (14.09.2021)¶
Добавление и изменение функциональности¶
- В маршрутах в этап “Настраиваемое задание” добавлена возможность завершения задания с вариантом завершения, не указанным в таблице “Варианты завершения”.
- В конструкторе бизнес-процессов в действие “Настраиваемое задание” добавлена возможность завершения задания с вариантом завершения, не указанным в таблице “Варианты завершения”.
- В карточке “Виртуальный файл” разрешено редактирование идентификатора виртуального файла и его версии.
- В web-клиенте контрол “Строка” теперь позволяет редактировать колонки типа Guid.
- В web-клиенте в маршрутах в этапе “Настраиваемое задание” разрешено изменять идентификатор варианта завершения настраиваемого задания.
- В файлы проектов тестов добавлена поддержка вызова файлов скриптов pre-build и post-build.
- В папке с исходным кодом проектных решений Source добавлен файл Tessa.EmbeddedResourceEx.targets, который включает в csproj проектов (по умолчанию это проекты тестов) обработку элемента EmbeddedResourceEx, посредством которого возможно управлять встраиванием ресурсов в сборку.
- В обсуждениях (форумах) в контроле “Текст с форматированием” desktop-клиента увеличен размер вставляемого изображения.
- В web-клиенте увеличена активная область слева для кнопки “развернуть” элемента управления “Таблица”.
- В TessaAdmin при создании нового представления по умолчанию включен флажок “EnableAutoWidth”.
- В web-клиенте добавлена возможность переключать режим просмотра pdf документа с постраничного на режим с прокруткой страниц.
Новые версии библиотек¶
.NET 5.0.9
BitMiracle.LibTiff.NET 2.4.649
DocumentFormat.OpenXml 2.13.1
HtmlAgilityPack 1.11.36
HtmlSanitizer 6.0.441
ITfoxtec.Identity.Saml2.MvcCore 4.7.0
linq2db 3.4.4
MailKit 2.15.0
Microsoft.NET.Test.Sdk 16.11.0
NLog 4.7.11
NLog.Web.AspNetCore 4.14.0
Swashbuckle.AspNetCore 6.2.1
Unchase.Swashbuckle.AspNetCore.Extensions 2.6.9
Изменения API¶
- В web-клиенте работа со средствами предпросмотра стала управляемой и более расширяемой. Теперь существующие средства базированы на вью-моделях с базовым интерфейсом IPreviewerViewModel, что позволяет расширять и управлять состоянием отдельных реализаций превью. Для этого в IFileControlManager содержится свойство previewToolViewModel, которое представляет собой текущее средство предпросмотра. Среди платформенных реализаций этого интерфейса: HtmlPreviewerViewModel, ImagePreviewerViewModel, MyPdfPreviewerViewModel, TxtPreviewerViewModel. Обращаясь к этому свойству из UI-расширения, можно менять доступное состояние. Также в IFileControlManager доступно свойство-функция previewToolFactory, задача которой - определить нужное средство предпросмотра при открытии файла. Данную фабрику можно переопределять и расширять собственными средствами предпросмотра через UI-расширения. Для разработки собственного средства предпросмотра обратитесь к разделу “Дополнительно” руководства разработчика web-расширений.
- В web-клиенте добавлена поддержка UI-расширений для диалоговых окон посредством IFormUIExtension. Унаследуйте класс от FormUIExtension аналогично расширениям desktop-клиента.
- Добавлен NuGet-пакет Tessa.Net40, позволяющий использовать ограниченные API TESSA в приложениях .NET Framework 4.0+ и .NET Standard 2.0, а именно: Typed Json, TESSA Bson, ConfigurationManager (app.json parser), Tessa.Platform.Pipes (interprocess communication), StorageObject, IValidationResultBuilder, IEdsService, ISession/SessionContext, CommandContext, интеграция API посредством Unity.
- В API тестов в класс Tessa.Test.Default.Shared.Kr.CardLifecycleCompanionExtensions добавлены методы: GetTaskAsync, GetTaskOrThrowAsync, GetValueAsync. Они являются аналогами соответствующих синхронных методов, но принимают асинхронный делегат с условием.
- В методы TessaServerSettings.SetFromConfig и PlatformExtensions.RegisterApplicationServerSettingsFromConfig добавлен опциональный параметр “flags”. Он позволяет указать параметры загрузки настроек сервера TESSA из файла конфигурации.
- В API тестов добавлена возможность опционально указывать файл лицензии. Если в файле app.json нет параметра “LicenseFile” или файл лицензии не существует, то используется временная лицензия. Параметры временной лицензии доступны в документе “Руководство разработчика” в разделе “Автоматические тесты NUnit”, п. “Лицензия”.
- В модель представления элемента управления “Таблица” GridViewModel добавлен метод RefreshRowFilteringAsync. Вызовите его после изменения фильтра строк через свойство FilterRowFunc для обновления отображаемых строк в UI.
- Удалены методы: Tessa.Platform.AssemblyHelper.IsDirectorySeparator.
- Удалено свойство Tessa.Platform.SourceProviders.AssemblySourceProviderBase.DirectoryPathWithPoint.
- Теперь при импорте карточек в случае, если импорт происходит поверх карточек, у которых отсутствуют строковые секции, эти секции будут восстановлены.
- В API тестов добавлена возможность изменения текущего запроса, выполняемого методами интерфейса ICardLifecycleCompanion<T>: Create, Save, Load, Delete. Изменение выполняется после применения соответствующего метода ICardLifecycleCompanionRequestExtender. Для централизованного управления запросами используйте объект, реализующий интерфейс ICardLifecycleCompanionRequestExtender.
- При слиянии карточек ситуация, когда секция карточки имеет ссылку на родительскую секцию, но такая секция отсутствует в типе карточки, больше не вызывает исключение, вместо этого генерируется предупреждение.
- В раздел FileSettings опций слияния добавлен флаг AlwaysUpdateContent, включение которого означает, что при импорте карточки контент файлов будет принудительно обновлен.
- При регистрации расширений теперь можно использовать делегаты для проверки значений в контексте. Они включают в себя методы .WhenFunc(IExtensionContext => bool) и .WhenFunc<TContext>(TContext => bool) для всех типов расширений, а также типизированные делегаты для большинства платформенных расширений, которые выполняют ту же функцию, но более удобны в использовании: .WhenXyzFunc(TContext => bool), где Xyz - название интерфейса расширения без ведущей I и суффикса Extension. Например, для ICardStoreExtension используйте метод .WhenCardStoreFunc(ICardStoreExtensionContext => bool). Допустимо использовать несколько делегатов для одного и того же расширения, в этом случае их результаты объединяются по “И”. При возникновении исключения в делегате оно выводится как ошибка в результате валидации.
- Из метода TestBase.InitializeDefaultLocalizationAsync удалён параметр assembly.
- В API тестов изменён механизм генерации имён временных ресурсов, используемых в тестах. Для создания временных имён используйте объект ITestNameResolver, который можно получить из Unity контейнера. Более подробная информация содержится в документе “Руководство разработчика” в разделе “Автоматические тесты NUnit”, п. “Генерация имён временных ресурсов, используемых в тестах”.
- В методах Tessa.Test.Default.Shared.Kr.ServerConfigurator.ChangeFileSourcePathWithTestSource параметр “getPathFunc” сделан обязательным.
- В API тестов добавлен метод Tessa.Test.Default.Shared.TestBase.InitializeContainerAsync, предназначенный для регистрации зависимостей в контейнере. В нём не должно выполняться получение зависимостей, кроме необходимых для инициализации контейнера, например, ITestNameResolver.
- В API тестов изменён механизм удаления временного файлового хранилища. Для управления удалением используйте свойство TestBase.RemoveFileStorageMode. Метод TestHelper.RemoveFileStoragePath удалён.
- В API тестов добавлено свойство TestBase.RemoveFileStorageMode, позволяющее управлять удалением файлового хранилища при запуске/завершении всех тестов.
- В API тестов добавлен метод TestHelper.DeleteOldFiles, предназначенный для удаления файлов и папок, если они старше указанного значения.
- В API тестов в метод Tessa.Test.Default.Shared.Kr.CardLifecycleCompanionExtensions.ModifyDocument добавлен необязательный параметр “value”, позволяющий задать добавляемое значение.
Исправления и оптимизации¶
- В CardStreamStoreStrategy исправлена ошибка NRE в случае, если запрос был отменен посредством CancellationToken.
- Исправлен переход web-клиента на страницу логина в случае, если в cookie содержался некорректный токен сессии.
- В web-клиенте в обсуждениях теперь выполняется более строгая проверка вставляемого текста и сообщений перед отображением на экране.
- В команде tadmin ConvertConfiguration исправлен вывод имени результирующего файла для рабочих мест, представлений и поисковых запросов.
- В команде tadmin ConvertConfiguration исправлена конвертация одноимённых поисковых запросов.
- В команде tadmin ConvertConfiguration при ошибке чтения файла рабочего места, представления или поискового запроса теперь выводится сообщение о том, что конвертацию данного файла произвести невозможно. Сам файл при этом не удаляется, как было прежде.
- В web-клиенте исправлена ошибка, приводившая к тому, что флаг “Модератор” был неактивен в диалоге добавления участников в новом топике до его перезагрузки.
- В web-клиенте исправлен неработающий флаг “подписать на уведомления” в диалоге добавления роли в топик.
- В маршрутах исправлена ошибка, из-за которой процесс не завершался. Например, ошибка воспроизводилась при переходе на следующую группу этапов основного процесса, не содержащую выполняемых этапов или исключённую в соответствии с условием построения, если этап “Управление процессом” был расположен во вторичном процессе. Это приводило к тому, что основной процесс не завершался.
- В редакторе бизнес-процессов исправлена доступность ссылки “Добавить роль “Вычисляемые исполнители”” при заблокированном для редактирования процессе в действиях “Выполнение задачи”, “Согласование” и “Подписание”.
- При сборке проектов тестов исправлено копирование в выходную папку файлов: NLog.config, Tessa.Linux, Tessa.Extensions.Server.Web.dll, Tessa.Extensions.Default.Server.Web.dll (и их отладочных символов pdb).
- В web-клиенте функция проверки значения ValidationFunc для контрола “Нумератор” теперь функционирует в модальном диалоге.
- В web-клиенте для контрола “Нумератор” исправлено отображение подсказки, заданной в настройках или расширениях, если пользователь выполнил действия с нумератором. Теперь отображается и заданная подсказка, и выполненное действие.
- Исправлены скрипты экспорта конфигурации Export.bat и export.sh, расположенные в папке Source. Ошибки появились в сборке 3.6.0.
- В SequenceProvider исправлена ошибка при проверке наличия карточки последовательности. Ошибка воспроизводилась, если в системе была карточка последовательности с существующим названием, что было установлено с помощью валидатора “Уникальное поле”.
- В карточке “Шаблон бизнес-процесса” исправлена ошибка, которая возникала при работе с таблицей версий бизнес-процесса в ситуации, когда конфигурация системы находилась в режиме запрета изменений.
- В web-клиенте исправлено позиционирование панели управления в пустом контроле “Обсуждения” при маленькой ширине экрана.
- Исправлена очистка кэша компиляции шаблонов бизнес-процессов при импорте карточек шаблонов бизнес-процессов.
- Исправлено определение кода SQL-ошибки для MSSQL с локализацией, отличной от английского языка. Проблема воспроизводилась при параллельном выполнении операций с карточками, которые приводили к созданию карточек последовательностей.
- В API тестов исправлена ошибка при формировании полного имени тестового метода при использовании атрибутов: DatabaseTestAttribute и DatabaseTestCaseSourceAttribute. Ошибка приводила, например, к некорректному выполнению тестов в Miсrosoft Visual Studio.
- В API тестов исправлено создание строки подключения к базе данных при использовании атрибутов: DatabaseTestAttribute и DatabaseTestCaseSourceAttribute.
- В web-клиенте по нажатии стрелок вверх/вниз больше не вызывается выпадающий список, если он уже был отображён.
- В команде tadmin ConvertConfiguration исправлен вывод результирующего сообщения.
- Исправлено отображение отрицательных десятичных чисел в desktop-клиенте. Актуально для контрола “Десятичное число” и для вывода в представлениях.
- Исправлено выполнение тестов при наличии файлов конфигурации с русскоязычными именами и со спец. символами в имени.
- В web-клиенте исправлена ошибка, приводившая к тому, что вкладка “Обсуждения” была пустой при установленном флаге “Единственное обсуждение” и отсутствии топиков.
- В TessaClient исправлен баг, из-за которого пользователю без прав администратора были недоступны программные представления.
- В редакторе бизнес-процессов исправлена ошибка NRE при запуске процесса по несуществующему тайлу.
- В web-клиенте исправлена ошибка в элементе управления “Текст с форматированием”, не позволявшая добавить изображение с помощью кнопки “Вставить изображение”.
- В обсуждениях (форумах) исправлен баг, из-за которого при попытке загрузки некоторых сообщений, добавленных в web-клиенте, в desktop-клиенте появлялась информация об ошибке загрузки сообщения.
- В API тестов исправлена инициализация локализации. Ошибка приводила к блокировкам при инициализации параллельно выполняющихся тестов, если в этот момент в выполняющемся тесте выполнялось обращение к локализации.
- Исправлено параллельное обращение к строкам и полям секций карточки.
- Исправлена работа маппинга представлений: теперь если значение параметра NULL и стоит флажок “Не добавлять параметр для NULL”, другие параметры корректно добавляются.
- В обсуждениях (форумах) исправлен дефект, из-за которого в desktop-клиенте некорректно работали форматирование и стилизация текста, а при попытке ответить на сообщение возникала ошибка.
- Исправлена ошибка, которая возникала при сохранении карточки сотрудника без указанного значения в поле “Тип входа в систему” в web-клиенте.
- В обсуждениях (форумах) исправлен баг, из-за которого при определенных способах форматирования внутри сообщений не отображались изображения.
- В типах условий “По автору”, “По подразделению”, “По типу документа” и “По контрагенту” исправлена проблема, когда при выполнении условия в структуру карточки могла добавиться секция “DocumentCommonInfo”.
- Исправлен сброс кэша типов документов при импорте.
- Исправлена ошибка в миграции ForumSearchMessages, которая возникала в ситуации, когда в имени базы данных использовались специальные символы или пробел.
- В карточке “Настройки сервера” исправлено значение по умолчанию в поле “Время между попытками входа, чтобы считать их в одной серии попыток”.
- Исправлена ошибка “Procedure or function has too many arguments specified” для СУБД MS SQL Server при вызове хранимой процедуры посредством указания CommandType.StoredProcedure.
- Оптимизировано удаление объектов бизнес-процессов, построенных на шаблонах бизнес-процессов. Медленное удаление карточек бизнес-процессов в редких ситуациях могло приводить к возникновению дедлоков при одновременном завершении нескольких процессов.
- В web-клиенте исправлена ошибка в диалоговом окне “Выбор цвета”, приводившая к отображению неинициализированных пользовательских цветов.
- Исправлена ошибка, возникающая при обработке плейсхолдеров представлений с одним или несколькими джоинами к другим секциям.
- При создании карточки “Ошибка” скорректирована локализация имён файлов с SQL-запросами.
- В web-клиенте исправлена ошибка, приводившая к тому, что иногда при разворачивании блока следующий свёрнутый блок мог частично развернуться и сразу свернуться обратно.
- В web-клиенте исправлена ошибка, приводившая к тому, что в свернутом блоке с позиционированием заголовков слева верхняя граница элементов управления не скрывалась до конца.
- В web-клиенте исправлена ошибка, приводившая к тому, что некоторые блоки переставали сворачиваться или разворачиваться.
- В web-клиенте исправлена ошибка, приводившая к тому, что некоторые блоки не оказывались в указанных в настройке расположения блоков колонках и строках.
- В web-клиенте улучшена поддержка настроек расположения блоков и исправлены ошибки, приводившие к некорректному позиционированию блоков.
- В web-клиенте в области предпросмотра добавлена поддержка файлов с расширением .sql и .tt.
- Исправлено определение файла как измененного в случае его открытия на редактирование через офисный пакет МойОфис и последующего закрытия редактора без каких-либо изменений.
- В API тестов исправлена ошибка при создании карточки сотрудника посредством методов Tessa.Test.Default.Shared.Roles.TestRoleHelper.CreateUserAsync, из-за которой не заполнялось поле PersonalRoles.FirstName.
- В API тестов исправлена ошибка при проверке результатов валидации с помощью методов ValidationAssert.HasMessages. Ошибка воспроизводилась, когда значение свойства ValidationResultItemValidator.ExpectedCount было отлично от значения по умолчанию.
- В API тестов исправлено сообщение об ошибке при неуспешной проверке методами KrAssert.StageHasOrder и KrAssert.SequenceOfStagesIs. Из-за ошибки в сообщении не выводилось название этапа.
- В API тестов исправлена ошибка при задании условного выражения группы этапов с использованием метода KrStageGroupBuilder.SetRuntimeCondition. Ошибка приводила к изменению условного выражения, используемого при построении маршрута.
- В desktop-клиенте в форумах (обсуждениях) исправлена ошибка, из-за которой вставляемые в сообщение картинки и ссылки всегда добавлялись в конец абзаца.
- В web-клиенте исправлена некорректная работа изменения границ области в представлении.
- В web-клиенте исправлена ошибка, которая возникала при попытке сохранения карточки более одного раза при наличии файлов, открытых на редактирование в Р7-Офис / OnlyOffice.
- В web-клиенте исправлена ошибка в файле service worker (sw.js), которая могла приводить к ошибкам в кэшировании запросов и файлов.
Обновление на новую сборку¶
- Обновите скрипты Export.bat и export.sh в папке Source проектного репозитория.
- История изменений в форме файла ReleaseNotes.html удалена из архива со сборкой. Подробное описание всех изменений доступно на странице “История изменений” в документации (папка Docs в архиве со сборкой), причём ссылка на историю добавлена на главной странице документации.
- В документации добавлена поддержка дистрибутива Debian 11. Это актуально и для предыдущих версий 3.6.0.x. Полный список поддерживаемых дистрибутивов (с которыми тестировалась платформа) доступен в документе “Руководство по установке на Linux”.
- В папке с исходным кодом проектных решений Source добавлен файл Tessa.EmbeddedResourceEx.targets, который включает в csproj проектов (по умолчанию это проекты тестов) обработку элемента EmbeddedResourceEx, посредством которого возможно управлять встраиванием ресурсов в сборку. Обновлены файлы проектов csproj для тестов, в которые добавлен include файла Tessa.EmbeddedResourceEx.targets. Замените использование элемента EmbeddedResource на EmbeddedResourceEx в файлах проектов тестов. Подробная информация о ресурсах в тестах содержится в руководстве разработчика в разделе “Автоматические тесты NUnit”, в п. “Работа с ресурсами используемыми в тестах”.
- Удалены методы Tessa.Platform.AssemblyHelper.EmbeddedResourcePathCombine. Вместо них используйте System.IO.Path.Combine или System.IO.Path.Join.
- Изменён метод Tessa.Platform.AssemblyHelper.GetFileNameEnumerableFromEmbeddedResources. Удалён параметр subPath. Используйте метод System.IO.Path.Combine или System.IO.Path.Join для объединения значений basePath и subPath для передачи его параметру basePath. Тип возвращаемого значения изменён на EmbeddedResourcePath, содержащий информацию о полном пути и названии ресурса. Для получения значения соответствующего пути относительного subPath используйте конструкцию: Path.Combine(subPath, EmbeddedResourcePath.Name).
- Изменена обработка параметра resourcePath метода Tessa.Platform.PlatformExtensions.GetResourceStream: удалена замена символов ‘/’ и ‘\’ на ‘.’. Указываемый путь к ресурсу должен иметь формат, соответствующий используемому механизму встраивания. Если используется элемент EmbeddedResourceEx, то для преобразования пути можно использовать методы: Tessa.Platform.AssemblyHelper.GetResourcePath и ConvertToEmbeddedResourcePath. Используйте параметр LogicalName для задания имени ресурса, не зависящего от алгоритма преобразования имени. Информацию об именовании ресурсов можно найти в: https://docs.microsoft.com/en-us/dotnet/core/resources/manifest-file-names.
- При работе с СУБД PostgreSQL рекомендуется указать в строке подключения в app.json сервисов web и chronos параметры MaxAutoPrepare=50 и AutoPrepareMinUsages=20.
- В API тестов изменён механизм инициализации карточки параметров сервера, создаваемой классом Tessa.Test.Default.Shared.Kr.ServerConfigurator. Для инициализации вызовите метод ServerConfigurator.InitializeServerInstance после ServerConfigurator.Create или ServerConfigurator.CreateOrLoadSingleton. Подробности в документе “Руководство разработчика” в разделе “Автоматические тесты NUnit”, п. “Настройка файлового хранилища при создании тестовой базы данных”.
- В API тестов вместо методов TestHelper.CreateServerContainerBase и TestServerHelper.CreateServerContainer используйте TestHelper.InitializeServerContainerBase и TestServerHelper.InitializeServerContainer соответственно.
- В API тестов удалены перечисленные методы, используйте предлагаемую замену: TestHelper.GetFileStoragePath -> TestBase.GetFileStoragePathAsync; TestHelper.CreateDefaultFileSourceSettings -> TestBase.CreateDefaultFileSourceSettingsAsync; TestHelper.CreateContentStrategy -> TestBase.CreateContentStrategyAsync; TestHelper.GetFixtureTypeCode -> TestBase.GetFixtureNameAsync.
- В API тестов удалён параметр useDatabaseAsDefault в конструкторе ServerTestBase(bool). Используйте свойство ServerTestBase.UseDatabaseAsDefault.
Изменения конфигурации при обновлении¶
-
Таблицы:
-
WorkflowEngineNodes
-
WorkflowEngineProcesses
-
-
Миграции:
ForumSearchMessages
-
Типы:
-
KrVirtualFile
-
OnlyOfficeSettings
-
-
Карточки:
-
AuthorCondition
-
DepartmentCondition
-
DocTypeCondition
-
PartnerCondition
-
Server settings (settings)
(необязательное изменение)
-
-
Изменены библиотеки локализации.