Патч 3.6.0.5 (04.12.2021)¶
Добавление и изменение функциональности¶
- В TessaAdmin добавлено splash-окно для загрузки и исправления типов на вкладке “Карточки”.
- В web-клиенте для элемента управления “Текст с форматированием” добавлено ограничение длины описания и адреса ссылки (1024 и 1016 символов соответственно).
- В контрол “Нумератор” добавлена настройка “Максимальная длина”, которая ограничивает длину полного номера, вводимого вручную. Укажите пустое значение (по умолчанию), чтобы длина определялась автоматически в соответствии со схемой данных. Укажите в настройке значение “max” (без кавычек), чтобы не ограничивать вводимую длину, несмотря на тип колонки в схеме данных (это прежнее поведение).
- Добавлена возможность пропускать Windows-аутентификацию при запуске desktop-приложений, указав параметр
-skipWinAuth
или настройку"SkipWinAuth": true
вapp.json
. Если при этом не указаны логин/пароль, то вместо попытки выполнить Windows-аутентификацию отображается диалог ввода логина/пароля. В параметры сервера в Tessa Applications добавлена настройка “Отключить аутентификацию Windows”, актуальная для приложений, запущенных из менеджера приложений. Для ссылокtessa://tessaappmanager?Action=ServerParam
также добавлен параметрSkipWinAuth=true/false
. За описанием настроек обратитесь к руководству администратора. - В карточке “Шаблон бизнес-процесса” в таблицу “Кнопки бизнес-процесса” добавлена колонка “Есть условие”, которая показывает, есть ли в настройках кнопки дополнительное условие.
- В карточке “Шаблон бизнес-процесса” в таблицу “Кнопки бизнес-процесса” в форму строки добавлено раскрытие блока с дополнительным условием при открытии формы, если в настройках кнопки задано условие. Также для блока с дополнительным условием добавлена метка, показывающая, задано ли условие кнопки.
- В web-клиенте окно “О программе” теперь выводит список установленных патчей.
- В desktop-клиенте для контролов “Ссылка” и “Список” в контекстном меню для выбранного значения добавлен пункт “Удалить”. Пункт меню недоступен, если контрол доступен только для чтения. Такое удаление аналогично удалению выделенного элемента клавишами Delete или Backspace.
- В настройки контролов “Ссылка” и “Список” добавлен флаг “Кнопка очистки значения”, при указании которого отображается кнопка-крестик, очищающая значения в поле.
- При экспорте карточек шаблонов бизнес-процесса все скрипты процесса выгружаются во внешние файлы. Файлы расположены в подпапке с именем карточки.
- В web-клиенте в окне “О программе” логотип теперь соответствует файлу
wwwroot/images/logo-about.png
, который можно заменить для брендирования платформы. - В расширении “Список файлов в представлении” добавлена поддержка перетаскивания файлов из контрола представления.
- В расширении “Список файлов в представлении” добавлена отмена предпросмотра файла при открытии файла по двойному клику.
- При экспорте схемы данных в файловую систему в файлах
*.tsp
и*.tsd
объекты теперь пишутся в алфавитном порядке. - Добавлено расширение “Открыть карточку из представления” для контрола “Представление”, позволяющее открывать из него карточки по двойному клику. Подробное описание смотрите в соответствующем разделе документации.
- В файл
app.json
веб-сервиса добавлена настройкаServiceWorkerEnabled
, посредством которой можно отключать регистрацию service worker в веб-клиенте. По умолчаниюtrue
. - Копирование ссылок
tessa://
в буфер обмена в desktop-приложениях теперь использует алиас текущего приложения из объектаIApplicationDescriptor
. Это позволяет задействовать стандартные команды копирования в собственных приложениях, разработанных на проекте, у которых будет свой алиас. Например, если открыть карточку в таком приложении, то кнопка “Копировать ссылку” скопирует в буфер обмена ссылку на карточку с алиасом этого приложения. - Реализована возможность загружать файлы в карточки задач. Пример - в расширениях типового решения
TaskEnableAttachFilesExampleUIExtension
,TaskFilesExampleGetExtension
иTaskFilesExampleStoreExtension
. - В web-клиенте для элемента управления “Текст с форматированием” переработаны операции редактирования списков и добавлены команды “Очистить все форматирование” и “Удалить блок”.
- Написана статья базы знаний Создание настольного (desktop) приложения, использующего API TESSA.
- В web-клиенте для элемента управления “Текст с форматированием” убран нижний лимит для вставляемых изображений (был 10 пикселей) и улучшено сжатие изображений для превью.
Консольная утилита tadmin¶
- Из команды
ConvertConfiguration
удалена функциональность конвертации экземпляров карточек и библиотек карточек. - Добавлена команда
ConvertCards
. Данная команда преобразует файлы карточек и файлы библиотек карточек из старых форматов в новые (режимUpgrade
), или обратно (режимDowngrade
). Подробное описание команды содержится в руководстве администратора.
Новые версии библиотек¶
.NET 5.0.12
CsvHelper 27.2.1
DocumentFormat.OpenXml 2.14.0
HtmlAgilityPack 1.11.39
HtmlSanitizer 6.0.453
ITfoxtec.Identity.Saml2.MvcCore 4.7.1
Kerberos.NET 4.5.124
linq2db 3.6.0
Microsoft.CodeAnalysis.CSharp 4.0.1
Microsoft.Data.SqlClient 4.0.0
Microsoft.NET.Test.Sdk 17.0.0
NLog 4.7.12
NUnit3TestAdapter 4.1.0
QRCoder 1.4.2
StackExchange.Redis 2.2.88
Изменения API¶
- В web-клиенте добавлен метод
IControlViewModel.commitChanges
, аналогичный методу в desktop-клиенте. - Расширено API, связанное с внутренней реализацией экспорта и импорта карточек. Добавлены интерфейсы:
IStorageMappingHandler
,IStorageMappingResolver
,IStorageMappingProvider
,ICardExternalSourceLogic
. Подробная информация в документации по API. - Делегаты в классе
PropertyGridSelectorSettings
сделаны асинхронными. Они используются при формировании настроек в конструкторе карточек, что актуально при разработке контролов, валидаторов и других элементов конструктора карточек. - Интерфейс
IEDSProvider
и его реализация изменены для обеспечения расширяемости по выбору настроек для подписания и проверки подписи. Создайте класс, унаследованный отEDSProvider
, и переопределите его методы. В них параметрinfo
соответствует параметрам запросаRequest.Info
для типа запросаDefaultRequestTypes.CAdESSignature
. Со стороны клиента напишите расширениеCardRequestExtension
, использующееcontext.Request.Info
для передачи информации из текущего объектаUIContext.Current
(обычно из карточки). Пример таких расширений в руководстве разработчика. - В клиентскую команду “Открыть карточку” (
DefaultCommandTypes.OpenCard
) добавлены необязательные параметрыTypeID
иTypeName
, идентификатор и имя типа открываемой карточки соответственно. Подробная информация о клиентских командах содержится в руководстве разработчика в разделе “Маршруты”, в п. “Клиентские команды”. - Константа
WorkflowEngineHelper.ExtendedBusinessProcessTemplateTypeID
, определяющая тип карточки “Расширенный шаблон бизнес-процесса”, помечена какObsolete
. Она используется только для поддержки обратной совместимости с ранее экспортируемыми карточками. Вместо неё необходимо использовать константуCardHelper.BusinessProcessTemplateTypeID
. - Усовершенствовано API тестов для сценариев удаления карточек с помощью объектов, реализующих интерфейс
ITestCardManager
. - Усовершенствовано API тестов для сценариев работы с отложенными действиями.
- Добавлен интерфейс
IStorageValuesKeeper
, механизм, который позволяет запоминать и восстанавливать значения из хранилища (storage) по заданным путям. Подробности с примерами в руководстве разработчика. - Добавлен сервис
IBackgroundServiceQueue
для выполнения неблокирующих фоновых задач в веб-приложении TESSA в качестве ASP.NET Core Hosted Service. - При регистрации расширений методом
WhenApplications
указанные идентификаторы приложений добавляются к списку идентификаторов приложений, заданных в предыдущей регистрации этого же расширения, а не переопределяют список. - Для контрола “Десятичное число” добавлена возможность изменить количество знаков после запятой посредством метода модели представления
DecimalBoxViewModel.SetDigitsAfterSeparatorAsync
в desktop-клиенте или через свойствоDecimalBoxViewModel.digitsAfterSeparator
в web-клиенте. - В метод
IConsoleLogger.LogExceptionAsync
добавлен необязательный параметрwarning
. Если его указать какtrue
, то исключение выводится в лог NLog на уровне логирования Warn. - Добавлено свойство
IFormViewModel.TabVisibility
, посредством которого в desktop-клиенте можно скрыть строку со вкладками карточки. - В контекст обработки
IWorkflowEngineContext
и для компилируемого объектаWorkflowEngineCompiledBase
добавлено свойствоParameters
с типомIDictionary<string, object>
, которое содержит все параметры выполняемого скрипта действия. Ключом для получения параметра является имя параметра скрипта. - В компилируемом объекте
IWorkflowEngineCompiled
в методыExecuteActionAsync
иExecuteFuncAsync
добавлен параметр с типомWorkflowActionMethodDescriptor
, в котором необходимо передавать дескриптор запускаемого метода.
Исправления и оптимизации¶
- В web-клиенте исправлена ошибка в элементе управления “Текст с форматированием”, приводившая к некорректному расчету высоты и ширины вставляемых изображений, если они меньше максимально разрешенного размера.
- В web-клиенте в обсуждениях исправлена ошибка, приводившая к уменьшению размера шрифта ссылок в сообщении после редактирования.
- В web-клиенте исправлена ошибка, приводившая к тому, что кнопка “Развернуть” не отображалась в элементе управления “Текст с форматированием”, если включен режим “Только для чтения”.
- В web-клиенте исправлен баг, приводивший к появлению изменений в структуре карточки после открытия, если в ней есть элемент управления “Текст с форматированием” и из него были удалены изображения перед предыдущим сохранением.
- Оптимизировано использование типов диалогов посредством API в TessaClient и в конструкторах представлений и карточек в TessaAdmin.
- Исправлены утечки памяти и ошибки NRE, связанные с использованием типов диалогов в desktop-клиенте.
- В конструкторе бизнес-процессов в действии “Таймер” исправлена доступность поля “Условие остановки таймера” в ситуации, когда процесс не был заблокирован на редактирование.
- Исправлено формирование обратных ссылок в письмах мобильного согласования.
- Исправлена обработка пустого заголовка
Content-Encoding
при обработке ответов на запросы от Exchange Web Services. Исправление соответствует версии библиотекиMicrosoft.Exchange.WebServices.NETStandard 2.0.0-beta2
. - В web-клиенте в контроле автокомплита исправлен ручной ввод.
- В API тестов исправлена ошибка в методе
TestCardHelper.RepairCardRowOrders
, из-за которой не устанавливалось состояниеCardRowState.Modified
при изменении поля, содержащего порядковый номер. - В методе
KrProcessSharedHelper.RepairStorageRowsOrders
исправлена ошибка, приводившая к изменению поляOrder
, а не указанного в параметреorderField
. - В маршрутах исправлена ошибка при одновременном удалении и пропуске этапа.
- В маршрутах в шаблоне этапов “Возврат на доработку” исправлена локализация названия этапа “Управление процессом” при использовании локализации, отличной от русского языка.
- В маршрутах исправлена ошибка, которая приводила к некорректному определению наличия изменений в порядке существующих этапов после добавления ручного этапа. Ошибка появилась в версии 3.6.0.4.
- В конструкторе бизнес-процессов в таблице с кнопками исправлена проблема, когда в списках “Состояния” и “Доступно ролям” не удалялись дубли.
- В конструкторе бизнес-процессов исправлена проблема, когда положение контролов для редактирования расширений кнопки было некорректным, если в редакторе расширения кнопки использовались несколько вкладок.
- Кнопка “Копировать” в окне со списком загруженных расширений и патчей теперь копирует в буфер обмена информацию по патчам.
- Исправлены значения констант:
DefaultCardTypes.KrStageCommonMethodTypeName
иDefaultCardTypes.KrStageTemplateTypeName
. Они содержали неправильные имена типов карточек. - Оптимизирована загрузка типов карточек для СУБД MS SQL Server.
- Оптимизирована работа плагина асинхронной обработки бизнес-процессов.
- Исправлена регистрация ряда расширений для классов
Registrator
в методахInitializeExtensions
, тогда как она должна выполняться в методеRegisterExtensions
. - В API тестов исправлена ошибка, возникающая при удалении временного файлового хранилища во время инициализации тестов.
- Исправлены возможные ошибки с неосвобождаемыми блокировками на запись карточки и на запись настроек сотрудника из-за отмены запроса по
CancellationToken
. - Исправлен скрипт миграции для версии 3.4.0, в котором не добавлялась секция
TaskCommonInfo
для заданий типаKrUniversalTask
, используемых в этапах маршрутов “Настраиваемое задание”. Ошибка приводила к тому, что карточка с заданием этого типа переставала открываться. Актуально при обновлении с версии 3.3.1 или более ранней. - Исправлена ошибка, которая возникала при импорте карточки, когда прикрепленные файлы присутствуют только в сателлитах, но не в самой карточке.
- Исправлена отправка почты посредством Exchange, если в настройке
NoticeMailer.ExchangeFrom
указана пустая строка. В этом случае используется настройкаNoticeMailer.ExchangeUser
в соответствии с документацией. - В web-клиенте исправлена ошибка, из-за которой не очищался контрол выбора даты/времени.
- В web-клиенте исправлена работа фильтров представления с
decimal
типом. - В маршрутах исправлена ошибка, из-за которой этап, добавленный с помощью метода
IKrScript.AddStageAsync
илиIKrScript.GetOrAddStageAsync
, изменял порядок после пересчёта маршрута. - В web-клиенте исправлено отображение длинных наименований карточки в диалоге при подтверждении удаления карточки.
- Исправлена ситуация, когда в топике форумов (обсуждений) пользователь мог видеть кнопку “Подписаться” вместо кнопки “Отписаться”, если он включён в участники обсуждения и через роль (посредством API), и как сотрудник.
- Исправлена обработка ошибок при отправке уведомлений по новым сообщениям в обсуждениях.
- Оптимизирован поиск отписавшихся от обсуждений пользователей в некоторых сценариях.
- Исправлена возможность заменить зависимость
IForumProviderStrategy
в регистраторе расширений на сервере. Ранее зарегистрированная зависимость в контейнере Unity игнорировалась платформенными расширениями. - Исправлена ошибка, когда при экспорте карточки поверх уже имеющейся в экспортируемом файле происходило лишнее обновление информации.
- В процессе работы плагина конвертации файлов каждый период обслуживания теперь пересоздаются все объекты API и выполняется повторное чтение настроек из базы данных. Это предотвращает проблемы, когда изменённые настройки файловых хранилищ не актуализировались в Chronos, если он не перезапускался и не был настроен сброс кэшей посредством Redis. Период указывается в
app.json
в настройкеFileConverter.MaintenancePeriod
, по умолчанию это 1 час. - В конструкторе бизнес-процессов в действии “Настраиваемое задание” в таблице “Варианты завершения” исправлена проблема, из-за которой можно было добавить вариант завершения с неуникальным идентификатором.
- В маршрутах в этапе “Настраиваемое задание” в таблице “Варианты завершения” исправлена проблема, из-за которой можно было добавить вариант завершения с неуникальным идентификатором.
- В web-клиенте исправлена ошибка при SAML аутентификации, которая вызывала постоянные переходы на окно логина.
- В desktop-клиенте в контролах “Ссылка” и “Список” исправлено применение настройки “Расширенная локализация” при наличии настройки “Формат поля”.
- Устранена ошибка, из-за которой в контроле “Представление” не учитывалась сортировка, указанная в представлении.
- Асинхронный пересчёт участников при некоторых действиях в обсуждениях теперь выполняется посредством
IBackgroundServiceQueue
, что гарантирует их корректное завершение при остановке веб-сервиса. - В схеме данных исправлена ошибка, когда при работе с файловой схемой данных при изменении имени или библиотеки программных объектов (функции, процедуры, миграции) старые файлы
*.ms.sql
и*.pg.sql
этих объектов, при их наличии, не удалялись. - Исправлена ошибка, возникающая при попытке изменить участника обсуждения с типом “Роль” в ситуации, если права супермодератора не были запрошены в карточке, хотя фактически они есть.
- Исправлен файл
Fixes\KrApprovalList\KrApprovalList.cs
для использования устаревших расширений на лист согласования для текущей версии API. - В web-клиенте исправлена ошибка, из-за которой выполнялись браузерные команды при многократном нажатии горячих клавиш карточки.
- Оптимизировано обращение к кэшам локализации, карточек и представлений сервером приложений.
- В web-клиенте исправлена проверка обновления Deski, где мог предлагаться даунгрейд на старую версию Deski в качестве обновления.
- В API тестов исправлена ошибка
ArgumentOutOfRangeException
при удалении временного файлового хранилища. Ошибка возникала, если был снят флаг, разрешающий удаление временной базы данных (SetupTempDbAttribute.RemoveDatabase = false
), и режим удаления временного файлового хранилища (TestBase.RemoveFileStorageMode
) был установлен какRemoveFileStorageMode.Auto
. - В обсуждениях (форумах) desktop-клиента исправлена установка цвета шрифта и цвета выделения текста при добавлении пункта списка в поле ввода сообщения.
- В обсуждениях (форумах) desktop-клиента исправлена установка атрибутов шрифта при вставке ссылки в поле ввода сообщения.
- В форумах desktop-клиента при вставке текста из буфера обмена в поле ввода сообщения теперь происходит обнуление отступов абзацев.
- Для команд и скриптов tadmin исправлена загрузка сборок, указанных в настройке
ProbingPath
в файлеapp.json
. - Оптимизирована конвертация файлов (например, для предпросмотра в формате PDF) при наличии большого количества файлов в базе данных.
- Исправлена конвертация файлов (например, для предпросмотра в формате PDF), если она выполняется для непоследней версии файла.
- В команде
tadmin PackageApp
сообщение “Failed to load assembly, falling back to default alias and name” выводится на уровне логирования Warn вместо Error, поскольку оно не является критичной ошибкой. - В desktop-клиенте исправлено скрытие основной вкладки карточки (без алиаса) флажком “Скрыть”, и исправлена ошибка
IndexOutOfRangeException
, если скрыта одна из вкладок левее основной. - Исправлена передача параметров пейджинга при выполнении представления для ссылочных параметров фильтрации.
- В web-клиенте исправлена ошибка при обращении к свойствам
tableType
иrowSortingType
классаCardSection
. - Исправлены миграции при переходе с версий младше 3.5.0 на текущую версию.
- В web-клиенте исправлена ошибка в элементе управления “Текст с форматированием”, приводившая к тому, что изображения в тексте отображались поверх тулбара, если элемент управления находился в режиме чтения.
- В web-клиенте исправлена ошибка, в некоторых ситуациях приводившая к невозможности сохранить карточку, если в элемент управления “Текст с форматированием” было добавлено изображение и удалено до сохранения карточки.
- В web-клиенте исправлена ошибка, из-за которой у сотрудника оставались права доступа на редактирование карточки после её передачи на следующий этап, на котором у сотрудника нет права на редактирование.
- В desktop-клиенте для контрола “Представление” исправлена работа флага “Разрешить прокрутку”.
- В desktop-клиенте в форумах (обсуждениях) исправлена ошибка, из-за которой при вводе сообщения и при копировании текста из внешнего источника не сохранялись переходы строки.
- В web-клиенте исправлена ошибка, из-за которой не заполнялась колонка “Настройки” в таблице “Кнопки бизнес-процесса”.
- В desktop-клиенте улучшено выравнивание вкладок карточки и контрола “Вкладки” для настройки размера шрифта Windows, отличного от 100%.
- В desktop-клиенте улучшено качество отображения картинок в контроле “Текст с форматированием” и в форумах (обсуждениях).
Обновление на новую сборку¶
- Обновите файл
app.json
для сервиса web: добавлена настройкаServiceWorkerEnabled
. - После импорта конфигурации выполните компиляцию всех шаблонов файлов. Для этого откройте карточку любого шаблона файла, перейдите на вкладку “Расширения” и нажмите кнопку “Выполнить компиляцию всех шаблонов файлов”.
- При работе с СУБД MS SQL Server рекомендуется указать в строке подключения в app.json для tadmin, web и chronos параметр
Trust Server Certificate=true
(параметры разделяются точкой с запятой). Вместо этого вы можете настроить сертификат СУБД в соответствии с рекомендациями в MSDN. - Добавлена поддержка дистрибутива Linux
Ubuntu 21.10
. Полный список поддерживаемых дистрибутивов (с которыми тестировалась платформа) доступен в разделе документации Системные требования для серверов Linux. - В API тестов исправлена опечатка в методе
CardLifecycleCompanionExtensions.LoadWithtHiddenStages
. Переименуйте места вызова метода в проектах с тестами. - Из системы был удалён виртуальный тип карточки “Расширенный шаблон бизнес-процесса”, который использовался в карточках шаблонов процессов при добавлении расширений на кнопки. Для импорта карточек данного типа добавлено расширение, поддерживающее обратную совместимость. Необходимо перевыгрузить шаблоны бизнес-процессов в репозиторий для обновления их типа карточки и структуры секций в репозитории.
- Логика сохранения токена сессии и сервиса локализации на веб-сервере вынесена из статического класса
WebHelper
в объект с типомIWebContext
. Получить текущийIWebContext
можно с помощью объекта с типомIWebContextAccessor
. - Удалены некоторые избыточные методы в классе
LinkHelper
. Используйте перегрузки методаGetClientLink
вместо них. - Свойство
CardViewControlViewModel.ScrollWithModifiers
удалено, прокрутка с зажатым Ctrl доступна для всех контролов “Представление”. Используйте свойствоEnableMouseScrolling
, определяющее прокрутку мышью без зажатого Ctrl, в соответствии с флагом “Разрешить прокрутку”.
Изменения конфигурации при обновлении¶
-
Таблицы:
-
BusinessProcessButtonRolesVirtual
(добавлена) -
BusinessProcessButtonsVirtual
(добавлена) -
FmTopicParticipantRolesUnsubscribed
-
-
Библиотеки схемы:
-
FullTextSearch
-
Standard solution
-
Workflow
-
-
Типы:
-
BusinessProcessTemplate
-
KrCheckStateWorkflowTileExtension
-
WorkflowCheckRolesForExecutionTileExtension
-
-
Карточки:
ReturnForAmendingTemplate
(необязательное изменение)
-
Изменены библиотеки локализации.