Business Components | Xafari Framework

Business Components

Object Status

The Object Status reflects its current readiness for the usage. The following statuses are available:

  • Draft – the object is being edited.
  • Published – the object has been edited, it can be used.
  • Archive – the object is obsolete.

When objects with status are displayed, the List View shows the following Actions:

  • Show draft – activate/deactivate the display of draft objects.
  • Show archive – activate/deactivate the display of obsolete objects.
  • Status – choose another status.

Detail View also contains Actions that allow to change the Status. Object Status is used for active locks. It is implemented for XPO and DC objects. For more information about the Object Status, please refer to the documentation.

Hierarchical Data

IHierarchyNode is an alternative to ITreeNode. ITreeNode is a very abstract description of hierarchical data and does not take into account the specifics of the hierarchy implementation. Therefore, TreeListEditor can operate efficiently only with small hierarchical data volume (less than 1000 objects). IHierarchyNode is specially designed to process parent-child relationship with maximum efficiency. IHierarchyNode allows to implement several hierarchies and switch to the representation of hierarchical data on List View. There is also an opportunity to manage the removal strategy of subordinate (children) nodes. The following removal methods may be defined:

  • delete the object and all references to the object; in so doing, all child elements of the object become root elements.
  • all child elements move up by one position in the hierarchy and end up in the parent's position when the node is deleted.
  • deleting the object and all its child objects.

To display the data, implementing IHierarchiNode, there are special List Editors: ASPxXafariTreeListEditor, ASPxHierarchyNodeListEditor, ASPxExplorerListEditor, XafariTreeListEditor, WinHierarchyNodeListEditor, WinExplorerListEditor. For more information about the Hierarchical data, please refer to the documentation.

Multiple Selection

This tool is intended to edit and store the sets of selected objects and uses these sets for building effective database queries. DevExpress XAF also offers a solution to these problems, but it leads to unnecessary complication of the data model in application. This is due to the creation of individual persistent collections with special persistent objects. Xafari delivers a comprehensive solution with a fixed structure of the database. It does not need to add new persistent objects. Also, this solution allows you to create efficient queries to the database without any additional coding. Multiply Selection includes:

  • Persistent objects to store references to selected objects.
  • A special ObjectSet class to implement a set of selected objects. It allows to specify the IDs of the individual objects or to select them by criteria.
  • A special editor to work with ObjectSet. It allows to specify certain objects or to use criteria.
  • CustomFunction to construct efficient queries in the database that contain one or more filters based on sets.

Multiply Selection is implemented for MSSQL and Oracle. For more information about the Multiple Selection, please refer to the documentation.

Xafari Security

Xafari Security Modules supports all the basic XAF Security features and provides a variety of additional functions and technologies. It includes:

  • XafariAutentication which is a new form of user authentication. It allows the user to choose the authentication method: Windows or standard.
  • DC based Security System implements data model according to the Domain Components technology. The data schema repeats the standard XPO model and is very popular in DC based applications. DC based Security System interacts well with eXtensions Framework.
  • Extra Permissions. ActionPermission regulates user access to the Action execution. NavigationPermission regulates user access to Navigation Items.

For more information about the Xafari Security, please refer to the documentation.

Extensions Framework (XF)

eXtensions Framework can be described as a sample for complex applications design and development. It includes rules, agreements, and recommendations on the design, as well as a library of base classes and extension methods of XAF components. Simple and clear data business-model The basic concepts are Entity and Entity Extension. The main idea of eXtensions Framework is the way of adding new fields to application Entities. The classical approach to this problem in object-oriented programming (OOP) is inheritance, i.e. Extension inherits from Entity. eXtensions Framework solves this problem inside the Entity by adding a necessary association to the Extension. The use of Domain Components allows to include the whole Extension to the Entity object without any additional constructions. There are no extra “technological” business objects Inheritance implies such an unpleasant consequence, as the emergence of new types (business-objects) in the application. The eXtensions Framework can get rid of such effects. While using object-oriented programming (OOP), the original purpose "Extend the Entity" is achieved through the creation of a new Entity. In this case, the emerged class is a consequence of the chosen technology, so it can be called a "technological" object. eXtensions Framework clearly distinguishes between business Entities and their Extensions. Extension is only an Extension and not an Entity which is extended. Therefore, the "technological" business objects are missing in the application. The modular strategy of extending the data model. eXtensions Framework allows to create any required combination of modules from the available set of Extensions. In doing so, conflicts of sharing "parallel" Extensions appearing when using inheritance are completely excluded. For more information about the Extensions Framework (XF), please refer to the How to Design Complex Systems post.

