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:
- eXtensionsFramework: Entities and EntityExtensions
- Business Operations
- Xafari Reports
- Application Settings
- Xafari Services
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.
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.
An alternative module for auditing user actions. Uses triggers in DB for effective work. Supports MS SQL and Oracle.
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.
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.
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 help specify the parameters of complex operations.
- Auto Refresh
Automatically refreshes data on the View.
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:
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.
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.
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.
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.
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 are business functions that execute in multithreading. The UI of the application can include all tools for operations’ viewing, control, and logging.
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.
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 task list of the user can be filled up both manually or automatically (for example, by means of Xafari Docflow).