Validation and processing framework
Every DTO inherits a method validate that automatically evaluates any BLoMo-Validation-Annotations on classes
or methods. By overriding that method the validation can be easily customized. But the validation and
processing framework goes much further than only DTO's. You can validate, process and trigger anything
you want.
The key to that are work-batches and work-items. A work-item is a wrapper for any object that should be
validated or processed. A work-batch stores multiple work-items and processes them at the same time. That
allows the validation and processing to operate with more than just true/false states. For example a test
could find out that the user is no longer logged in. At that point it would be a waste of processing time
to test or process anything else and the workbatch can be stopped immediately. Or you can process only
the items that pass validation. A true/false decision can not reveal how it effects the whole situation.
The execution of a work-batch or work-item will first validate and then process. Any validations and processors
in the work-batch apply to every work-item in it and validations or processors in the work-item apply only to
itself. Each processor can have trigger that are executed before or after the processing.
In a flow environment you can use the internal script parser to create the workbatch and thus allow customers
and programmers to quickly adapt to new requirements without changing the controller or services.
Access control
BLoMo provides flows with checks against user role and time. Using either simple configuration or additional scripting.
This allows the confgiuration of any time frame or role composition.
For example the lunch reservation can be made everyday between 08:00 and 10:00 am except on holidays. Or the recipes can only be
altered by the chefs. By creating the database entry's over the web-application the server functions can be restricted
comfortable and again without changing code.
By linking a BLoMoAccess entity any functionality can be controled. BLoMoRhythm is used for time based control
and BLoMoRights is used for any kind of script based control.