Патч 3.6.0.1 (04.07.2021)¶
Добавление и изменение функциональности¶
- В файлах app.json для всех сервисов и приложений теперь указано включение содержимого файлов app-*.json, причём их содержимое переопределит строки в app.json, расположенные по тем же ключам. Это позволяет удобно создавать и подключать файлы вида app-mapping.json, содержащие специфичные настройки, которые могут, например, применяться для одного сервера и не применяться для другого.
- В файлах app-*.json и в других файлах, которые объединяются с конфигурационными файлами app.json для всех сервисов и приложений, укажите ключ с суффиксом “!!”, например, “ConnectionStrings!!”, чтобы перезаписать значение по этому ключу вместо объединения значений.
- В файлах app.json добавлена возможность в проверках “.if” указывать переменные окружения. Если указать только имя переменной, например, “VS140COMNTOOLS”, то, как и для символов windows/linux, проверяется их наличие или отсутствие “!VS140COMNTOOLS”. Через знак равенства можно проверить значение переменной: “ASPNETCORE_ENVIRONMENT=Development”, для проверки неравенства укажите “!ASPNETCORE_ENVIRONMENT=Production”.
- В файле app.json для веб-сервиса и для Chronos доступен опциональный раздел FileSourceOverrides в группе Settings, в котором можно переопределить настройки файловых хранилищ, указанные в карточке “Настройки сервера”, в т.ч. пути, по которым доступны файловые папки. Примеры и информация по настройкам доступны в руководстве разработчика в разделе “Изменение настроек файловых хранилищ через конфигурационный файл”.
- В файле app.json для TessaClient добавлено свойство “FilePreview64Bit”, в котором по расширению файла указывается разрядность приложения предпросмотра (false - 32-битный предпросмотр, true - 64-битный предпросмотр). Если разрядность не указана, то она определяется автоматически (по ключам реестра), и если не удалось найти информацию по разрядности, то по умолчанию разрядность выставляется в соответствии с настройкой “UseFilePreview64Bit”.
- В базовых классах ServerTestBase и HybridClientTestBase добавлено удаление временного файлового хранилища перед выполнением тестов.
- В диалог импорта рабочих мест в TessaAdmin добавлен флажок “Удалить перед импортом все рабочие места из базы данных”, при установке которого перед импортом будет очищен текущий справочник рабочих мест.
- В карточку вторичного процесса добавлен параметр “Не отображать сообщение при отсутствии этапов, доступных для выполнения”.
- Контрол “Строка” теперь позволяет редактировать колонки типа Guid.
- В комментарий SQL-запроса при выборке данных для представления добавлена информация о наличии прав администратора у текущего пользователя.
- В web-клиенте добавлена возможность открытия выпадающего списка автокомплита с помощью стрелок вверх/вниз на клавиатуре.
- Во встроенном предпросмотре PDF для desktop-клиента улучшена навигация: при прокрутке колесом мыши до верхнего или нижнего края страницы, она автоматически перелистывается. Аналогично при управлении с клавиатуры стрелками вверх/вниз и PageUp/PageDown. Также при переходе на новую страницу она теперь всегда прокручивается по вертикали наверх. Поведение можно отключить из расширений установкой свойства IFilePagingControlModel.ChangePagesOnScroll.
Консольная утилита tadmin¶
- Для команды ImportWorkplaces добавлен параметр /c, позволяющий перед импортом очистить текущий справочник рабочих мест.
Новые версии библиотек¶
.NET 5.0.7
CsvHelper 27.1.1
HtmlAgilityPack 1.11.34
Kerberos.NET 4.5.110
linq2db 3.4.1
MailKit 2.13.0
Microsoft.CodeAnalysis.CSharp 3.10.0
Microsoft.Data.SqlClient 3.0.0
Npgsql 5.0.7
NUnit3TestAdapter 4.0.0
SixLabors.ImageSharp.Drawing 1.0.0-beta13
StackExchange.Redis 2.2.62
Изменения API¶
- Реализация интерфейса IKrProcessLauncher доступна на клиенте, который не имеет зависимости от сборки Tessa.UI. Это позволяет запускать маршрут, например, из команды tadmin.
- В API тестов добавлен метод Tessa.Test.Default.Shared.Kr.CardLifecycleCompanionExtensions.GetValue<T>(ICardLifecycleCompanion, string, string), используемый для того, чтобы упростить получение значения строковой секции карточки.
- В API тестов удалён класс Tessa.Test.Default.Client.TestClientHelper.
- В API тестов в KrSecondaryProcessBuilder добавлены методы SetNotMessageHasNoActiveStages и GetNotMessageHasNoActiveStages, позволяющие задать и получить значение, соответствующее параметру “Не отображать сообщение при отсутствии этапов, доступных для выполнения” в карточке вторичного процесса.
- В API тестов в метод KrSecondaryProcessBuilder.SetProcessButton добавлен параметр “order”, позволяющий задать значение, соответствующее полю “Порядок” в карточке вторичного процесса.
- В API тестов добавлен метод Tessa.Test.Default.Shared.Kr.KrTestHelper.LaunchKrProcessWithDialogAsync(ICardRepository, KrProcessInstance, CancellationToken), позволяющий запускать вторичный процесс, при выполнении которого открывается диалог.
- В маршрутах добавлена возможность задания дополнительной информации при запуске основного процесса через отправку сигнала. Более подробная информация по запуску маршрутов содержится в разделе “Маршруты” руководства разработчика.
- В маршрутах добавлена возможность указания флага KrConstants.Keys.NotMessageHasNoActiveStages в дополнительной информации объекта KrProcessInstance, указываемого при запуске процесса, для отключения отображения сообщения при отсутствии этапов, доступных для выполнения. Параметр позволяет отключить указанное сообщение при запуске основного процесса или принудительно отключить его при запуске вторичного процесса вне зависимости от значения параметра “Не отображать сообщение при отсутствии этапов, доступных для выполнения”, указанного в карточке вторичного процесса.
- В метод HandlerHelper.AppendToCompletedTasksWithPreparing добавлен необязательный параметр, позволяющий изменить задание перед сохранением в Stage.InfoStorage по ключу KrConstants.Keys.Tasks.
- В API тестов в методы ChangeFileSourcePathWithTestSource(int) и ChangeFileSourcePathWithTestSource(Func<CardRow, bool>) класса ServerConfigurator добавлен необязательный параметр “getPathFunc”, позволяющий задать путь к файловому хранилищу. Если он не задан, то используется, значение возвращаемое методом TestHelper.GetFileStoragePath(bool).
- В API тестов добавлена возможность для действия TestAction настроить параметры выполнения.
- Добавлен метод SubtaskStageTypeHandler.RevokeSubTasksAsync(IStageTypeHandlerContext, CardTask), позволяющий завершать дочерние задания типов, возвращаемых методом SubtaskStageTypeHandler.GetSubTaskTypesToRevoke.
- Добавлено свойство IFilePagingControlModel.ChangePagesOnScroll, которое позволяет отключить автоматическое перелистывание страниц в предпросмотре PDF посредством колеса мыши или с клавиатуры. Пример работы с интерфейсом IFilePagingControlModel имеется в расширении CarUIExtension. По умолчанию свойство равно true.
Исправления и оптимизации¶
- В карточке настроек “Р7-Офис / OnlyOffice” поле “Адрес подключения” теперь не указано как обязательное. Если поле пустое, то интеграция с офисом считается ненастроенной.
- В web-клиенте при работе с Р7-Офис / OnlyOffice редактором добавлена проверка на доступность API-скрипта. При открытии предпросмотра или открытии нового окна с редактором, если скрипт редактора не был загружен успешно, появляется сообщение об ошибке.
- В web-клиенте исправлено расширение на инициализацию Р7-Офис / OnlyOffice. Расширение гарантированно вызывается только один раз.
- В web-клиенте исправлен просмотр и редактирование документа в Р7-Офис / OnlyOffice, если файл был ранее переименован.
- В web-клиенте исправлено открытие файла в Р7-Офис / OnlyOffice, когда браузер блокировал открытие новой вкладки. Теперь появляется сообщение, что необходимо разрешить работу всплывающих окон.
- В web-клиенте исправлена доступность открытия файла в Р7-Офис / OnlyOffice в случае, когда формат файла не поддерживается. Теперь открытие на чтение или редактирование недоступно, если формат файла не поддерживается редактором.
- В web-клиенте при работе с редактором Р7-Офис / OnlyOffice добавлена проверка на предмет открытых на редактирование файлов перед закрытием, сохранением и обновлением карточки.
- Сообщения о необработанных исключениях в tadmin теперь всегда записываются в stderr, тогда как ранее некоторые исключения могли записываться в stdout.
- Исправлена периодическая проверка уведомлений по новым заданиям в TessaClient.
- Исправлено удаление хранимых процедур после изменения представлений для СУБД PostgreSQL.
- В TessaClient в карточках исправлен вывод необработанных исключений для плитки “Сохранить”.
- В конструкторе бизнес-процессов исправлена ошибка сохранения экземпляров процесса через редактор.
- В конструкторе бизнес-процессов исправлена ошибка открытия логов экземпляра процесса пользователями, не являющимися администраторами системы, но имеющими доступ.
- В desktop-клиенте исправлено отображение представлений, если расширение удаляет все кнопки из панели-тулбара (где расположена кнопка обновления таблицы).
- В TessaClient исправлены плитки “Выгрузить все данные” и “Выгрузить текущую страницу”, если расширение заменило отображение представления как таблицы.
- В TessaAdmin исправлена ошибка при выборе нескольких значений через представление в фильтре узла рабочего места. Ошибка воспроизводилась, если в контроле “Список” в диалоге по троеточию выбиралось значение через кнопку множественного выбора.
- Оптимизировано потребление памяти при выполнении цепочек расширений.
- Исправлено удаление сессии при логауте из web-клиента.
- Исправлены проблемы предпросмотра файлов в desktop-клиенте через обработчики предпросмотра, вызванные некорректным определением разрядности обработчиков. Чаще всего исправленные проблемы вызывались предпросмотром файлов .pdf посредством Adobe Reader.
- В клиентских тестах исправлена регистрация зависимостей в инициализируемом контейнере.
- ITreeItem.LastUpdateTime теперь всегда возвращает время в UTC.
- Исправлена проверка времени обновления узла рабочего места в расширении AutomaticNodeRefreshExtension.
- В API тестов изменён тип первого параметра метода KrTestHelper.CompleteDialogAsync(CardLifecycleCompanion, ICardFileContainer, string, CardTaskCompletionOptionSettings, CardTask, ISession, CancellationToken) с CardLifecycleCompanion на ICardLifecycleCompanion<T>.
- Оптимизировано обращение к кэшу настроек типов карточек и документов IKrTypesCache.
- В TessaAdmin исправлена ошибка, из-за которой при отмеченных в диалоге экспорта рабочих мест флажках “Экспортировать используемые представления” и “Экспортировать используемые поисковые запросы” в выгружаемый файл попадали не все используемые представления и запросы.
- Исправлена ошибка в команде tadmin ExportWorkplaces, из-за которой при установленных параметрах /v и /s в выгружаемый файл попадали не все используемые представления и запросы.
- В API тестов в классах ServerTestBase и HybridClientTestBase исправлена ошибка NRE, если значение свойства IDbScopeContainer.DbFactory равно null. В этом случае подключение выполняется к базе данных, указанной в строке подключения с именем “default”. Ошибка воспроизводилась при отсутствии атрибута SetupDbScopeAttribute или его наследника, применённого к классу, содержащему тесты.
- В API тестов исправлена ошибка при инициализации значения свойства TestBase.TestConfigurationBuilder, если значение свойства IDbScopeContainer.DbScope равно null. Ошибка воспроизводилась при отсутствии атрибута SetupDbScopeAttribute или его наследника, применённого к классу, содержащему тесты.
- В маршрутах исправлена очистка полей секции KrApprovalCommonInfo при создании копии карточки с запущенным процессом. Ошибка затрагивала следующие поля: ProcessOwnerID, ProcessOwnerName, CurrentHistoryGroup, NestedWorkflowProcesses.
- В маршрутах в этапе “Типизированное задание” исправлен учёт значения свойства Stage.WriteTaskFullInformation при сохранении информации о завершённом задании в Stage.InfoStorage по ключу KrConstants.Keys.Tasks.
- В TessaClient устранено зависание при обновлении узла дерева, содержащего сабсеты с одинаковыми именами.
- В web-клиенте исправлена локализация для заголовка окна предупреждения.
- В web-клиенте исправлена ошибка с округлением десятичных чисел большой точности.
- В файле extensions.xml, который генерируется для Chronos, удалена ссылка на Tessa.Extensions.Server.Web.
- Увеличен отступ между колонками в карточке “Настройки электронной подписи”.
- Оптимизирован импорт типов карточек в TessaAdmin.
- Исправлено копирование нативной библиотеки libtessa.so в выходную папку при подключении NuGet-пакета Tessa.Linux.
- При перерасчёте заместителей исправлена проблема, когда в ходе потокового перерасчёта заместителей система сперва удаляла некоторые строки с заместителями, а затем их восстанавливала.
- В web-клиенте исправлена локализация заголовка для контрола “Текст с форматированием”.
- Исправлено изменение настроек файловых хранилищ с автоматическим сбросом кэша настроек, т.е. без перезапуска веб-сервисов после импорта или изменения карточки настроек. Ошибка появилась в сборке 3.6.0.
- В desktop-клиенте оптимизировано отображение карточки с большим количеством контролов “Ссылка” и “Список”.
- В web-клиенте исправлена ситуация, когда сообщение об ошибке в окне предпросмотра не переносилось на новую строку, а вызывало горизонтальный скролл.
- В TessaAdmin оптимизировано отображение списка представлений, узлов рабочих мест, диалогов экспорта/импорта представлений и рабочих мест, а также конструкторов диаграмм desktop-клиента.
- Исправлена проблема отсутствия доступа обычным пользователям к полю “Подразделения” в карточке сотрудника, когда карточки “Сотрудник” и “Подразделение” входят в типовое решение, и на редактирование этого поля выдан доступ.
- В маршрутах в обработчиках этапов “Согласование” и “Подписание” оптимизировано получение списка типов для отзываемых дочерних заданий.
- Оптимизировано открытие карточек, добавленных в типовое решение, у которых присутствует большое количество записей в TaskHistory.
- В web-клиенте исправлено отображение тулбара в элементе управления “Текст с форматированием” в случае, если недостаточно свободного места по горизонтали. Теперь тулбар переходит в постраничный режим.
- В конструкторе бизнес-процессов в действии “Настраиваемое задание” оптимизировано изменение идентификатора варианта завершения настраиваемого задания.
- В маршрутах в этапе “Настраиваемое задание” оптимизировано изменение идентификатора варианта завершения настраиваемого задания.
- В web-клиенте исправлена ошибка, из-за которой сабсеты с одинаковыми именами могли пропадать при обновлении узла.
- В маршрутах в параметрах этапа “Типизированное задание” удалена некорректная всплывающая подсказка для поля “Тип задания”.
Обновление на новую сборку¶
- Обновите файл app.json для сервисов web и chronos.
- Обновите файл app.json для приложения TessaClient, если он изменялся в проектном решении.
- Обновлена документация по поддерживаемым версиям дистрибутивов ОС Linux. Изменения актуальны также для релизной сборки 3.6.0. Добавлена поддержка дистрибутивов Fedora 32, 33, 34. Прекращена поддержка Fedora 30, OpenSUSE 42.3, Ubuntu 18.10, 19.04 (.NET 5.0 не поддерживает эти дистрибутивы, также их поддержка прекращена у вендора). Полный список поддерживаемых дистрибутивов (с которыми тестировалась платформа) доступен в документе “Руководство по установке на Linux”.
- Во всех файлах проектов расширений .csproj теперь указано значение LangVersion latest. В текущей реализации это соответствует версии C# 9.0. Укажите значения в ваших проектах расширений, если актуально получить языковые возможности последней доступной версии C# при разработке расширений.
- В коде проектных расширений, в которых использовался объект KrProcessClientLauncher для запуска маршрута на клиенте, необходимо использовать KrProcessClientUILauncher для поддержки параметров, которые определяют использование объектов в Tessa.UI. Для запуска маршрута рекомендуется получать зависимость IKrProcessLauncher из Unity-контейнера. Более подробная информация по запуску маршрутов содержится в разделе “Маршруты” руководства разработчика.
- Изменены возвращаемые значения для методов объекта IKrTypesCache. Проверьте использование этого объекта в проектных расширениях.
Изменения конфигурации при обновлении¶
-
Представления:
WorkflowEngineLogs
-
Таблицы:
-
KrApprovalHistory
-
KrUniversalTaskActionButtonsVirtual
-
KrUniversalTaskOptionsSettingsVirtual
-
TEST_CarMainInfo
-
-
Типы:
-
Car
-
KrTypedTaskStageTypeSettings
-
KrUniversalTaskAction
-
KrUniversalTaskStageTypeSettings
-
OnlyOfficeSettings
-
SignatureSettings
-
-
Изменены библиотеки локализации.