Openbravo main concepts

System requirements

Openbravo runs on top of a group of well-known third party applications:

  • Apache-Tomcat. We use Apache Tomcat as the servlet container but others can be used instead
  • Apache-Ant is used to automate a number of tasks such as build the system from source code
  • PostgreSQL (8.3) or Oracle SE (10g-11g) database

All of these applications can be installed both on Linux or Windows.

Development Environment

Openbravo developers have three different ways to develop their code. Following the MDD approach, most common is to edit Openbravo Application dictionary through a web browser connected to Openbravo ERP. Based on the new model definition the software artifacts can be generated automatically. A developer can also connect directly to the Openbravo database through a sql client (eg. pgAdmin, sqlDeveloper) to manage database schema objects (tables, procedures, etc.). Finally developers can develop their own code through an integrated development environment such as Eclipse.

All openbravo software artifacts are stored in text files in the development project. This includes the database definition and content. The large advantage of using text files for storing all software artifacts is that it is much easier to share and compare changes made by developers in a distributed environment.

Openbravo uses a tool called DBSourceManager to manage database source code. DBSourceManager is able to read from the database schema objects and application dictionary data and export them to xml files. It can also create or update an Openbravo database from those xml files

The process to build the system from openbravo source code includes a number of steps to generate the code at different levels (DAL, WAD and others) and put together that code with other code directly written by developers. Openbravo has automated this process through an ant task.

The automation of code generation is achieved by using the Application Dictionary and the WAD (Wizard for Application Development). WAD automatically generates all the files of the application with an MVC architecture using Openbravo MVC framework

MVC Foundation Framework (MVC-FF)

The Openbrave web user interface follows a model-view-controller approach. Openbravo uses an advanced runtime generation and templating technology (MVC-FF) to generate the user interface (the html page) on request.

MVC-FF is composed of a set of utilities developed by Openbravo: XmlEngine, SQLC and HttpBaseSecureServlet. MVC-FF is needed to allow the development of decoupled files for the Model, View and Control components of the MVC architecture.

This set of utilities has been used in the development of many other MVC applications, and it has proven to be very efficient for the Openbravo development team


XmlEngine is a utility used to create XML/HTML documents from a template in XML/HTML format and an XML configuration file with the dynamic data to be inserted in the template.

XmlEngine is easy to use because the design of the template is the identical to that of the final document desired. The input of data is made identifying the places where data will be displayed by using standard XML/HTML attributes like “id” or tags such as “DIV”. The configuration file maps the data source fields with the places identified in the template. To improve performance, the templates are read and stored in memory.

When a page is required, the template creates a document and fills it with data. The XmlEngine tool is responsible for generating the forms for editing a record, list a selection of records, create reports with grouping levels or print specific forms of the application.

The XmlEngine is described in more detail on this page.


SQLC (SQL Compiler) is a utility used to avoid the repetitive task of writing Java classes to interact with the database. The input is an XML file that contains standard SQL statements and the parameters used in the statements. SQLC reads this file and generates a Java class that has all the code necessary to connect to the database, execute the statement, read the record and create standard Java types as return for the methods.


HttpBaseServlet and HttpBaseSecureServlet are the servlets from which all of the servlets of the system that implement the Control component of MVC are derived. These servlets implement common functionalities such as authentication, authorization, database connectivity and error handling. The servlets deriving from HttpBaseSecureServlet make the standard control of reading data, interacting with the database with classes generated by SQLC and providing the output with XmlEngine. For more information on the Openbravo base servlet structure visit this page.

Data Access Layer (2.50)

In the 2.50 release a new component has been added to the Openbravo Architecture: the Data Access Layer (DAL). The DAL uses hibernate to make Openbravo entities and business objects available to the Java developer.

The DAL provides the application developer with the following functionality:

  • type safe querying and retrieval of business objects from the database.
  • a convenient API to update or create new data in the database.
  • a type safe interface to update information of a business object, increased productivity by making the properties of a business object directly visible through getters and setters (in the IDE).
  • transaction and context handling.
  • security and validation checking.
  • automatically maps new entries in the Application Dictionary to database tables and columns.
  • generates Java class business objects (and their associations) on the basis of the Application Dictionary model.

The DAL consists of a development-time and runtime part. The development-time part takes care of generating Java business object classes. The runtime part takes care of mapping Java classes to the database and supporting functionality such as querying, security and validation.

For more information about the Data Access Layer please visit this page.