The openM2 business application framework is based on a multi-tier architecture with special layers for object-caching and request-routing processes between the main achitectural layers.
Note that when development of openM2 started in 1992 there were no Application Servers available as there are today. Most of the functions today's java application server like JBoss or Glassfish offer were implemented within the framework itself.
Originally the platform was developed for Internet Explorer 6 and Netscape Navigator. Later on browser support was extended to modern browsers like Internet Explorer 8/9/10/11 and Firefox.
Here is a deeper look into the architecture of openM2:
Using an I/O encapsulation between main Presentation and Business Logic layer makes it possible to even include external applications into the frontend.
Business Logic Layer
The Business Logic Layer is home of the main customization mechanism of openM2. The business object structures are generated by the Business Object Invocation.
Note that all objects get an unique OID which contains their type indentification encoded within 4 bytes. This type identification is used to retrieve all required relationships, dependancies and values for the objects in the database.
Objects can be Containers meaning that they can contain other Objects and therefore get a different representation. Objects and Containers can be embedded into each other creating deep complex composed object types.
Of course each object type can use default java classes or have it's specific classes overwriting and extending their standard functionality.
Within this layer lies the workflow execution engine which ties objects to process steps and executes tasks.
The worflow engine uses an specific XML schema to define workflow steps, rules and related actions.
The heart of the application layer is a Java based Tomcat Servlet Container.
As central execution unit a special servlet called m2ApplicationServlet is used. It handles HTTP as well as HTTPS, get- and post requests and manages sessions. On request the URL will get interpreted and the right actions and parameters will get forwarded. For decoding a special dictionary is used (FormDataDictionary) and afterwards the control element (ApplicationControl) induces the actions and loads objects, if needed, out of the cache (ObjectPool). Furthermore the management of the required data types is done on this layer.
Between the Business Object Invocation and data you will find a Data Abstration Layer (DAL). With this layer data is pulled from various sources like databases, textfiles, etc.
Mostly Microsoft SQL Server is used as a database but using other sources is possible as well. All tables will get generated automatically through the openM2 installation mechanism. The exact process and the data structure can be additionally structured via scripts. This layer also houses interfaces to other applications (like SAP). For external datasources, agents can be configured which then periodically import the data.
An important property on this layer is the possibility to change online data structures. If objects are being edited (e.g. an attribut gets added) a recreation of the relevant database tables can be controlled via translators (XSL-Files) and all old data will get transferred to the new object type.