HotWax Commerce is built on top of Apache OFBiz, and it leverages the OFBiz architecture.
Apache OFBiz is an e-commerce and ERP application development framework. Over the past decade, HotWax Systems has built hundreds of custom OFBiz applications for our clients. So, OFBiz was the natural choice for us to use in building our own product, HotWax Commerce. This post offers a brief overview of the organization and building blocks that comprise OFBiz and HotWax Commerce.
Folder Structure
Starting at the top, all the files required to run OFBiz and HotWax Commerce are contained within two folders:
- the OFBiz home folder (i.e. the folder created when OFBiz / HC is checked out from Git)
- the Solr home folder
The system connects to a DBMS (e.g. MySQL, Postgres, Oracle, etc.) that can be hosted on the same or on different host machines. Finally, the system requires the Oracle Java JDK to be properly setup and running on the host machines. OFBiz and HotWax Commerce can run behind the Apache Web Server, and this is the default setup we like to deploy in production environments.
The content of the OFBiz home folder is organized into groups of components. (More on components in a minute.) The components are divided into four groups as follows:
- “framework” components: the basis of the system and provide the core services to the higher level components
- “application” components: the implementation of the core e-commerce and ERP features
- “specialpurpose” components: specialized components (integrations etc.)
- “hot-deploy” components: the components implemented to customize the system
There are two other important folders within the OFBiz home folder:
- “runtime” folder that contains objects created at runtime (temp files, log files etc.)
- “themes” folder that contains UI themes for styling the screens
Components
As mentioned before, the building blocks of the system are called “components.” A component is simply a folder that contains a file named “ofbiz-component.xml”. This file is a descriptor file that specifies the resources published by the component. Typically a component contains some of the following subfolders:
- config: configuration files
- data: seed data files (loaded when the database is setup)
- entitydef: entity definitions (datamodel table definitions)
- servicedef: service definitions (the business logic API)
- src: Java source files that implement the business logic services
- webapp: web application objects that implement the user interface (mounted as web applications by the embedded Tomcat server)
- widget: screen layout definitions
(For more details about the layout of an “OFBiz component” please refer to our custom components tutorial.)
At build time, all the files within the OFBiz home folder are required. At runtime, the content of the “src” subfolders in all the components are not required (e.g. they can be absent in a production system).
I hope these notes are helpful. Please feel free to comment and let us know what questions or other feedback you may have!