Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
eFaps uses a variation of the Three-tier architecture. (see Wikipedia for basic explanations).
The Standard User interface can be accessed by using one of the current Browsers like Firefox, Chrome etc. As an alternative the eFaps-Console can be used for administrative Functions. For delivering the Webinterface Apache Wicket is used as main component. The console is connected to the middle tier via RESTful Web services by using Jersey.
The eFaps-Kernel provides the middle tier. It uses the CI-Items (Configuration Items) to provide logic, type hierarchy, access control, user interface definition etc.
To reduce the traffic to the database and speed up the processing and response times [Infinispan] (http://www.infinispan.org) is used as Caching mechanism.
For the data tier various different Databases that work with [SQL] (https://en.wikipedia.org/wiki/SQL) (SQL-92) can be used. Up to date MySQL, Derby, Oracle and PostgreSQL where used in different implementation. The use of PostgreSQL is highly recommended due to the reason that it is used mainly during development and provides the most used implementations.
This is just a very simple example how a sequence of request might by running through the different levels.
- A User asks "Get all Invoices and show their document number and total" by interacting with a Browser
- The kernel retrieves the request and translates it in the language for the database to get the objects
- The database returns the list of objects
- Kernel validates the access to the returned objects by request access rights from the database
- Database returns access rights for objects
- Kernel caches access rights
- Kernel requests object information based on the access rights from database
- Database returns object information
- Kernel sends information to Userinterface
Due to the use of the Caching mechanism the response time to a second request containing a similar User question can be reduced strongly.