logo

Список критичных изменений системы с версии 3.13.0 по 3.13.12 включительно

Список исправлений к версии 3.13.12

Добавлена возможность использовать параметры типа "Перечисление" с одиночным типом связи как sql параметры:

select * from TaskBase
where TaskBase.Priority=@OneEnum

Добавлена возможность использовать параметры типа "Перечисление" с типом связи "Список" как sql параметры:

select * from TaskBase
where TaskBase.Priority in (@ManyEnum)

При обновлении необходимо убедиться, что в отчетах не использовались параметры типа "Перечисление" с типом связи "Список". При их наличии, необходимо изменить их тип связи на одиночный и переопубликовать отчет.

Иначе не будет работать, например, запрос из статьи https://www.elma-bpm.ru/KB/article-5873.html. Условие {$TaskPriority}=’High’} всегда будет возвращать false, т.к. {$TaskPriority} будет возвращать строковое представление его типа (если параметр TaskPriority является перечислением с типом связи "Список").

Публичные методы и интерфейсы

Добавлена public перегрузка метода EleWise.ELMA.Model.Types.EnumDescriptor.GetPropertyInitExpression(ClassMetadata classMetadata, bool forList, PropertyMetadata propertyMetadata, bool forFilter = false), получающая выражение инициализации свойства в соответствии со значением по умолчанию.

Трудозатраты

Добавлена возможность редактировать объект трудозатрат в трудозатратах на согласовании с добавлением записи в историю при изменении. Закрыта возможность редактировать удаленные трудозатраты.

Диагностика

1. Newtonsoft JSON обновление до версии 11.0.2

2. Изменена сигнатура метода ExportExcel в точке расширения IPerformanceReportPage, новая сигнатура выглядит следующим образом:

void ExportExcel(MetricsContainer metrics, ExcelReportBuilder builder);

3. Добавлена точка расширения

namespace EleWise.ELMA.Diagnostics.Reports.Performance
{
	/// <summary>
	/// Точка расширения построителя отчета
	/// </summary>
	[ExtensionPoint]
	public interface IPerformanceReportPageColumnBuilder
	{
		/// <summary>
		/// Добавить метрику в отчет
		/// </summary>
		/// <typeparam name="TMetric">Тип метрики отчета</typeparam>
		/// <param name="table">Таблица отчета</param>
		void AddColumn<TMetric>(MetricExcelTable<TMetric> table) where TMetric : IMetric;
	}
}

Список исправлений к версии 3.13.11

Добавлена настройка времени жизни результата выполнения задачи планировщика. Если результат выполнения задачи планировщика не обновлялся больше, чем указанный таймаут, – он считается просроченным. По истечении времени жизни задача планировщика считается устаревшей и не блокирует попытку выполнения новых задач. По умолчанию время жизни результата 720 минут. Пример настройки в файле settings.config : <add key="SchedulerJobRunInfo.Timeout" value="720" /> .

PublicApi

Добавлена перегрузка метода EleWise.ELMA.CRM.Managers.LeadManager.SetStatus(ILead lead, LeadStatus leadStatus, string comment), которая позволяет изменить статус и добавить комментарий к возможности.

Список исправлений к версии 3.13.10

Трудозатраты

Интерфейс IOvertimeWorkLogExtension помечен как Obsolete. Добавлен новый интерфейс IOvertimeWorkLogExtension2.cs взамен IOvertimeWorkLogExtension. Ранее реализованные точки рекомендуется переписать, хотя текущие имплементации также остаются рабочими.

В тулбар на карточке трудозатрат добавлена кнопка для переотрытия трудозатрат. Добавлен попап для переоткрытия трудозатраты с возможностью изменить согласующего.

Документооборот

Добавлен новый интерфейс ICryptoProvider2, унаследованный от интерфейса ICryptoProvider.

В интерфейсе добавлен новый метод string GetFileHash(BinaryFile file, string algorithm), позволяющий выполнять расчет хэша по указанному алгоритму.

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

Внутренний портал

При отправке объекта (объект CRM, документ, объект из меню справочников, матрица эффективности) по маршруту после выбора процесса добавлена загрузка формы стартового события процесса.

