A New Application Framework Design
Note |
---|
This is a draft document - it can be changed at any time by anyone. |
Document Purpose
This document is intended to introduce a high level design of an application framework for the Apache Open for Business project.
Overview
The application framework will be written in Java and it will provide the basic structure to write an application. The framework will provide the following basic functionality:
- Configuration.
- Localization 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 managementServices.
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 title Design Participants Note Please take some to watch this presentation by Joshua Bloch: How to Design a Good API & Why it Matters.
Basic Architecture
Configuration
- Library: Apache Commons OFBiz Configuration
- Java package name: org.apache.ofbiz.foundation.config
...
Globalization
- Library: IBM ICU4J
- Java package name: org.apache.ofbiz.foundation.localizationglobalization
Logging
- Library: SLF4J
Security
- Library: Apache Shiro, OFBiz
- Java package name:org.apache.ofbiz.foundation.loggingsecurity
...
Actor Management
- Library: Apache Shiro, OFBiz
- Java package name: org.apache.ofbiz.foundation.securityactor
...
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
- Library: Apache Commons Lang, Apache Commons Convert, OFBiz
- Java package name: org.apache.ofbiz.foundation.lang
...
Cache
- Library: OFBiz eHCache
- Java package name: org.apache.ofbiz.foundation.time
Money
- Library: OFBiz
- Java package name: org.apache.ofbiz.foundation.money
Cache
- cache
...
Graphviz | ||||||
---|---|---|---|---|---|---|
| ||||||
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";
} |
...