Zelerate AllCommerce 1.0.4 Documentation

5. System Internals

5.1 Overview

AllCommerce is an Open Source system, which means that the source code is available to anybody to examine, modify or extend. Therefore, the description of system internals may be crucial not only to understanding how to configure and run the system, but also to enable users to make changes and substantive improvements to the system's code base.

5.2 Directory Structure

The system's directory structure is an outgrowth of the adage "form follows function". In addition to facilitating administration and development, the structure accommodates access control and other security elements. All this is accomplished while simultaneously presenting an intuitive view of the system.

5.3 Data Structures

AllCommerce's most advanced features spring from its forward-looking data design, which incorporates flexibility. A simplified object system adds the flexibility of run-time binding. Defined interaction between events and stored program states is key to the system's scalability and performance. The structure and the relationship between many data base items is defined only by the content of the tables, not the structure of the tables themselves.

Although there are explicit tables for customers, inventory, prices, shopping carts, and accounts, many items are deferred until run-time by a simple class system. With little code overhead, this imparts advanced features such as linking objects into the Web hierarchy at multiple branches (even at multiple levels); assigning an arbitrary number of attributes or variants to an object; assigning permissions within the system; automatic generation of end-user pages, based on defined object attributes; localization (aka, internationalization).

5.4 Events and Object Identifiers

As defined within AllCommerce, an event is considered to be an authoritative record of a change in program state. This does not imply that the current state of the system is authoritative, since that would require a known complete set of events. Rather, only the set of locally-generated events is authoritative. This simple accommodation provides significant dividends in performance and scalability, most importantly the ability of a server cluster to act independently of a central authority. Global reconciliation is then merely a matter of providing protocols and bandwidth between clusters to accommodate the inflow of "foreign" events.

5.5 Localization

Regardless of previous definitions, localization within AllCommerce is useful for any implementer who is interested in providing multiple appearances and/or content of their Web site(s), despite language and currency differences. The default (null) localization can be used stand-alone (as the one and only Web site appearance) or as a base theme on which all localizations build -- such as overlays. There is great flexibility in how much is carried forward in each local variant, extending all the way to a completely unique site definition for each.

Multiple currency handling is complicated by the variety of methods by which real-world conversions take place. AllCommerce attempts to handle as many situations as possible, by offering three basic options:

  1. a legally fixed and constant exchange rate

  2. a master currency, plus one or more derived currencies

  3. free standing prices in each of several currencies

Currently, the most advanced AllCommerce localization support is for multiple languages. Handling multiple currencies from multiple national domains is complicated by tariffs, shipping charges, and taxes, among other issues. Multiple character sets are not currently supported in any HTML-based system. Regrettably, some things require global standards.

5.6 Payment Processors

If you are using the Credit Card Verification System (CCVS), see 12.CCVS.html.