Chapter 1. GNUe Module Proposal

1.1. Introduction

1.1.1. What is this document intended for?

This document shows some of the ideas I would suggest for Gnu Enterprise and I would like to have them discussed.

I plan to take other concepts discussed in the mailing list (and widely accepted) into this document, so that maybe this document will somewhen be merged together with others (e.g. An Introduction for Developers from James S. Thompson) and become the Gnu Enterprise Module Writer's Guide.

Comments about what should be changed in this document (and what is even missing) are very appreciated, because every comment possibly reflects on future versions of this document and therefore will make the final document better.

1.1.2. General Structure of GNUe Modules

Generally speaking, all GNUe Modules share the following structure: (note that this drawing shows the parts a GNUe Module consists of, not the way how these parts interact with each other)

+--------------------+-----------+
!                    !           !
!    Components      !           !
!                    !           !
+--------------------+  Reports  !
!                    !           !
!  Business Objects  !           !
!                    !           !
+--------------------+-----------+
!                                !
!        Table Definitions       !
!                                !
+--------------------------------+
  

Table 1-1. Module Structure

Table Definitions In GNUe, Data is held mainly in a RDBMS. Each module that will bring new persistent data into the system will probably add some table definitions by defining new tables and/or adding columns to existing tables. Of course it is possible to have modules not expanding table definitions, although that would be rather unlikely.
Business Objects Most modules will add business objects; this is the part where the business logic lies. Business objects do not necessarily represent (or encapsulate) underlying data structures; there could also be business objects only providing some functionality in between other objects, e.g. generating purchase orders out of analyzing current stock and past sales figures (correct me: or would that be an application?).
Components Components can provide an interface between the business objects and the user or even other processes and programs. Also Forms and other necessary items are considered components. A module can be one giant component or several components. (This really needs to be better explained. :)) (Derek: I agree :) - Reinhard)
Reports Generating reports from the underlying data is done using GNUe Reports. First versions of GNUe Reports will probably take their data directly out of the database. However, there are plans to make GNUe Reports communicate with the business objects / GEDI instead of directly with the database.