Проекты

Интерфейс IProjectTaskProperties помечен как неиспользуемый.

Список исправлений к версии 3.13.9

Для того, чтобы не давать права суперпользователя для подключения ELMA в PostgreSQL, появилась возможность указать в файле конфигурации пользователя с правами SuperUser, от которого будет осуществляться создание/удаление БД при запуске системы.

Пример файла конфигурации:

<main.db connectionStringName="MainDB" type="EleWise.ELMA.Extensions.PostgreSQL.PostgreSQLProvider, EleWise.ELMA.Extensions.PostgreSQL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" backupEnabled="false" sysUser="postgres" sysPassword="MASTERKEY" />
<connectionStrings>
<add name="MainDB" connectionString="Host=127.0.0.1;Port=5432;Database=elma3;User Id=user;Password=qwerty;Unicode=true;" />
</connectionStrings>

В данном примере в строке подключения указывается пользователь user с минимальными правами, а в main.db указан суперпользователь postgres.

KPI

Добавлена возможность использования различных периодов, чей порядок ("Order") меньше порядка периодичности "Месяц" (то есть минимальная периодичность - месяц).

Создание матриц:

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

Эффективность и показатели:

Показатели с периодичностью меньшей, чем периодичность матрицы эффективности, не влияют на суммарную эффективность матрицы эффективности. Это будет внесено в справку после завершения текущих задач раздела KPI

Просмотр матрицы эффективности:

При смене периодичности происходит переход на страницу матриц эффективности пользователя с выбранной периодичностью.

Список исправлений к версии 3.13.8

Публичные методы

Добавлена возможность получения значений по фильтру для мест регистрации в котроллере:

  • добавлены необязательные параметры в метод EleWise.ELMA.Documents.Docflow.Web.Controllers.RegistrationPlaceController.GetRegistrationPlace(long? accountingYear, string text = null, string filterProviderUid = null, string filterProviderData = null), который возвращает места регистрации по году и по фильтру;
  • добавлены необязательные параметры в метод EleWise.ELMA.Documents.Docflow.Web.Controllers.RegistrationPlaceController.PopupEntity(string inputId, [JsonBinder]ICollection<SelectListItem> selected, bool multiselect, long? accountingYear, string filterProviderUid = null, string filterProviderData = null), который возвращает popup выбора значений для сущности.

Изменена область видимости public методов на internal в менеджере EleWise.ELMA.Security.Managers.UserSecurityProfileManager:

  • CreateProfile
  • FailedLogon
  • DisallowLogon
  • AllowLogon
  • ResetCountFailedLogon
  • ResetCountFailedLogonWithCheck
  • ResetCountFailedLogonAllUsers
  • SetForcedChangePasswordWithCheck
  • SetForcedChangePassword
  • ResetForcedChangePassword

Прочее

Периодические изменения свойств сущности EleWise.ELMA.Security.Models.UserSecurityProfile осуществляются прямыми запросами в БД, из-за чего отследить такие изменения свойств с помощью IEntityEventsListener не получится. Это можно сделать с помощью точки расширения EleWise.ELMA.Security.Extensions IUserSecurityProfileEventHandler.

KPI

Добавлена возможность работы с несколькими матрицами эффективности.

Удалена кнопка со страницы "Все сотрудники" и "Компания" под названием "Показывать без матриц". По умолчанию отображаются все пользователи в соответствии с настроенным фильтром.

Список исправлений к версии 3.13.7

Обновление

Обновление на 3.13.7 может занять продолжительное время, так как будет выполнено полное преобразование БД.

SDK

Оптимизация менеджера блокировок:

1. Изменены блокировки на БД (применяется по умолчанию на кластере, если настроен распределенный кэш).

Раньше блокировка выставлялась на соответствующей записи таблицы DbLock через FOR UPDATE, данная блокировка "висела" на записи таблицы в течение всего времени нахождения в критической секции, что негативно сказывалось на статистике, т.к. большой процент времени были блокировки как раз на таблице DbLock.

