Framework Architecture

Présentation Globale

MRules Framework aims to centralize and to offer a set of utilities that serve as a basis for the development of other products.

It is designed to be modular and extensible. It is not specifically dedicated only to MRules products, but can integrate perfectly with an existing application by giving it a certain value added in terms of maintenance and evolution.

The diagram below shows the main features of the product.

 

MRules framework global architecture
MRules framework global architecture

Logs

MRules products can be integrated into an existing or future application, regardless of the technical choices that have been made. Logs are an essential part of a software exploitation. As a result, the necessary has been put in place for the MRules products logs to integrate seamlessly with the system in place.

Supported logs frameworks are:

  • slf4j first priority
  • junit otherwise
  • Java Utils Logging (JUL) as fallback

> More information in the page dedicated to logging.

Resources Loader

This utility allows MRules products to load their configuration into a system composed of multiple Class Loaders, with respect for security rules.

It is compatible with complex Class Loaders, such as the one used by Spring Boot for example, packaging the application libraries inside a global package.

> More information in the api javadoc.

Property Access

One of the two most important features of our Framework is to allow data access (stored in Java objects) in a generic way (ie by name using Java reflection).

Many Frameworks offer this feature (Apache Commons, Spring Beans, etc …). However, we decided to fully develop this feature for the following reasons:

  • Optimize the code to maximize performances
  • Add extra features
  • Release dependencies to third-party libraries

> More information in the page dedicated to data access.

Converters

This is the second main feature of our Framework. The read data must be exploited. And potentially, it must be converted to another type to allow it. For example, imagine that we need to sum the data “25” and “35”, read as strings. We need to convert them into numbers before doing the operation. This conversion is transparent thanks to our Framework.

As for data access, this feature is offered by other libraries in the market. And we redeveloped it for reasons identical to those described above.

> More information in the page dedicated to data conversion.

Commons Beanutils Plugin

This connector overloads some of the components of the Apache Common Beanutils library into an existing application. The properties access and conversion features will gain performance.

This plugin must be explicitly enabled. Even if MRules and Apache libraries are used, this is not the case by default.