NetLine/Crew is a crew management software for airline operators that supports the planning of shifts for crew members. It has a loosely coupled component, a rule based production system which evaluates customer specific rules on it’s model. This model is built up from the facts given by the core system, utilizing classes that can be extended with new data fields by the rule based production system itself. The dynamically added fields can then be used as if those were normal public fields of the the class. Until then NetLine/Crew could not persist the instances of such dynamically extended classes.
In most cases these objects with dynamic structure hold valuable information for the business. Hence such instances only exists in memory during runtime, the information cannot be queried and analyzed by third party tools such as OLAP and reporting solutions. So the aim is to design and implement a module which can save such entities to a persistent storage; it must also be able to read these persisted entities back from the storage.
The implemented solution utilizes Oracle’s dynamic SQL capabilities to provide the desired function. The architecture of the module was designed such a way that most components can be replaced with alternative implementations if needed. Aligned to the core system the implementation was created as a C++ module. It uses Oracle PRO*C/C++ precompiler to process the dynamic embedded SQL queries. The module can create and modify the database schema in alignment with the dynamic structure of the persistable entities.