Inhaltsverzeichnis

Overview about mercaware

Introduction

mercaware is an ERP system running under Linux, consisting out of a Java applet, the application server, the business logic, a PostgreSQL database and development tools.

An end user starts on its client computer the Java applet which performs a TCP connection to the mercaware application server. The application server connects to the PostgreSQL database containing all data records and also accesses the binary parts of the business logic. The graphical user interface is completely defined via the business logic and only vector information, labels etc. are transferred via the TCP connection to the Java applet. Each user interaction (click on a button, typing text into an input field) results in data transferred over the TCP connection to the application server.

The binary parts of the business logic are created using the development tools from the source code parts of the business logic. The business logic contains every logic of mercaware: Any button, input field, layout link between screens, masks, register cards. It also defines the whole database structure and the connection between the user-visible frontend parts and the database fields. Additionally the functionality itself (compute a value for a field, save something into the database, raise an error) is also part. Database changes resulting from business logic source code changes can be applied to the PostgreSQL database using a command line tool.

The development of the business logic source code is splitted into socalled mask definitions (short: maskdef) and formulars. As mentioned before, the mask definitions care about the graphical and database layout, the definition/programming language however can not be compared with any existing language. The formulars add the logic and are called by the mask definitions (different actions and triggers), the programming language here can be compared to C, but without pointers, without the need to allocate/free memory and with limited string handling abilities like in modern high languages. There are additionally application specific functions to get input values from masks, to trigger actions on the database etc. The whole formulars are functional, not procedural, manual linking is not required. From a mercaware developer perspective, the mask definitions and formulars are compiled using GNU make together own compilers, which use in the end bison, flex and gcc (and also take care about linking etc. on system level).

The business logic source code is organized into socalled modules, e.g. mod_base. These modules are stackable, the order is defined in the modules.in file. Stackable means, module B can extend module A on mask definition and formular level. Extend hereby also means to add new buttons, input fields, masks, register cards, etc. as well as formulars and include files - including hiding, removing or disabling elements from previous modules. The mod_base module is kind of special, because it contains values that need to stay in sync with the application server for login, session handling and other built-in functionalities.

Visual

Textual

Java applet

Java RIA

mercaware/mercawarefonts/mercawareall.jar

Application server

mxsd

mxd

mxnd

mxvd

mxlicd

Development tools

mmdbc

srdbc

reltool

Business logic source code

mod_<name>

<maskdef>.def

<formular>.ssr

Binary business logic

mxmask.msk

<formular>.sr