Сейчас блокировка устанавливается путем вставки записи в DbLock. Снятие блокировки - путем удаления. Наличие записи говорит о том, что блокировка кем-то захвачена. Т.е. блокировки на таблице DbLock будут возникать только тогда, когда конкурирующие транзакции пытаются вставить/удалить одинаковые записи из таблицы DbLock в один момент.

2. Реализованы блокировки на Redis. Данный сервис блокировок надо включать явно (configuration.config)

Пример:

Логика блокировок такая же, как и на БД: есть ключ в redis-е, значит кто-то захватил блокировку, нет ключа - блокировки нет. Для работы с редис необходимо для отказоустойчивости минимум 3 независимые ноды (не кластер, не сентинел, а просто 3 экземпляра сервера). Блокировка считается установленной, если её удалось установить на более, чем половине узлов. Настройка редис провайдера блокировок выполняется через configuration.config - указываются соединения с нодами (в формате, который используется и для конфигурирования кэша редиса). Используется алгоритм redlock, рекомендованной офиц. документацией.

3. Реализованы блокировки в памяти. Данный сервис выполняет блокировки только в памяти. Включается по умолчанию, если не настроен распределенный кэш, т.е. используется одна нода элмы.

Переработан LockManager:

  1. Унаследован от интерфейса ILockManager, поэтому рекомендуется в модулях инжектировать именно ILockManager, а не использовать LockManager
  2. У LockManager’а помечены как Obsolete группа методов TryObtainLock, ObtainLock и ReleaseLock. Вместо них рекомендуется использовать методы интерфейса ILockManagerLock, TryLock, которые возвращают IDisposable блокировку.

Внутренний портал

Обновлен модуль ZeroClipboard. Flash контент удален из системы. Функционал заменен js скриптами.

Монитор процессов

Устранена XSS уязвимость в разделе "Монитор процессов". Отключена возможность сортировки по колонкам "Контекст" и "Значения" в разделе "Монитор процессов".

Сообщения

  • При выполнении архивации ленты избранные сообщения игнорируются;
  • Ранее заархивированные сообщения автоматически перенесутся в ленту при первом запуске системы после обновления.

Публичные методы

Добавлена перегрузка метода EleWise.ELMA.Web.Mvc.Models.Boxes.AutocompleteEntityComboBox.InitCreatePopup(HtmlHelper helper, ClassMetadata child), создающая нужное всплывающее окно для операции создания объекта (использовать, если всплывающее окно нужно для создания только одного дочернего класса).

KPI

Добавлена возможность работы с несколькими матрицами эффективности:

+ Реализован "Режим работы с несколькими матрицами"
+ Создана страница матриц пользователя
+ Отредактирован функционал назначения/продления/редактирования/переназначения/согласования SMART-задач
+ Изменён дизайн
+ Изменены страницы "Все сотрудники" и "Сотрудники"
+ Расширена модель сворачиваемой панели
+ Реализованы возможности ленты(комментарий, вопрос)
+ Реализованы привилегии на доступ к экземпляру матрицы эффективности
+ Реализована расширяемая настройка отображения значения эффективности сотрудника в Настройках системы "Управление показателями"
+ Реализовано мягкое удаление шаблонов матрицы эффективности (ISoftDeletable)

Проекты+

Пользовательский интерфейс

1. Карточка редактирования трудового ресурса. Внесены исправления по настройке календаря для ресурса, являющегося пользователем системы (добавлено пояснение, что календарь такого ресурса настраивается в профиле пользователя).

2. В настройки типа проекта добавлено свойство "Учёт трудовых ресурсов", влияющее на способ расчёта сроков задач, плановых трудозатрат от наличия и загруженности трудовых ресурсов задачи. По умолчанию значение "Не используется".

3. Общие настройки модуля "Проекты+" получили настройку "Добавлять трудовые ресурсы в исполнители/соисполнители задач". По умолчанию значение "Нет".

4. В окне управления ресурсами задачи по проекту, в таблице вкладки трудовых ресурсов при включенной настройке "Добавлять трудовые ресурсы в исполнители/соисполнители задач", отображается колонка с возможностью выбора Исполнителя задачи. Соответственно, прочие ресурсы будут переноситься в соисполнители.

