В этой статье вы узнаете, как начать использование Object Status в XAF-приложении. В качестве примера будет рассмотрен бизнес-класс Order из демо-приложения Xafari Northwind. Выполните шаги, описанные ниже.

Добавьте модуль XafariBСModule в Module Project. Далее необходимо выполнить операции, различные для Win и Web приложений.

Для Windows Forms приложения добавьте модуль XafariBСWindowsFormsModule в Windows Forms Module Project. В конструкторе класса WinApplication установите значение свойства UseOldTemplates в true:

 

public partial class Solution1WindowsFormsApplication : WinApplication {

  public Solution1WindowsFormsApplication() {

    InitializeComponent();

    UseOldTemplates = true;

  }

  …

 

Примечание: Некоторые элементы управления Xafari, такие, как Check Action, корректно работают только с шаблонами приложения версии 1. Эти элементы управления используются при реализации поддержки Статусов. Поэтому в Windows Forms приложениях необходимо устанавливать свойство UseOldTemplates в true.

Для ASP.NET приложения добавьте модуль XafariBСWebModule в ASP.NET Web Module Project. Затем следует кастомизировать шаблон по умолчанию (см. https://documentation.devexpress.com/#eXpressAppFramework/CustomDocument113460):

 

protected void Session_Start(Object sender, EventArgs e) {

  ...

  WebApplication.Instance.Settings.DefaultTemplateContentPath = "~/MyTemplateContent.ascx";

  WebApplication.PreferredApplicationWindowTemplateType = TemplateType.Horizontal;

  

  WebApplication.Instance.Setup();

  WebApplication.Instance.Start();

}

 

Дальнейшие действия не зависят от платформы.

Реализуйте интерфейс Xafari.BC.IStatusSupport в требуемом классе. Образец приведен в следующем фрагменте кода:

 

public class Order: DocumentBase, IStatusSupport 

 {

         public Order (Session session) : base(session) 

         {

         }

 

         public override void AfterConstruction()

         {

                 base.AfterConstruction();

                 this.CurrentStatus = StatusTypes.Draft;

                 

                 . . . . . . . . . . . . . . . . . . . .        

         }

         // Class properties

 

         . . . . . . . . . . . . . . . . . . . . . . . . . . . . 

 

#region IStatusSupport Members

 

         public string Name { get; set; }

 

         public StatusTypes CurrentStatus

         {

                 get { return this.GetPropertyValue<StatusTypes>("CurrentStatus"); }

                 set { this.SetPropertyValue("CurrentStatus", value); }

         }

 

         /// <summary>

         /// Gets and sets the name of the last user who changed the status.

         /// </summary>

         [VisibleInListView(false)]

         [VisibleInLookupListView(false)]

         [Browsable(false)]

         [NonPersistent]

         [Obsolete("Use StatusModify", true)]

         public string LastStatusModifyUser

         {

                 get { return this.StatusModify.Executor; }

                 set { this.StatusModify.Executor = value; }

         }

 

         /// <summary>

         /// Gets and sets the date of the last status change.

         /// </summary>

         [VisibleInListView(false)]

         [VisibleInLookupListView(false)]

         [Browsable(false)]

         [NonPersistent]

         [Obsolete("Use StatusModify", true)]

         public DateTime LastStatusModifyDate

         {

                 get { return this.StatusModify.Date.HasValue ? this.StatusModify.Date.Value : DateTime.MinValue; }

                 set { this.StatusModify.Date = value; }

         }

 

         [Browsable(false)]

         public ActionInfo StatusModify;

 

         ActionInfo IStatusSupport.StatusModify

         {

                 get { return this.StatusModify; }

                 set { this.StatusModify = value; }

         }

#endregion

 }

Запустите приложение, вызовите List View или Detail View объекта, в нем будут поддержаны операции со статусом.

Windows Forms:

ASP.NET: