System Metaphor
From ADC
Abstract is using Mozilla XULRunner as a main platform. XULRunner inherently supports layered application design. The platform layering framework is called XPCOM (Cross Platform Component Object Model).
Layers
Abstract has 4 layers. Top-down they are Presentation, Domain, Data Access, Storage Backends.
Presentation
This layer is designed according to the Model-View-Controller template. User Interface is rendered by XULRunner from project-supplied XML files. Created UI objects are managed by Controller code in Javascript. Objects themselves are XPCOM components implemeted in C++ or JavaScript, or XBL bindings to such objects.
Domain
In the scope of ERP, domain model includes all real life object. Abstract, however, will deal with legal obligations, their properties and accounting equivalents. Domain object are implemented as XPCOM components mostly in C++.
Data Access
Data access layer maps domain objects to relational database Storage Backends and organizes access to Domain objects from Presentation. Data access objects are implemented as XPCOM components.
Storage Backends
Abstract will store information in efficient relational databases. Default engine will be Mozilla built-in sqlite. It is a best fit for single-user usage scenario, and can provide limited support for multiple users. When Abstract is deployed in multi-user environment, it will use MySQL database.
Tiers
Logical applications layers are usually split among physical tiers.
Abstract v1 will be a two-tier client-server application. A rich client will contain Presentaion, Domain and Data Access layers and talk to Storage Backend database server. The client will run on any Mozilla-supported platform, which includes all flavors of Linux, other POSIX-compatible systems, Windows and Mac.
Abstract v2 will pack Domain, Data Access and Controller part of Presentation in an apache module, allowing to run 3-tier system with an application server.


