The Aviantes-Business-Application-Framework is used for easy creation of complex business applications based on the three-tier model in the Java programming language. Thus the framework consists of a server and a client component. This is completed by one or several databases.
The server component has no direct user interface and can be used in different environments by using appropriate wrapper classes. A wrapper class for using the server as a servlet in a J2EE container such as Tomcat is included within the framework. The server component performs the following tasks:
Core components of the server can be replaced with your own classes in order to integrate specific features into the server.
The business logic of the subject-specific application will be integrated with your own modules into the server. These modules implement a particular Java interface or are derived from an abstract base class. These module classes will be integrated into the server by adding them to the server configuration file. All modules can easily use the resources of the server such as database connections, tenants, logging, etc.
The subject-specific modules have primarily the function to offer specific services to the clients for example providing required data, changing or deleting data etc. The implementation of such a module is very easy. First step is to create an interface that defines all necessary public methods for the clients. The module itself implements this interface then. A client or client module calls methods using the created interface. Each client module can call methods in every server module. Therefore there are no 1:1 relationships or any restrictions. The principle is very similar to Java RMI (Remote Method Invocation). However, the framework does not use RMI. It has a simpler and more flexible data transmission process implemented. In this way the drawbacks of RMI are avoided (no RMI registry necessary, no special port clearances required, only one free server port is needed). Also this method can easily be adapted or extended for example to encrypt or compress the data transfer.
Once a client calls a method from a server module and a database access is required for this thread the first time in this call a database connection is reserved which is used for all subsequent requests in this thread then. The connection always belongs to the tenant database the client is working on at the moment. The server also monitors whether initiated transactions are properly terminated.
The server can be configured internally by the developer and externally during installation of the application at the destination computer. For example the server modules and the database schema are set up in the internal configuration. The external configuration comprises the system database connection data (JDBC driver class, url, user, password) and logging information. The mechanism of the external configuration (how the server gets these parameter) is exchangeable as many other things are too.
The client is a Java application based on Swing. Ideally the clients are started using the Java Webstart mechanism. Java Webstart provides a very easy install and update of the client software which runs completely automatically. The client in the framework performs the following tasks:
A user logs in with username and password at the client. Selection of the tenant happens simultaneously (if more than one is available). Another tenant can still selected later by using appropriate menu items. But it is necessary to close all open modules before a tenant change can be performed. A client can only work with one tenant at the same time.
A menu contains all available modules which a user may open and use according to the rights of the logged in user. The opened modules can be presented in different ways (MDI application, SDI application, tabs in one frame). If one module allows this it can be opened several times by one user and so it is possible to work with different data rows at the same time.
Of course modules can be implemented completely in Java itself. XML modules and panels are easily expandable. They can even be created by people who have no programming skills. Only basic XML and database skills are required.