Logic Controller

There is a known problem in XAF, associated with the fall of application performance when using a large number of controllers. LogicController is a way to implement the business logic of the application. It can significantly reduce the number of controllers in the application without functionality gaps. The basis of this technique is the LogicController class. It is similar to ViewController and can be used instead of the ViewController. LogicController refers only to particular type of business object and it initializes only on View for this business object. LogicController not a descendant from Controller, therefore View will be accompanied only by those LogicControllers that refer to a specific type. For more information about the LogicController, please refer to the Logic Controller post

Bulk Edit

Xafari platform provides the feature allowing to edit groups of objects in the List View. Such functionality is required when a property should have the same value in a number of objects. The user can select the objects and edit the property once for the entire group. A special editor, which is displayed in a Dock Panel, is used to edit the common values. For more information about the Bulk Edit, please refer to the documentation.

Business Numerators

When a new persistent object is created, the Numerator service allows to automatically set its properties by sequential numbering. Numerators provide the following main features:

  • The developer can set start value and step for the numerator index.
  • Ability to create templates which get their values by the numerator depending on the index.
  • Through Numeration. It can be used for sequential numeration of objects of different types. For example, one sequence of numbers can be used for all outgoing documents, such as waybills, pay sheets, etc.
  • Possibility to reuse the numbers of deleted objects. It means that all numbers of the numerator will be used. If an object is deleted, its number does not disappear. It is used again in the next call of the numerator service.
  • Support batch processing of documents.

Numerators are implemented for XPO and DC objects. For more information about the Business Numerators, please refer to the documentation.

Extra Categories

Categories allow to classify the data in the list. It filters the data based on the selected referenced object. Categories are implemented as Dock Panels displaying the list of referenced objects. Categories can be activated and customized both in Application Model and the code. Categories are implemented for all platforms: Win, Web, Mvc. For more information about the Extra Categories, please refer to the documentation.

Managed Operations

The Managed Operations module allows the end user to fully control the starting and running of any method in the XAF application. The Managed Operations service displays the method execution process in a special View. The user can interrupt, suspend, or resume the process. It is possible to monitor several parallel processes. The launch of the managed operation is logged; the information can be stored in a database. The Managed Operations service offers various ways to implement the execution of the application method in depend on the end customer needs. The key features of the service are listed below:

  • Synchronous and asynchronous Managed Operations
  • Three ways to display synchronous Managed Operation: progress in percentage, infinite loop, stages.
  • Global and local Managed Operations
  • Subprocesses
  • Unique Managed Operations
  • Logging
  • Special Dock Panel to administrate and monitor

Managed Operations are implemented for all platforms: Win, Web, Mvc. For more information about the Managed Operations, please refer to the documentation.

Dynamic Properties

Dynamic Properties are additional properties of the business object, it is intended for storing and processing additional data are not provided by the standard application configurations. Xafari provides base clases to implement Dynamic Properties. It should be noted that XAF supports a similar component called Custom Property. But there is a significant difference: the Dynamic Properties exist only for the object instance. Therefore, two objects of the same type may have different Dynamic Properties. To display Dynamic Properties, it is recommended to use special editors, such as VerticalGridPropertyEditor and others. Dynamic Properties is implemented for XPO and DC objects.

Application Settings

Application Settings implement a lot of uses as a tool for centralized management of complex enterprise application. Technically, it is a set of global stored variables. Application Settings Module provides the infrastructure needed to support all settings with different types (including persistent) implemented in various modules. Application Settings Module provides the following main features:

  • The developer can implement separate Settings or Settings groups in a hierarchical structure.
  • An approach similar to the extension of the Application Model when implementing Settings structure.
  • Each module can contain its own Settings. After adding the module to the application, these Settings are integrated into the overall Settings system.
  • The possibility to define several layers of Setting values. The values of the subsequent layer override the previous layer. The same principle works in the layers of Application Model.
  • A separate layer of system Settings.
  • The possibility to define user Settings layer.
  • Access to Settings regulated Security System.
  • The client can convert Settings when updating the versions of the application.
  • A special API to process Settings in the code.

