Professional Documents
Culture Documents
Version Control
Version Author Date Change
1.0 Patricia San Juan May 9th, 2018 Document creation with correct template and versioning
3.0 Patricia San Juan Oct 30th, 2020 Minor versions updated
Table of Contents
Version Control
Table of Contents
Introduction
The concepts
Openbravo Commerce Suite
Openbravo business model
The architectures
Openbravo 3.0 architecture
Openbravo 3.0 user interface
Openbravo mobile architecture
Openbravo Web POS architecture
Openbravo Commerce Suite schematic diagram
I. Introduction
Openbravo is a software solution vendor that offers a global POS and retail management software
with the aim of helping midsize and large businesses to successfully manage their retail operations.
“Openbravo Commerce Suite” is Openbravo's commercial offering for the Retail Industry. This suite
offers a unique store solution or cash register system, composed by a set of modules that once
installed on top of Openbravo, deliver the retail functionality provided by Openbravo and the
technology to extend and create new retail functionality to adapt Openbravo as required.
Besides that, Openbravo Commerce Suite is backed by a complete back office functionality that is
the Openbravo Business Suite. The Openbravo business suite offers a comprehensive business
management solution with built-in ERP capabilities.
Openbravo agrees to keep the regulatory documents until the end of the third year following the
year in which the software or cash system ceases to be released.
● Increase productivity with a modern web user interface that is easy to use and learn
and can be personalized to end user preferences.
● Leverage a flexible and powerful security model that allows an effective control of
system access, accurate operational execution and auditing capabilities to full
compliance with all your security policies.
● Reduce manual work and increase data quality with process automation tools
● Ensure high performance in big load environments
● Safely protect new functionality added thanks to an easy to extend and maintain fully
modular platform.
For additional information, review the documents Getting started with Openbravo and Openbravo
platform features
Moreover, one of the requirements partners must need to meet, among others, is to support an
ongoing certification of their staff from a functional, technical, software implementation and sales
point of views, all of that according to Openbravo guidelines and recommendations.
In regards to French Fiscal certification, Openbravo will train its partners in France, on the correct
configuration and proper usage of “Openbravo Commerce Suite 3.0RR18Q4: 1.8.3900”, together
with the “French Fiscal module v 1.0.0”, therefore they are aware of the fact that any modification
make by them on top of that, will imply that they will have to make the corresponding attestation or
certification themselves.
Besides the above, Openbravo will request to its partners in France, on the correct configuration
and proper usage of the tools provided to support a correct conservation of data; tools such as OS,
minimum stack required as well as hardware and monitoring tools.
Starting from Openbravo Core version 3.0, Openbravo moves from a classic servlet architecture to
a Rich Internet Application (RIA) architecture. This is a radical paradigm shift resulting in a much
more dynamic and versatile user interface.
The Openbravo 3.0 architecture is implemented using Openbravo Core and several related
modules:
● the JSON module provides the JSON REST web service that is used for the client-server
data communication
● the Weld module that provides dependency injection and component management
● the Kernel module that takes care of infrastructure tasks as request processing, event
handling, and compression and caching.
● the DataSource module uses the JSON module and provides higher level data request
functionality for querying and data related actions
● the Smartclient module that provides the Smartclient user interface library
● and the Application module that contains the implementation of the navigation bar, grids
and forms and other application oriented client and server side code
Components are implemented in modules. A module has complete freedom on how to implement
components (if there is a window table, a grid table or a generic view table etc.). The components
within a module are managed by a Component Provider, that creates a component and provides it
to the Openbravo kernel. A component provider is also responsible for registering the static content
with Openbravo, this is explained in more detail below. A component can be retrieved using a URL
(a component request).
The following image illustrates the request flow processing in more detail:
● a component request (with a component type and id) is received by the Client Kernel module
(in the KernelServlet).
● based on the component type the kernel module finds the module responsible for handling
the requested component, that module is then called to create the component using the
component id.
● the module reads the component definition from tables or other sources and instantiates the
Component instance.
● the component is called to generate its client-side representation.
● if it is a templated component (i.e. it has a specific template) then the component calls a
template processor for the template.
● the view is generated using the template or by executing javacode which generates a String
(javascript).
● the result (often a javascript string) is returned to the Client Kernel module.
● the Client Kernel module processes the result: 1) checks the syntax of the result (using jslint)
and 2) compresses it using jsmin.
Note that the Client Kernel module also takes care of caching components and component
requests.
Openbravo Core Mobile Infrastructure is an Openbravo module which extends the Openbravo
Platform with HTML5-based mobile UI capabilities.
It provides an infrastructure that allows the development of mobile web applications on top of
Openbravo. Openbravo mobile web applications are optimized for mobile devices and touch
screens, and can be offline-capable.
Mobile Core Infrastructure is the module that once installed on top of Openbravo Core version 3.0,
provides all the infrastructure required to build mobile applications.
The server side of this module is an extension of Openbravo that includes some components to
server resources to the client side and to provide data to the client parts and process it, so data is
included in Openbravo.
The client side of this module includes a set of different technologies, each of them built with the aim
described below:
● Enyo.js is a javascript application framework sponsored by HP. Using it we have created the
components which conforms the windows of Openbravo Web POS. Enyojs also provides a
useful event management tool which allow us to trigger an event to be handled by another
enyo component. One of the best things of Enyojs is the capability to extend or overwrite
each components, it help us to customize components using an Openbravo ERP module.
● Onyx is a toolbox of UI enyo components. We use some of them to build our layout.
● UI Components are based on the two libraries explained in the previous sections, we have
created a set of common ui components (such as buttons, menus, keyboard, etc.) to be
reused by different applications
● Layout using onyx's Panels to create a multicolumn layout. Depending on the device
resolution it shows multi column or single column, in this way the applications are usable
even in small devices.
● Backbone is a JavaScript framework that allows to structure JavaScript code in an MVC
(Model, View, Controller) paradigm. In our particular case we have used backbone to work
with data (models and collections). A model provide functionality for managing changes
using its own methods and event handlers.
● Underscore that is a library that provides interesting tools to work with collections.
Backbone depends on underscore.
● WebSQL as the technology that allow to store big data in the client side, therefore it is easy
and fast to access to it. This data will be retrieved from the server (thanks to datasource) and
stored in WebSQL database. When the data is saved, it can be read it using dal.
● Client DAL is one of the most important parts of Openbravo. DAL helps to easily interact
with the database, in fact, it is used in the server side components. To access to WebSQL
stored data a client side DAL has been created. It allow Openbravo to manage WebSQL
database easily.
● Client Datasource is a concept which involves the tools that allow Openbravo to
communicate with the server in order to send or retrieve data easily from the client side.
As shown in the image above the server side of Openbravo Web POS is an extension of Openbravo
Core. Besides that a new layer has been included between Openbravo Web POS and Openbravo
Core that is Mobile Core Infrastructure. This new layer provides the infrastructure to build mobile
applications.
The component provider serves resources to the client side and it can be extended by other
modules.
Server datasource is the component that provides data to the cliente part and process the data that
comes from the client side so it is included in Openbravo backoffice.
Finally, “Hardware Manager” is a standalone web server which is connected to the different devices
(printers, scales, screens). The only requirement to install the hardware manager is to be connected
with the different POS terminals. This server will receive documents or strings to be printed/showed
in the different devices.
In the client side, when a print action is launched a template will be filled with the data. This filled
template will be sent to the server side using Ajax calls. Also is possible to retrieve data form server
side (scales). It is done using an asynchronous call also using Ajax requests.
Another functionality provided by hardware manager is as proxy. With this feature javascript
programs can execute cross domain calls through the hardware manager. An Ajax call will be send
from the JS application, HWManger will forward the info to the provided URL (as a parameter).
Below diagram shows how the Openbravo Commerce Suite works. It can be installed on top of an
Oracle or PostgreSQL environment. It also requires the usage of the Apache Tomcat server, and
Apache web server is usually installed and configured in front of it to provide both encryption and
compression utilities.
● Every modern application should use HTTPS to ensure the security of the transferred data
and to avoid the problem of security attacks, as only communication through HTTPS
ensures that third parties cannot read it, and cannot spoof the user identity.
● Moreover, on top of this security requirement, the WebPOS application in particular uses
some technologies (such as AppCache) which are only made available by browsers in
secured contexts, so Openbravo technically requires the usage of HTTPS.
A module is a piece of additional functionality that can be deployed on top of Openbravo solutions.
Examples of modules are those required to properly adapt Openbravo to different languages and
legal or fiscal requirements.
Therefore, all the functionality related to the French Finance Law mentioned above, will be
distributed as a module to be installed by any retail company operating in France.
This new module will be named as “French Fiscal v 1.0.0”, as it will enable the software to support
inalterability, security, retention and archiving conditions required by French Tax Authorities, on top
of Openbravo Commerce Suite 3.0RR18Q4: 1.8.3900.