Architecture

Most GNU Enterprise programs are broken down along a N-Tier architecture. Which consists of

Back-end

GNU Enterprise relies on a third party SQL based RDBMS for data storage. GEDI will allow support for a variety of database systems. (GEDI Proposal and information coming soon.)

Initial development efforts center around the usage of the PostgreSQL RDBMS or unixODBC.

Business Objects

Business objects are the heart of the GNU Enterprise system. These CORBA enabled objects provide most of the business logic in the system.

Application

Applications can be broken down into two types, those that provide a user interface and those that do not.

For applications that provide a UI this would be the logic behind the interface. It doesn't contain any business logic in most cases, that's one layer down. It contains the processes that occur when a trigger is fired from the ICL (button X is pressed, app has requested shutdown, menu item Y selected, etc.)

If all ICLs support a standard set of form widgets, and a standard set of functions like get_functions required to provide a list of defined functions in the application. It seems possible to develop a nice IDE for simple apps along the lines of VB.

An application could also be written at this level that would "simulate" the old SQL*Forms program (with all it's flaws and bonuses). It would bypass the lower levels and would make a nice GUI builder for direct table access (something we should probably avoid, but someone, somewhere will need it)

Most developers new to GNUe would work in at this level using only the higher level business objects and the IDE.

The other type of applications would be applications that perform basic batch style processing on the GNUe objects.

ICL

Interface Client Level (aka Thin Client)

These programs are basically identical regardless of what language/platform they cover. They assume a certain number of procedures are available from applications. One of the most important would be a "get_ui" call that would tell the application to send a description of the form to be drawn (encoded in XML). These programs would handle mapping UI widgets we've defined as valid for an OBE user interface. Things like entries, labels, lists, picture, text, notebook tabs, triggers, etc.