Application Settings are implemented for all platforms: Win, Web, Mvc. For more information about the Application Settings, please refer to the documentation.

Data Versioning

Enterprise application data undergoes substantial changes as time passes. After the object is created, it can be changed many times or even deleted later. Meanwhile, the object can be a member of various business processes, the object's data can be used for creating reports, or it can be analyzed in other components. In connection with these processes, it can be important to have a method for observing the state of the analyzed object anytime. The data version control module (also called Versioning) is intended exactly for this purpose. Data Versioning means the ability to associate the current business object state with the point in time, and the ability to access the object state (i.e. version) for the specified point in time. Version control systems, such as SVN, TFS, and others face similar tasks. The support of business objects versioning is based on the following concepts:

  • The support of versions is only available for the business objects implemented using the Domain Components.
  • The Domain Component of the business object is used for storing versions of the business object.
  • VersionId property exposes for business objects with the version control. The property stores the same value for all versions of a business object.
  • Compulsory usage of calculated properties and VersionId property to refer to business objects with version control.

The next operations with object versions are available:

  • Save the newest version of the object (Save as new version).
  • Get the last version of the business object (Get Latest Version).
  • Get the specific version of the business object for the specified date and time.
  • View the object change history (Show history).
  • Set the current date for operations with versions.

For more information about the Data Versioning, please refer to the documentation.

Work Places

Work Place is a flexible and effective option for configuring the UI of the application according to individual user demands and requirements. One user may have several Work Places. The method of configuring user's Work Places is based on the idea of using additional layers of Application Model. Additional intermediate layer allowing to configurate Work Places is introduced in Application Model. Each user of the system can have the access to multiple Work Place configurations. In their turn, all changes made by users are stored separately in the Model for each user and particular Work Place. To associate the user with an appropriate Work Place, an additional role in the security system should be created by the developer. This fictitious role is intended to access the Work Place without any extra permissions. The name of the Work Place must comply with the name of the created role. Work Places are stored in the .xafml file. If the file name comply with the Role name, then the user gets access to the Work Place. There is a special tool Xafari.Workplace.ModelEditor.exe to create and edit Work Places. For more information about the Work Places, please refer to the Work Places post.

Data Management (Import/Export)

Xafari Data Module provides import and export data in arbitrary XAF-application. It is required for solving the following:

  • enter the original data to the database
  • mutual integration with other applications
  • application updating to newer versions

Such problems always arise in the deployment and exploitation of custom enterprise applications. To deal with such problems, Xafari offers a standard declarative approach successfully tested in practice. Xafari Data includes several types of data sources (Access, XML, CSV, Excel, Galaktika ERP, and so on). The principle of extensibility allows to implement individual data sources.

Business Operations

Business Operations component is intended to transform the input data into the output data. Some Business Operations can perform complex calculations with subsequent changes of the business objects state, i.e. they can modify the application data. Other Business Operations work in read-only mode: they obtain the input parameters and the application data and return some results then. The examples of Business Operations are listed below:

  • the payroll process,
  • the formation of the invoice on the basis of contracts,
  • obtaining a price list,
  • MRP procedure and so on.

Each Business Operation is an integral part of the subsystem interaction interface. They also have a special mechanism to override their implementation without recompiling the code, thus they can be used as the points of the final application configurating. Business Operations are used to maintain compatibility between different versions of the subsystems.

Business Operation can be executed either independently or in the context of a certain object. Context-dependent Business Operation use the data of the business object, in the context of which they are started. For example, if the amount recalculation of the waybill is needed, it is rational to run this operation in the context of the waybill's instance. To do so, the developer should implement a context-dependent Business Operation. Independent Business Operations work without taking any context into account. For example, it may be a batch generation of expenditure vouchers or a database integrity check.

For more information about Business Operations, please refer to the documentation.