Xafari Approach to Application Development


The Xafari platform includes additional modules for DevExpress XAF. These modules include the solutions for the following aspects:

  • Increasing performance;
  • Improvements to GUI ergonomics (including extra controls);
  • Additional components to implement ERP applications.

Using Xafari allows to create stable ERP solutions with improved UI/UX ergonomics. Useful XAF features of the application are kept without any significant changes.

Xafari differences compared to XAF

Xafari application development suggests using its own logic for both business logic and UI. It is strongly recommended to include all the elements below into any Xafari application.

Business logic consists of the following parts:

UI consists of the following parts:

The reasons for using this exact structure are described below as well as some other ready-to-use solutions intended to improve Xafari applications in comparison with a standard XAF app.


Using Xafari approach is not compulsory though being recommended. Each component can be used partially or independently of others.

Increasing performance

Xafari elements intended to increase the performance of the application are listed below:

  • Logic Controllers
    Minimizes the overall number of Controllers in the app.
  • Smart Design
    Creates default empty Views and allows defining default Views in the code when declaring business objects.
  • Xafari MVC
    Uses ASP.NET MVC to implement web versions of the application.
  • Audit
    An alternative module for auditing user actions. Uses triggers in DB for effective work. Supports MS SQL and Oracle.
  • XafariModuleBase
    A base class for custom modules. Implements the algorithms for optimal usage of resources when the app is starting.
  • Xafari Server
    Provides the parallel execution of time-consuming calculations. Implemented as a Windows service.
  • Message Queue
    Message Queue is used to manage operations that run on the Xafari server.
  • IHierarchyNode
    Replaces the ITreeNode service for persistent hierarchies. IHierarchyNode forms more effective requests to the DB when is used for persistent hierarchies.
  • Tabbed Detail Property Editor
    Lessens the complexity of DetailViews with lots of ViewItems.
  • Data Accessor
    Is used to implement the application’s business logic independently of the chosen way of work with data (IObjectSpace or UnitOfWork).
    Pay attention to the fact that UnitOfWork processes persistent data faster than IObjectSpace.

Ergonomics Improvements

Xafari components intended to improve the GUI ergonomics of the application are listed below:

  • Dock Panels
    Docking panels provide the user with the opportunity to customize the way of displaying data and to create additional Views. This element is of great value when showing large amounts of data from different Views.
  • Tabbed Detail Property Editor
    Is used to create a handsome Detail View including lots of View Item elements.
  • Quick Choice Property Editor
    Replaces LookupPropertyEditor to allow filling reference properties without the usage of popup windows.
  • Bulk Edit
    Modifies several objects on a ListView at a time.
  • Extra Actions
    Additional Action types. Check Action shows toggle button and supports two states: checked and unchecked. Aggregated Action is a dynamic container that group other Actions. Popup Container Show Action is similar to Popup Window Show Action. Wizard Action allows setting wizards up.
  • Multiple Selection
    This kit provides options for comfortable manipulations with multiple chosen objects and for building effective requests to the DB.
  • Wizards
    Wizards help specify the parameters of complex operations.
  • Auto Refresh
    Automatically refreshes data on the View.
  • IHierarchyNode
    Implements extra List Editors for more comfort in working on hierarchical data.


Xafari components developed specially to be used in complex ERP systems are listed below:

  • AppModule
    Significantly simplifies the administration of the application.
    This approach is based on the concept of developing the app using a special module (AppModule) to define parameters and properties of the application. The AppModule assembly can be hosted in various containers, e.g. in different applications (WinForms, WebForms, MVC, console, XAS) or services (WCF, Windows).
  • Xafari Application Support (XAS)
    A special service application embracing all functions for easy administration.
  • eXtensions Framework (XF) (DC only)
    XF implements the DC XPO based approach to creating data model. The main concept is to register entities only once (in the same modules where these entities are defined). To add extra functionality, entities should be associated with special extensions. The usage of inheritance is very limited.
    Such approach allows building quite a stable and rational data model.
  • Xafari Services
    This technology implements some deeper business logic required to create various service functions that can be customized in XAS by the administrator. The list of services that use this component includes Numerators, AppSettings, Business Operations, etc.
  • Data Management
    The assembly to create and customize import/export data logic for XAF applications.

Business Services:

Business Operations

These structural Xafari app elements implement functional business logic. They can be automatically added to Views for further usage. It is also possible to switch to different Implementations of a Business Operation without recompiling the code.

Xafari Reports

The general algorithm to build and customize reports. Each Xafari report includes report parameters, the implementation of the report data source, the function that reads the data source, and various visual templates for graphic layout.
Reports can be created on the reporting server.
The solution includes several types of templates (Xtra Reports, Excel, File, Analysis).

Work Places

This solution allows defining different versions of the UI for different workplaces, depending on the user role in the security system. It provides the user with the opportunity to choose between several possible workplaces in order to find the best one for the current goal.

Application Settings

The system of application settings specify the general principles of defining, storing, and customizing the parameters of the app. The responsible person is the administrator. All other users are allowed to modify settings on a separate data layer.

Managed Operations

Managed Operations are business functions that execute in multithreading. The UI of the application can include all tools for operations’ viewing, control, and logging.
Operations can be global/local, synchronous/asynchronous, and unique.

Xafari Docflow

This solution is used to develop a comprehensive document workflow system in the XAF application. The flow includes the list of the possible states for the document and the operations that can be applied to the document. The docflow customization is available in XAS configurator.

Branches Management

This solution helps divide data in DB for different branches. The administrator of the application can turn data from common to branch-only and vice versa.
The user chooses the current branch during the authorization process. The user is allowed to change only the data for the current branch. All other information is available as read-only.

Task List

The task list of the user can be filled up both manually or automatically (for example, by means of Xafari Docflow).