Список изменений в системе версии 3.15.0

Критичные изменения

Реализован переход на .NET Framework 4.6.2. Переход позволит использовать новые возможности языка C#.

Полный список изменений .NET Framework 4.6.2 по сравнению с .NET Framework 4.0 можно посмотреть в официальной документации по .NET Framework.

Полная информацию по совместимости приложений .NET Framework можно посмотреть здесь.

Новый функционал

Реализован функционал для поиска возможных дубликатов сущностей с референсной реализацией для типа ContractorLegal.

  1. При создании сущностей, для которых реализован скоринг при открытии формы сущности, на которую добавлена «Панель скоринга» и существуют какие-либо совпадения в соответствии с настройками скоринга, отображается соответствующая таблица, содержащая сущности, с которыми по тем или иным полям совпадает данная сущность, а также кнопки, позволяющие:
  • привязать сущность как «дубль» к какому-либо объекту;
  • пометить сущность как «не дубль»;
  • повторить проверку на дубли (например, при изменении настроек скоринга).
  1. Для веб-части добавлена панель скоринга (ViewItem) для отображения списка возможных совпадений.
  2. Добавлен сервис DuplicateService обрабатывающий вновь созданные сущности на предмет дублей и вызывающий соответствующие точки расширения.
  3. Добавлены точки расширения для реализации поиска дублей: AbstractScoringSettings, AbstractScoringStepSettings, AbstractDuplicateHandler.

Использование

По умолчанию скоринг реализован для типа ContractorLegal (Юридическое лицо) и возможных дубликатов (пользователь, контрагент, физ. лицо, юр. лицо, контакт, возможность).

Настройки скоринга осуществляются в разделе Администрирование – Базовые приложения – Глобальные настройки скоринга. В данном разделе отображается список всех сущностей, для которых реализован скоринг. Также, на данной странице, в верхнем меню находится кнопка, позволяющая выключить или включить скоринг на глобальном уровне.

При открытии раздела по одной из сущностей пользователь попадает на страницу, содержащую таблицу свойств по которым будет проверяться каждая вновь созданная сущность данного типа, а также таблицу с шагами скоринга, определяющую цвет заголовка панели скоринга для того или иного процента совпадения.

Поля для сравнения должны совпадать по типу и могут настраиваться как в рамках того же типа сущности, так и среди других типов, чьи GUID указаны в переопределенном методе GetPossibleDuplicatesUids() точки класса, унаследованного от AbstractScoringSettings.

Панель скоринга

Отображение панели скоринга в конкретной сущности реализуется путем добавления элемента конструктора форм «Панель скоринга» на его форму просмотра.

Реализация для нового типа

Для реализации скоринга по какому-либо типу необходимо выполнить следующие действия.

  1. Создать 3 класса, унаследовав их от соответствующих компонентов и переопределив методы:
  • AbstractDuplicateHandler – содержит один переопределяемый метод, возвращающий UID типа, для которого мы реализуем скоринг.
  • AbstractScoringSettings – содержит метод GetPossibleDuplicatesUids(), возвращающий список UID типов среди которых будет осуществляться поиск совпадений, поле TypeUid, возвращающий GUID проверяемого типа и ScoringSettingsString, возвращающее строку-ключ, по которому настройки скоринга будут храниться в базе.
  • AbstractScoringStepSettings – содержит метод Check (Guid typeUid), позволяющий проверить совпадение входящего GUID с GUID проверяемого типа, а также поле ScoringStepString, содержащее строку-ключ, по которому настройки шагов будут храниться в базе.
  1. В веб части перейти в настройки скоринга для нового типа (Администрирование – Базовые приложения – Глобальные настройки скоринга – «Тип») и осуществить настройку полей для скоринга и шагов скоринга.
  2. В дизайнере ELMA добавить на форму просмотра данной сущности элемент конструктора форм «Панель скоринга».
  3. При необходимости поддержки сравнения для отдельных типов полей создать реализацию точки расширения IPropertyDuplicateFilter, в которой реализовать свой сценарий сравнения в методе GetDuplicatesForProperty() и проверку на тип поля в методе Check().

Изменения интерфейсов пользователя

  1. Изменен интерфейс страницы ELMA
  • Кнопка для «сворачивания» левого меню перенесена в нижнюю часть левого меню.
  • Верхнее меню «сворачивается» при прокрутке экрана.
  • Добавлена кнопка «Еще... » для скрытия пунктов верхнего меню, которые не влезают на экран пользователя.
  • Добавлена прокрутка для всплывающих окон.

  1. Добавлено отображение составных инициалов пользователей с двойными, тройными и т.п. именами. Если фамилия, имя или отчество является составным и пишется через дефис, то и инициалы так же будут составными.

Техническая оптимизация

  1. Публичный метод EleWise.ELMA.Runtime.Db.Migrator.Framework.ITransformationProvider.CutCommentsFromCommandtext(string commandText) – помечен устаревшим. Защищённый (protected) метод EleWise.ELMA.Runtime.Db.Migrator.Providers.TransformationProvider.CutComments(string commandText) – удален.
  2. Добавлен сервис загрузки метаданных процесса в Runtime - IWorkflowMetadataLoaderService

Загрузка метаданных происходит:

  • при публикации процесса;
  • при запуске процесса, в том случае, если версия процесса была опубликована на другой ноде фермы.
  1. Улучшено масштабирование среды исполнения процессов за счёт возможности использовать фоновые операции (ФО) в пользовательских сценариях. Созданы реализации фоновых операций "HTTP запрос" и "Получить BinaryFile".
  2. Реализована работа распределенным файловым хранилищем. Данное изменение добавляет провайдер распределённого хранения файлов в систему, который оперирует точками хранения контента. Провайдер может содержать одну или несколько точек хранения. При работе все операции над контентом файлов делегируются им.
  3. Оптимизирована работа с историей.

Остальное

Добавлен интерфейс пула потоков IElmaThreadPool.

Для класса ThreadSubPool добавлен конструктор ThreadSubPool(string appSettingsKey, int minThreadCount, string logPrefix, bool useElmaThreadPool, string elmaThreadPoolName), позволяющий включить использование встроенного пула потоков взамен системному.