5. На странице проекта в тулбаре (кнопка "Перейти") добавлен пункт меню "Оптимизатор ресурсов". Аналогичный пункт меню добавлен на кнопке "Действия" в тулбаре плана проекта. При выборе данного пункта меню, план проекта открывается в оптимизаторе ресурсов.

6. Кнопка "Добавить проекты" в оптимизаторе ресурсов заменена на кнопку "Добавить объекты". При нажатии на кнопку можно добавить не только объекты с типом "Проект", но и "Вложенные проекты".

7. Изменено окно оптимизатора ресурсов "Загруженность ресурса". Добавлена возможность фильтровать задачи по одному из объектов, добавленных в оптимизатор ресурсов. Также в окне появилась возможность производить замену/добавление ресурса к задачам ресурса для которого открыто данное окно.

8. В оптимизаторе ресурсов на кнопках переключения, между добавленными в оптимизатор планами, добавлены иконки типов объектов. Также добавлена иконка для обозначения тех планов, в которых были сделаны изменения пользователем.

9. В диаграмме Ганта пункты меню, не относящиеся к фильтрам перенесены в новое меню "Действия / Настройки отображения":

  • Показать задачи с длительностью больше 8 дней;
  • Перейти к последней задаче;
  • Перенести сроки задач плана.

Список исправлений к версии 3.13.6

Возможность указания разного перевода для одного ключа

Для указания нескольких переводов для одного ключа необходимо указать их в ресурсе по следующему шаблону:

Msgstr "[[Место11,Место12,Место13]]Перевод1[[Место21,Место22,Место23]]Перевод2",

где Место - место использования. Место использования можно взять из закомментированных строк использования над переводами:

  1. 25cab08fff420add/Applications/BPM/EleWise.ELMA.BPM.Web/Modules/EleWise.ELMA.CRM.Web/Views/Lead/SelectTypes.cshtml:15 Lead_SelectTypes (Для файлов .cshtml - от папки Views, и замена символа / на _);
  2. 25cab08fff420add/Applications/BPM/EleWise.ELMA.BPM.Web/Modules/EleWise.ELMA.Workflow.Processes.Web/Views/WorkflowInstance/ChangeTimer.cshtml:15 WorkflowInstance_ChangeTimer;
  3. 25cab08fff420add/SDK/EleWise.ELMA.SDK.Design/BPMApps/Views/BPMAppsRibbonPanelView.Designer.cs:118 Designer (Для файлов .cs - название файла).

Монитор процессов

Добавлена поддержка экспорта в Excel колонки текущих задач по процессам.

Оповещения

Реализованы глобальные настройки для добавления заголовка в тело сообщения для SMS и EMAIL уведомлений.

Список исправлений к версии 3.13.5

Публичные методы и интерфейсы

Метод Init(List<IDocument> documents, bool fillVersions = true), перемещен из ELMA.Documents.Docflow.Web.Models.ApprovementInfo и EleWise.ELMA.Documents.Docflow.Web.Models. AcquaintanceInfo в EleWise.ELMA.Documents.Docflow.Web.Models.DocumentTaskBaseInfo<T>.

Добавлена перегрузка данного метода Init(Dictionary<IDocument, IDocumentVersion> documentsAndVersions, bool fillVersions = true).

Список исправлений к версии 3.13.4

Добавлена валидация атрибутов объекта при его публикации. При невалидном атрибуте публикация прекращается с показом окошечка с ошибкой.

Публичные методы и интерфейсы

  1. Добавлен интерфейс EleWise.ELMA.Model.Types.IValidatableTypeDescriptor, позволяющий провести валидацию типа.
  2. Добавлена валидация для класса ELMA.Model.Types.RefTypeDescriptor<T, SettingsT>.
  3. Добавлена валидация для класса ELMA.Model.Metadata.EntityPropertyMetadata.

Список исправлений к версии 3.13.3

Общие доработки

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

Список исправлений к версии 3.13.2

