Критические изменения в Xafari 15.1.308.217

Критические изменения

Хранилище изменений Модели Приложения

Вместо Xafari.ModelDifferencesDb.XafariModelDifferenceAspect.Code используется Xafari.ModelDifferencesDb.XafariModelDifference.ContextId, переименовано свойство Xafari.ModelDifferencesDb.XafariModelDifferenceDbStore.Code -> ContextId

Нумераторы

Изменен API для сервиса Нумераторов

Внесены изменения в модуль Xafari.BC.Numerators
1. Теперь нумераторы работают на основе механизма XafariService
2. Некоторые методы удалены или изменены сигнатуры:
class Xafari.BC.Numerators.NumeratorBase
— void SaveDeletedNumber(object, long) -> void SaveDeletedNumber(object, Nullable<long>)
class Xafari.BC.Numerators.IDeletedNumbersSupport
— long GetRealIndex(NumeratorBase, string) -> Nullable<long> GetRealIndex(NumeratorBase, string)
— void SetRealIndex(NumeratorBase, string, long) -> void SetRealIndex(NumeratorBase, string, Nullable<long>)
class Xafari.BC.Numerators.INumeratorPersistenceProvider
— TypeInfo GetNumeratorValueType() -> ITypeInfo GetNumeratorValueType()
class Xafari.BC.Numerators.NumeratorFormatter
— void NumeratorFormatter(NumeratorBase) -> void NumeratorFormatter(ServiceSpaceContext, NumeratorBase)
calss Xafari.BC.Numerators.NumeratorLink
— void NumeratorLink(NumeratorBase, Type, string) — Delete
— void NumeratorLink(NumeratorBase, Type, string, Nullable<int>) -> void NumeratorLink(NumeratorBase, Type, string, Nullable<int>, ApplyNumeratorsStrategy)
class Xafari.BC.Numerators.NumeratorManager
— void AddNumerator(NumeratorBase) -> NumeratorManager AddNumerator(NumeratorBase)
— void AddLink(NumeratorLink) -> NumeratorManager AddLink(NumeratorLink)
— void SaveDeletedNumbers(object) — Delete
— long GetRealIndex(object, NumeratorBase, string) — Delete
— IObjectSpace CreateObjectSpace() — Delete
— XafApplication Application — Delete
— NumeratorManager Instance — Delete

class Xafari.BC.Numerators.Model.Extensions
— IModelBCNumerators XafariBCNumerators(IModelApplication) — Delete

3. Для управление стратегией применения нумераторов добавлен enum Xafari.BC.Numerators.ApplyNumeratorsStrategy. Соответственно в настройки нумераторов в модели приложения добавлено свойство этого типа.
class Xafari.BC.Numerators.Model.IModelNumerators
— public ApplyNumeratorsStrategy DefaultApplyStrategy — New
class Xafari.BC.Numerators.Model.IModelNumeratorLink
— public ApplyNumeratorsStrategy ApplyStrategy — New

Настройки приложения

Изменен API для AppSettings

Существенно переработан внутренний код. В результате модуль AppSettings работает по-другому:
1. При работе с настройками в приложении теперь доступна возможность сохранения или отката изменений.
2. Для подключения модуля AppSettings теперь достаточно его добавить в список модулей. Все необходимые настройки делаются по умолчанию.

— Случай использования стандартной структурой слоев (Root->Users)
Нужно обновить существующий проект и необходимо сделать следующее:
1. Найдите в файле платформенно-независимого модуля или в AppModule код инициализации настроек и удалите его.
Например был такой код

Должен быть такой код:

2. Найдите в файле платформенно-независимого модуля или в AppModule код инициализации текущего слоя настроек и удалите его.
Например был такой код

Должен быть такой код:

3. Еще один пример конвертации
Например был такой код:

Должен быть такой код:

— Случай использования нестандартной структуры слоев.
(см. пример Xafari.Northwind в составе продукта)
Нужно обновить существующий проект и необходимо сделать следующее:
1. Найдите в файле платформенно-независимого модуля или в AppModule код инициализации настроек и исправьте его по примеру.
Например был такой код:

Должен быть такой код:

2. При описании собственного SettingsAccessor также необходимо внести изменения. Теперь описание структуры слоев производится в методе Setup.
Вот пример измененного кода который был.

Вот код, который должен быть

Отчеты Xafari

Переименовано свойство Xafari.Reports.Analysis.AnalysisXafariReportBuilder.DataSource -> ReportData

Изменена сигнатура методов Xafari.Reports.XafariReport (TypeXafariReport)

Изменена сигнатура методов Xafari.Reports.XafariReport (TypeXafariReport):
public virtual IDataMinerOperation CreateDataMinerInstance() -> public IDataMinerOperation CreateDataMinerInstance(IObjectSpace, XafariReportParametersBase)
public static IDataMinerOperation CreateDataMinerInstance(string) -> public static IDataMinerOperation CreateDataMinerInstance(string, IObjectSpace, XafariReportParametersBase)
public static IDataMinerOperation CreateDataMinerInstance(IModelXafariReport) -> public static IDataMinerOperation CreateDataMinerInstance(IModelXafariReport, IObjectSpace, XafariReportParametersBase)
public static XafariReportDataSourceBase CreateDataSourceInstance(IModelXafariReport) -> public static XafariReportDataBase CreateDataSourceInstance(IModelXafariReport)

Удалено свойство Xafari.Reports.Arm.Model.IModelArmItemReport.ShowParametersDialog

