You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Next »

Table of contents

Persistency management

Persistency management is the term used in Blueriq to address everything that has to do with persisting (or saving, storing) information and later on retrieving, displaying, updating and deleting this information.

Experienced Business engineers might use the Dossier Manager (Dossier plugin) for Persistency Management. The functionality described in this design guide is aimed to replace this Dossier Manager.

The following terms play a role within persistency management in Blueriq and will be discussed in this design guide:

  • Aggregate definition
  • Entities, attributes and relations
  • Lists of aggregates
  • Standard meta data
  • Create, read, update and delete

In future versions, the following functionality will be available and subsequently described here:

  • Non-singleton aggregates
  • Custom meta data
  • Versioning
  • Precise aggregate definition
  • References between aggregates
  • Authorization

 

The functionality of aggregates is released iteratively, which means that with each release more functionality will become available.

Aggregates

Organizations usually offer more than one product or service to their customers. All these products and services have their own cases, so multiple cases can be running concerning the same customer. To get a good overview of a customer there is a need for shared storage of information, which is shared among the several cases. Ta accomplish this, the concept aggregate is introduce in Blueriq.  See the example below.

Shown above are three different cases that are all part of a single business model of a fictitious insurance company. The first case concerns a medical insurance, the second a dental insurance and the third a home insurance. These cases use and share information. The medical and dental case both use the medical information and information about persons, whereas the home insurance makes use of the person information and information about houses. These information objects are called aggregates in Blueriq and will typically exist of a couple of entities with their endogenous relations.

The reason that different aggregates can be created has to do with design, reuse as well as performance. It makes no sense to use information about a house when deciding about a dental insurance. On the other hand, it is not wanted that a medical insurance case and a dental insurance case each use their own medical information. Finally, unnecessary information used in a case will result in unnecessary actions that will have a negative impact on performance.

Aggregate definition

So, aggregates are used to combine information that belongs together. In Blueriq, information that belongs together is modeled in an entity. Aggregates simply combine entities.

An aggregate typically consists of a couple of entities with their endogenous relations. At the moment, only singleton entities can be added to an aggregate definition, but all non-singleton entities that are connected to the singelton are part of the aggregate as well. Also, at the moment it is not possible to create a precise aggregate definition, excluding for instance a few attributes and relations. Shown below is the design of the aggregate Person information.

As mentioned before, at the moment an aggregate definition can contain only singletons. The design of the aggregate Person information will therefore only consist of entities Person and CurrentEmployment. However, the entity Person has relations with the non-singleton attributes Job and Household, so whenever a person is stored, his or her jobs are also stored, as well as the person's household situation.

In future versions, aggregates can also consist of non-singleton entities

Working with aggregates

In order for an end user to work with aggregates in cases, it must be possible that these aggregates are displayed in a list. This list functionality is very similar to the list functionality that is already available for instances, tasks and cases. By letting the business engineer create different aggregate lists for different purposes, the end user will work with only the aggregates that are relevant for him. Furthermore, since only a specific set of data from these aggregates is retrieved from the database while displaying them - and not all aggregates completely all the time - this will boost performance.

To let the business engineer create meaningful aggregate lists, custom metadata attributes can be added to the aggregate definition. A custom metadata attribute is an attribute that is not necessarily part of the domain and is therefore defined by an expression. This expression may however only use relations and attributes that are directly or indirectly part of the aggregate definition. In the example above, an aggregate list could contain custom metadata attributes like name, age, city of work or total number of persons in the household. The aggregate list cannot contain a custom metadata attribute blood type, since this is part of the medical information aggregate.

 

  • No labels