THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
- 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. Required to remove dependency on Party
- Persistence (file system or databaseData Store (entity engine).
- Lang package to provide classes that are fundamental to the framework
- Services.
- Runtime management.
Design Goals
Single jar file.
Ron W. Makes it hard to have collaboration, encourages intermodlue dependencies, makes build slow and test suite too big, makes it hard for developers to replace parts, makes it hard to support multiple lower level alternatives. Would prefer to have 8 separate projects with possibly different teams on some parts programming to agreed interfaces.- 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.
...
- Library: OFBiz Configuration
- Java package name: org.apache.ofbiz.foundation.config
Globalization
- Library: IBM ICU4J
- Java package name: org.apache.ofbiz.foundation.globalization
...
- Library: Apache Shiro, OFBiz
- Java package name:org.apache.ofbiz.foundation.security
Actor Management
- Library: OFBiz
- Java package name: org.apache.ofbiz.foundation.actor
...
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: eHCache
- Java package name: org.apache.ofbiz.foundation.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";
} |