Пользовательский интерфейс

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

Конструктор форм

Добавлен параметр кнопки На форме только для чтения. Данный параметр определяет возможность отображения созданной кнопки на форме «Только для чтения» и после выполнения процессной задачи.

Параметр включает в себя три варианта отображения:

  • Активна – кнопка будет активна на форме, то есть пользователь будет иметь возможность выполнить определенное действие, нажав на данную кнопку.
  • Неактивна – кнопка будет отображена на форме, но будет неактивна, то есть пользователь не будет иметь возможности воспользоваться данной кнопкой.
  • Скрыта – кнопка не будет доступна пользователю и будет скрыта с формы.

Формы

Добавлены проверки текущего состояния полей ввода на формах создания/редактирования:

  • Задачи
  • Проектные задачи
  • Процессные задачи (со всеми формами конструктора)
  • Календарь, события
  • Проекты - проектные задачи
  • Отчеты
  • Сообщение
  • KPI(шаблон матрицы эффективности, цель, смарт-задача, мероприятие)
  • CRM(контрагенты, встречи, звонки и др.)
  • Документооборот(задачи по документам, документы)

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

Изменения в коде

Метод EleWise.ELMA.Projects.Managers.ProjectTaskBaseManager. ChangeTaskPropertyNotShowInLists(IProjectTaskBase task, bool saveAfterChange = false, bool updateStatus = true) помечен как устаревший и вскоре будет удален, вместо него следует использовать EleWise.ELMA.Projects.Managers.ProjectTaskBaseManager. ChangeTaskVisibility(IProjectTaskBase task, bool saveAfterChange = false).

Список исправлений к версии 3.13.1

Изменений нет

Список исправлений к версии 3.13.0

Общие доработки

Шаблон имени канала в настройках Asterisk, по умолчанию используется SIP или PJSIP;

Изменения в модуле "Отчеты"

Для обновления системных отчетов не нужно дополнительно вносить изменения в файл «ReportsDbStructure.xml».

API Кода. Публичные методы и интерфейсы

  1. Интерфейс IObjectCreator отмечен устаревшим, вместо него нужно использовать IFormCreator
  2. Метод bool EleWise.ELMA.Documents.Web.FullTextSearch.Extensions.HasUserFields (IDocumentFilter filter) отмечен устаревшим, вместо него нужно использовать метод void EleWise.ELMA.Documents.Web.FullTextSearch.Extensions.HasUserFields(IDocumentFilter filter, CheckFullTextSearchModel checkResult)
  3. Добавлены следующие методы:
  • EleWise.ELMA.Model.Metadata.EntityMetadata.GetAllTableParts(), возвращающий список всех блоков, относящихся к метаданным (включая все вложенные).
  • EleWise.ELMA.Model.Metadata.EntityMetadata.GetAllProperties(), возвращающий список всех свойств, относящихся к метаданным (включая свойства всех вложенных блоков).
  • EleWise.ELMA.Model.Metadata.EntityMetadata.GetAllPropertiesAndTableParts(), возвращающий список всех свойств и блоков, относящихся к метаданным (включая свойства и блоки всех вложенных блоков).

Изменения в Планировщке

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

Под рабочими днями нужно иметь в виду ПОРЯДКОВЫЙ НОМЕР РАБОЧЕГО ДНЯ В МЕСЯЦЕ!

Часовые пояса

В Дизайнере ELMA появилась настройка Не учитывать временные зоны для свойства типа Дата/время. Она позволяет хранить и просматривать данное свойство без смещения по тайм-зоне. Например, если было введено значение 01.01.2018 01:00:00 при тайм-зоне +3 ч, то в результате при считывании пользователем с тайм-зоной +1 ч, значение останется тем же. Однако аналогично работает свойство, когда в настройке указано Не показывать время, т.е. все свойства типа Дата/время без времени так же не смещаются по тайм-зоне.

Пользовательский интерфейс

Добавлено информационное сообщение на страницу поиска документов при включенной индексации. Если условия фильтрации не позволяют системе использовать полнотекстовый поиск (при иерархическом поиске, при заполненных полях расширенного поиска, при длине поисковой строки менее чем 3 символа), пользователю выводится сообщение о том, что полнотекстовый поиск не использовался и список причин.

Формы на переходах в процессах. Формы на кнопках в формах

1. Формы на переходах в процессах

Формы на переходах в процессах настраиваются в Дизайнере ELMA в окне настроек задачи на вкладке Форма (контекст).

Чтобы указать сценарий, который будет выполнен перед переходом, необходимо открыть вкладку Дополнительно.

2. Формы на кнопках в формах

Чтобы добавить форму на кнопку, её необходимо добавить как ссылку. Данный функционал доступен везде, где есть возможность настроить формы, т.е. процессы, объекты, документы, проекты, страницы, портлеты.

Существует три типа форм: локальная форма, форма объекта и страница.

Локальная форма – это форма текущего объекта. Включает в себя все формы базовых объектов.

Форма объекта позволяет выбрать любую форму объекта, который существует в текущем контексте. Можно выбрать как конкретную форму объекта, так и одну из форм по умолчанию: редактирование или просмотр.

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

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

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

Также для всех элементов формы появилась дополнительная настройка, которая позволяет скрывать или показывать определённые элементы в зависимости режима отображения.

3. Зависимости форм

Изменено отображение зависимостей форм. Теперь на вкладке Формы (представления) в блоке Список форм появился столбец Где используется, в котором отображается количество использований той или иной формы.

При нажатии на ссылку Количество использований: <количество> будет открыто окно в режиме «Только для чтения», где будут указаны все зависимости данной формы.

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

Настройки блока

В Дизайнере ELMA в Настройках блока, на вкладке Таблица добавлен функционал - "Группировка по умолчанию", позволяющий производить группировку по выбранному свойству блока.

Работа с клиентами

Добавлены платежные реквизиты для контрагентов

Документооборот

  • В Дизайнере ELMA в настройках ЖЦ типа документа добавлен селектор выбора статуса по умолчанию. При создании документа выполняется инициализация статуса значением, установленным в данном селекторе.
  • Добавлена возможность частичного подписания в согласовании

Полнотекстовый поиск

Добавлено информационное сообщение на страницу поиска документов при включенной индексации. Если условия фильтрации не позволяют системе использовать полнотекстовый поиск (при иерархическом поиске, при заполненных полях расширенного поиска, при длине поисковой строки менее чем 3 символа) , пользователю выводится сообщение о том, что полнотекстовый поиск не использовался и список причин.

Сквозная авторизация

Реализован новый механизм сквозной аутентификации. Если в настройках IIS на корне сайта включить только Windows-аутентификацию и установить переключатель SSPI.UseInPlaceAuth = true в файле конфигурации settings.config, то сервер ELMA сможет получать текущего доменного пользователя из приходящих запросов через корневой сайт и аутентифицировать его, используя уже имеющиеся инструменты.

Проекты+

  • Добавлен поиск EQL в раздел проектов.
  • Реализован функционал ВП в модуле Проекты+.
  • Изменены блоки пользовательских расширений для процессов: Создать план проекта, Публиковать план проекта, Ожидание завершения публикации плана проекта.
  • Реализован механизм привязки Плана проекта к разным объектам системы (на данный момент, это объекты: Проект и Вложенный проект), в рамках проекта (т.е. в отрыве от основного проекта, это пока сделать невозможно).
  • Исправлена история по Проекту. Теперь в неё пишется публикация плана проекта и публикация бюджета проекта с указанием с какой версии и на какую было произведено изменение.
  • Переработан механизм публикации плана проекта. Появилась возможность через реализацию точки расширения добавлять свои действия, которые должны выполняться при публикации плана.
  • Добавлен портлет "История по проекту", раньше историю по проекту можно было посмотреть только на странице детальной информации по проекту.
  • Переделан механизм решения конфликтов при публикации плана проекта. Все конфликты разнесены по точкам расширений. Теперь, если появится необходимость в добавлении нового интерфейса с решением какого-то конфликта, то это будет возможно сделать добавлением нового расширения.
  • В диаграмме Ганта (для плана проекта и оптимизатора ресурсов) добавлена возможность просматривать ресурсы вложенных проектов(опционально в настройках)

