Патч 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.9BitMiracle.LibTiff.NET 2.4.649DocumentFormat.OpenXml 2.13.1HtmlAgilityPack 1.11.36HtmlSanitizer 6.0.441ITfoxtec.Identity.Saml2.MvcCore 4.7.0linq2db 3.4.4MailKit 2.15.0Microsoft.NET.Test.Sdk 16.11.0NLog 4.7.11NLog.Web.AspNetCore 4.14.0Swashbuckle.AspNetCore 6.2.1Unchase.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)(необязательное изменение)
-
-
Изменены библиотеки локализации.