Xafari Service применяется при реализации Нумераторов и Настроек приложения.

Нумераторы

Сервис Нумераторов реализован как Xafari Service. В связи с этим появились дополнительные возможности, а также новые методы в API Hумераторов.

  1. Сценарии использования сервиса
  1. Любые операции с Нумераторами синхронно отражаются в БД. Этот сценарий реализуется использованием «старых» методов API.
  2. Операции с Нумераторами производятся в отдельном IObjectSpace. Отражение в БД всех изменений в сервисе производится после выполнения CommitChanges() этого IObjectSpace.
  3. Рекомендуется. Операции с Нумераторами производятся в том же IObjectSpace, что и нумеруемые объекты. Отражение в БД всех изменений в сервисе производится после выполнения CommitChanges() общего IObjectSpace.
  1. Доступны операции CommitChanges() и Rollback().
  2. Минимизированы обращения к БД при пакетной нумерации объектов.

Пример использования в коде

 

private void simpleAction3_Execute(object sender, SimpleActionExecuteEventArgs e)
{
 #region Scenario Same ObjectSpace
 // apply numenrators now
 this.ObjectSpace.ApplyNumerators(this.View.CurrentObject, ApplyNumeratorsStrategy.AfterCreate);
 // apply numerators on save
 this.ObjectSpace.ApplyNumerators(this.View.CurrentObject);
 // apply all delayed numerators
 this.ObjectSpace.CommitChanges();
 
 // rollback all numerator operations
 this.ObjectSpace.RollbackNumerators(this.View.CurrentObject);
 #endregion
 
 #region Scenario Own ObjectSpace
 using (var objectSpace = this.Application.CreateObjectSpace())
 {
         // apply numenrators now
         objectSpace.ApplyNumerators(this.View.CurrentObject, ApplyNumeratorsStrategy.AfterCreate);
         // apply numerators on save
         objectSpace.ApplyNumerators(this.View.CurrentObject);
         // apply all delayed numerators, CurrentObject not commited
         objectSpace.CommitChanges();
 
         // rollback all numerator operations
         objectSpace.RollbackNumerators(this.View.CurrentObject);
 }
 #endregion
}

 

 

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

Настройки приложения реализованы как Xafari Service. В связи с этим появились дополнительные возможности.

 

private void simpleAction4_Execute(object sender, SimpleActionExecuteEventArgs e)
{
 // get root slice
 var rootSlice = this.ObjectSpace.AppSettings().RootSlice;
 // get current slice
 var currentSlice = this.ObjectSpace.AppSettings().CurrentSlice;
 
 // get settings root node for current slice
 var rootCurrentSlice = this.ObjectSpace.AppSettings().Root();
 // or
 rootCurrentSlice = this.ObjectSpace.AppSettings().CurrentSlice.RootSettings;
 // get settings root node for root slice
 var root = this.ObjectSpace.AppSettings().RootSlice.RootSettings;
}