Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

A New Application Framework Design

Note

This is a draft document - it can be changed at any time by anyone.

...

  • Configuration.
  • Globalization (locale, time zone, currency).
  • Logging.
  • Security (authentication/authorization).
  • Actor Management (profiles, roles - required for security; Actors - people, external services) Think of UML Actor.
  • Persistence (file system or database).
  • Required to remove dependency on Party
  • Data Store (entity engine).
  • Lang package to provide classes that are fundamental to the framework
  • Services.
  • Runtime management.

Design Goals

  • Single jar file.

  • Compact, small memory footprint.
  • Scalable from SBCs to enterprise-class ERP systems.
  • Reuses existing technologies.
  • Easy to configure and maintain.

    Note
    titleDesign Participants Note

    Please take some to watch this presentation by Joshua Bloch: How to Design a Good API & Why it Matters.

Basic Architecture

Configuration
Globalization
  • Library: IBM ICU4J
  • Java package name: org.apache.ofbiz.foundation.globalization

...

...

Actor Management
Data Store
  • Library: OFBiz Entity Engine, JDBC
  • Java package name: org.apache.ofbiz.foundation.persistenceentity
Services
  • Library: JMS, Quartz Scheduler
  • Java package name: org.apache.ofbiz.foundation.service
Lang - Data Types
Cache
  • Library: eHCache
  • Java package name: org.apache.ofbiz.foundation.cache

 

 

...

 

Graphviz
outputsvg
thumbnailtrue
attachmentVersionreplace
digraph module_dependencies{
node [shape="box", color="lightseagreen", style="filled,rounded", fillcolor="lightyellow1"];
edge [color="lightseagreen"];
"Security"->"Configuration";
"Security"->"Globalization";
"Security"->"Logging";
"Security"->"Data Store";
"Data Store"->"Configuration";
"Data Store"->"Globalization";
"Data Store"->"Logging";
"Data Store"->"Cache";
"Services"->"Configuration";
"Services"->"Globalization";
"Services"->"Logging";
"Services"->"Data Store";
"Services"->"Security";
"Globalization"->"Configuration";
"Cache"-> "Configuration";
"Lang"->"Globalization";
"Logging"->"Configuration";
}