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.
flowaccess ER
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.