-
Notifications
You must be signed in to change notification settings - Fork 5
Introduction
The idea of Description-Driven Framework was originated from the system called Cristal which was developed at CERN to manage the construction of the CMS/ECAL detector. Due to the scientific nature and the extended time-scale of the construction (10+ years), the users (physicists/engineers) wanted to gradually define and evolve detector elements, their data structures, construction steps and scientific calculations in order to produce the best possible device. In order to meet these requirements the team had to develop a system which could cope with change by design. Such unique constraint has inspired the research and development teams at UWE/CERN to design and develop a so-called Description-Driven System in which all logic and data structures have “descriptions” which can be modified and versioned to reflect changes required by physicists.
The original Cristal software was a fully functional Description-Driven System, it had to be configured and installed so it could be used like a CRM or WFM system. On the other hand the current version of cristalise-kernel offers building blocks to build fully functional description-driven system hence the name Description-Driven Framework (DDF).
The cristalise-kernel has packages to implement the description-aware functionalities common to many software systems. This list of packages is the result of careful and gradual re-factoring and abstraction of the original Cristal software elements.
Item is the heart of cristalise-kernel as it abstracts business objects and their logic into process-driven, version-controlled and document-oriented data that are managed on-the-fly for specific user domains. Item is fully audited as it stores all Events generated during the execution its LifeCycle. Items are also communication end-points (CORBA) and have unique ids to lookup them in a distributed environment.
Agent is Item with Roles to authorise it to execute the Steps defined in the LifeCycle of a given Item
The most important functionality of cristalise-kernel is the ability to read descriptions to initialise Item objects together with their constituting objects. In other words Item objects are instantiated from the Item class and are initialised from 'Description' objects. You may have noticed that in the section before there was no separate Description package because Description objects are Item objects as well.
The following paper explains the full concept of description-driven approach in great details:
- Getting started
- Key features
- Documentation
- Tutorials
- Basic: Create Patient
- Adv: Patient Tracking
- Selected papers
- Maven Deploy Travis
- Maven-Deploy-Travis-GPG2