Изменения в PublicAPI

1. Методы получения бюилдеров ProjectTaskBuilder(IProject project), MilestonBuilder(IProject project), WorkflowProjectTaskBuilder(IProject project) помечены как устаревшие и заменены на методы GetProjectTaskBuilder(IProjectPlanObject planObject), GetMilestonBuilder(IProjectPlanObject planObject), GetWorkflowProjectTaskBuilder(IProjectPlanObject planObject)

2. EleWise.ELMA.Projects.Managers. ProjectPlanManager. Publish(IProjectPlan plan, Dictionary<IProjectPlanItem, List<Pair<ExecutorSetType, List<IUser>>>> executors, bool terminateActiveProcesses, bool addToParticipants = true, List<long> closingWptPrevPublishIdsList = null) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers.ProjectPlanManager. Publish(IProjectPlan plan, Dictionary<IProjectPlanItem, List<Pair<ExecutorSetType, List<IUser>>>> executors, IEnumerable<Pair<Guid, string>> conflicts)

3. EleWise.ELMA.Projects.Managers. ProjectPlanManager. Publish(IProjectPlan plan, Dictionary<IProjectPlanItem, List<Pair<ExecutorSetType, List<IUser>>>> executors, bool terminateActiveProcesses, bool addToParticipants = true, List<long> closingWptPrevPublishIdsList =null) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers.ProjectPlanManager.Publish(IProjectPlan plan, Dictionary<IProjectPlanItem, List<Pair<ExecutorSetType, List<IUser>>>> executors, IEnumerable<Pair<Guid, string>> conflicts)

4. EleWise.ELMA.Projects.Managers. ProjectPlanManager. ConflictsWithBudget(long newPlanId) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers.ProjectPlanManager. ConflictsWithBudgetForPlan(long newPlanId)

Публичные методы и интерфейсы

1. Свойство в плане проекта EleWise.ELMA.Projects.Models.ProjectPlan: IProject Project помечено, как устаревшее, оно не используется в приложении и будет удалено в будущих версиях. Вместо него используется свойство EleWise.ELMA.Model.Entities.EntityReferences.ReferenceOnEntity PlanObject.

2. Метод EleWise.ELMA.Projects.Components.ProjectPlanExecutorHelper.GetProjectTaskExecutors(IProjectTaskExecutor executor, IProject project) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Components.ProjectPlanExecutorHelper.GetTaskExecutors (IProjectTaskExecutor executor, IProjectPlanObject planObject).

3. Метод расширения EleWise.ELMA.Projects.Extensions.ProjectsExtension.PublishPlanState (this IProject project) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Extensions.ProjectsExtension.GetPublishPlanState (this IProjectPlanObject planObject).

4. Метод расширения EleWise.ELMA.Projects.Extensions.ProjectsExtension.Plan(this IProject project) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Extensions.ProjectsExtension.GetPlan (this IProjectPlanObject planObject).

5. Метод EleWise.ELMA.Projects.Managers. MilestoneManager.Create (IProject project) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. MilestoneManager.CreateTo (IProjectPlanObject planObject).

6. Метод EleWise.ELMA.Projects.Managers. ProjectTaskManager.Create (IProject project) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectTaskManager.CreateTo (IProjectPlanObject planObject).

7. Метод EleWise.ELMA.Projects.Managers. WorkflowProjectTaskManager.Create (IProject project) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. WorkflowProjectTaskManager.CreateTo (IProjectPlanObject planObject).

8. Метод EleWise.ELMA.Projects.Managers. ProjectManager. ChangePlanRunProcess (IProjectPlan plan) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectPlanManager. ChangePlanRunProcess (IProjectPlan plan).

9. Метод EleWise.ELMA.Projects.Managers. ProjectManager. ChangeTaskPropertyNotShowInLists помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectPlanManager. ChangeTaskPropertyNotShowInLists.

