Invengine is an XML/XSL based database application generation tool targeted at rapid and flexible application development suited for dynamic environments. The creation of a database schema design file and a user interface (GUI) design file (both in XML) is all Invengine needs in order to instantiate a fully-fledged application (thus automating tasks that usually take lots of development time). Invengine is styled using an XSL layout design file that transforms the “abstract” Invengine application to a format readable by different enduser systems. Default Invengine offers a HTML based - hence “browsable” end-user presentation using common concepts like buttons, text-controls, pull down-boxes, tabbed forms etc.
The division of application design in these two aspectdesigns stems from the fact that Invengine is implemented using the proven MVC (model-view-controller) architecture. Invengine however takes separation a step further by removing the business logic completely from implementation and putting this information in these schema design and user interface design files. All necessary logic is now generated using these files thus removing the need for programmer intervention (see illustration). This way the system is VERY easy to implement, extend or adapt for supporting ever changing information demands thus reducing time-to-market. Given a data model an Invengine application can be up-and running within a matter of hours!
At runtime the XML meta data files are interpreted by PHP software modules: (1) a Request Handler translates HTTP user requests to database transactions or screen navigation events, (2) Data Services, generated from the Schema file, define and execute SQL92 and file system operations, (3) View Services, generated from the GUI file, build XML representations of the GUI screens and (4) a Layout (UI) driver generates default and printable HTML layouts from the XML defined screens using the Layout file (a layout driver to Java is possible).
- Nested database forms (arbitrary deep nesting only limited by hardware).
- Built in "file" support (substitution of a databases' BLOB capability by storing files on the file system instead) with template based path generation with use of related records.
- Based on industry standards: Apache for http server functions, PHP for the applicationlogic, XML and XSL for schema design, user-interface design and layout and (ANSI compliant) SQL for DMBS-control.
- Independence of backend-platforms because of the Apache/PHP/SQL platform. SQL databases PostgreSQL and MySQL support is already implemented but Invengine can be easily adapted to support other SQL supporting DBMSs by extending the Database “driver” component.
- Independence of frontend-platform because of the abstract XML userinterface that can be rendered to all kinds of platforms (HTML, WAP but also more advanced interfaces with for example Java using custom Layout Drivers. Currently Invengine offers out-of-the-box support for HTML front-ends (IE/Mozilla) through an XSLT Layout “driver” component.
- Authorisation and security (support of user- and role-based permission granting for reading and/or writing).
- Multi- and concurrent user support (optimistic heuristic).
- Scalability (support of database connection pools, no constraints on database- or table-size).
A demo of a running system can be found at http://molgen70.biol.rug.nl/molgenis_demo. This is an example of the Invengine approach from within the domain of bioinformatics.