Вместо свойства Xafari.Reports.Arm.Model.IModelArmItemReport.ShowParametersDialog для отображения диалога ввода параметров отчета используется свойство самого объекта параметров: Xafari.Reports.XafariReportParametersBase.ShowParametersDialog.
Т.о. отображение диалога теперь можно задать индивидуально для каждого параметра отчета.
Удалены контроллеры Xafari.Reports.Excel.Win.Controllers.ExcelReportDesignerController, Reports.Xaf.Win.Controllers.XafReportDesignerController

Удалены контроллеры Xafari.Reports.Excel.Win.Controllers.ExcelReportDesignerController, Reports.Xaf.Win.Controllers.XafReportDesignerController.
Для реализации дизайнеров шаблонов необходимо создать класс — наследник от Xafari.Reports.UI.ReportTemplateDesigner<TReportTemplate>, реализовав в нем метод
public abstract void ShowDesigner(TReportTemplate template, Controller controller, ShowViewParameters showViewParameters)
Регистрация дизайнера выполняется автоматически.
Изменен метод Xafari.Reports.Xaf.XafXafariReportTemplate.CreateNewReportData()

Изменен метод Xafari.Reports.Xaf.XafXafariReportTemplate.CreateNewReportData()
Метод теперь не возвращает значение. Данные разметки сохраняются прямо в Xafari.Reports.Xaf.XafXafariReportTemplate (свойство Content).
Изменен тип свойства Xafari.Reports.Xaf.XafXafariReportBuilder.ReportEngine

Изменен тип свойства Xafari.Reports.Xaf.XafXafariReportBuilder.ReportEngine:
public XtraReport ReportEngine

Для построения отчета теперь используется класс XtraReport.

Безопасность Xafari

Произведен рефакторинг модуля безопасности Xafari.

Больше не используются:
Xafari.Security.Xpo.XpoXafariSecuritySystem
Xafari.Security.DC.DCXafariSecuritySystem
Чтобы использовать функционал этих классов, необходимо обращаться к
Xafari.Security.XafariSecurityManager.Instance
Добавлен метод
XafariSecurityManager.Instance.FindRole(IObjectSpace objectSpace, string roleName);

Общие вопросы

Классы ASPSessionAndThreadsValueManager<ValueType> и ASPSessionValueManagerHelper перенесены из модуля Xafari.Web в модуль Xafari.Web.Utils

1. Изменена инициализация BusinessModel’и.
2. Классы ASPSessionAndThreadsValueManager<ValueType> и ASPSessionValueManagerHelper перенесены из модуля Xafari.Web в модуль Xafari.Web.Utils(только в версии x08)
3. Класс ValueManagerHelper перенесен из модуля Xafari в модуль Xafari.Utils(только в версии x08)
Класс ValueManagerHelper перенесен из модуля Xafari в модуль Xafari.Utils

1. Изменена инициализация BusinessModel’и.
2. Классы ASPSessionAndThreadsValueManager<ValueType> и ASPSessionValueManagerHelper перенесены из модуля Xafari.Web в модуль Xafari.Web.Utils(только в версии x08)
3. Класс ValueManagerHelper перенесен из модуля Xafari в модуль Xafari.Utils(только в версии x08)
Функционал ViewLayoutStrategy переименовал и перенес в отдельный модуль SmartDesign. Поддержка совместимости не реализована.

Поддержка предыдущей версии не реализована.
Класс XafariMultipleLookupEditor устарел. Вместо него следует использовать XafariMultipleLookupPropertyEditor

Xafari.Web.SetTemplateContextViewController

Удалено, т.к. функционал, который обеспечивал данный контроллер реализован с помощью XafariTemplateContentFactory
Класс XafariHttpRequestManager и его свойства и методы стали Obsolete

Класс XafariHttpRequestManager в связи с изменениями в DX 15.1. Функцию данного класса выполняет XafariTemplateContentFactory
В классе приложения — файл «WebApplication.cs» , теперь не надо перекрывать метод

Добавлен класс XafariTemplateContentFactory для работы с Wizard

Данный класс обеспечиваю использование шаблонов для Wizard

Очередь сообщений

Вместо Xafari.Server.IMessageHandler.Key используется Xafari.Server.IMessageHandler.MessageKey

Переименованы события Xafari.Server.IMessageHandler.OnCompleted -> Completed, Xafari.Server.IMessageHandler.OnStartedThread -> ThreadStarted, Xafari.Server.IMessageHandler.OnStoppedThread -> ThreadStopped

Расширение бизнес-объектов

Необходимо реализовать интерфейс IXFRegistrator в модуле

Регистрация сущностей производится в методе IXFRegistrator.RegisterXF.
Модуль, в котором реализованы сущности и расширения, должен реализовать интерфейс Xafari.XF.IXFRegistrator
Регистрация производится при помощи методов RegisterEntity и RegisterExtension

Пример

Бизнес-операции

Вместо Xafari.BC.BusinessOperations.BusinessOperationContextTypeMatchMode используется Xafari.ContextTypeMatchMode

Вместо Xafari.BC.BusinessOperations.ContextViewType используется Xafari.ContextViewType

Вместо Xafari.BC.BusinessOperations.ContextViewTypeExtensions используется Xafari.ContextViewTypeExtensions

Вместо Xafari.BC.BusinessOperations.Attributes.ContextPropertyAttribute используется Xafari.ContextPropertyAttribute