10. Метод EleWise.ELMA.Projects.Managers. ProjectManager. IsAvailableImportFromMsProject (IProjectPlan projectPlan) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectPlanManager. IsAvailableImportFromMsProjectTo (IProject project).

11. Метод EleWise.ELMA.Projects.Managers. ProjectPlanApprovalTaskManager. HasPermissionToApprove(IProjectMetadataHead metadataHead) помечен, как устаревший, он не

используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectPlanApprovalTaskManager. HasPermissionToApprove(IProjectPlanObject planObject).

12. Метод EleWise.ELMA.Projects.Managers. ProjectPlanApprovalTaskManager. HasPermissionToApprove(IUser user, IProjectMetadataHead metadataHead) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectPlanApprovalTaskManager. HasPermissionToApprove(IUser user, IProjectPlanObject planObject).

13. Метод EleWise.ELMA.Projects.Managers. ProjectPlanApprovalTaskManager. GetUsersToPermissionToApprove(IProjectMetadataHead metadataHead) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectPlanApprovalTaskManager. GetUsersToPermissionToApprove(IProjectPlanObject planObject).

14. Метод EleWise.ELMA.Projects.Managers. ProjectPlanItemManager. AddExecutorsToResourcesExec(IProjectPlanItem planItem, IProject project = null, bool save = true) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectPlanItemManager. AddExecutorsToResources(IProjectPlanItem planItem, bool save = true).

15. Метод EleWise.ELMA.Projects.Managers. ProjectPlanItemManager. GetExecutors(IProjectPlanItem planItem, IProject project) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectPlanItemManager. GetExecutors(IProjectPlanObject planObject, IProjectPlanItem planItem).

16. Метод EleWise.ELMA.Projects.Managers. ProjectPlanManager. Create(IProject project, Action<IProjectPlan> preSave = null) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectPlanManager. CreateTo(IProjectPlanObject planObject, Action<IProjectPlan> preSave = null).

17. Метод EleWise.ELMA.Projects.Managers. ProjectPlanManager. GetNewNumber(IProject project, bool save = false) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectPlanManager. GetNewNumberTo(IProjectPlanObject entity, bool save = false).

18. Метод EleWise.ELMA.Projects.Managers.ProjectPlanManager. GetLastSavedPlanIdForProject(long projectId) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectPlanManager. GetLastSavedPlanIdForProjectTo(ReferenceOnEntity entity).

19. Метод EleWise.ELMA.Projects.Managers. ProjectPlanManager.CreateOrClone(IProject project, IProjectPlan oldPlan) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectPlanManager.CreateOrCloneTo(ReferenceOnEntity refPlanObject, IProjectPlan oldPlan).

20. Метод EleWise.ELMA.Projects.Managers. ProjectPlanManager. GetCurrentPlan(IProject project) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется свойство объекта IProject.CurrentPlan.

21. Метод EleWise.ELMA.Projects.Manager. ProjectPlanManager s. GetPlanByNumber(IProject project, long number) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. ProjectPlanManager.GetPlanByNumberTo(IProjectPlanObject planObject, long number).

22. Метод EleWise.ELMA.Projects.Managers. PublishPlanStateInfoManager. CheckProjectPublishing(long projectId) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод

EleWise.ELMA.Projects.Managers. PublishPlanStateInfoManager. CheckPublishing(ReferenceOnEntity planObject).

23. Метод EleWise.ELMA.Projects.Managers. PublishPlanStateInfoManager. IsProjectPublishing(long projectId) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. PublishPlanStateInfoManager. IsPublishing(IProjectPlanObject planObject).

24. Метод EleWise.ELMA.Projects.Managers. IsProjectPlanPublishing(long planId) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. PublishPlanStateInfoManager. IsPublishing(long planId).

25. Метод EleWise.ELMA.Projects.Managers. IsProjectMetadataHeadPublishing(Guid headUid) помечен, как устаревший, он не используется в приложении и будет удалено в будущих версиях. Вместо него используется метод EleWise.ELMA.Projects.Managers. PublishPlanStateInfoManager. IsPublishing(Guid planObjectTypeUid).