Apache OFBiz Real World Open Source Java Platform ERP
Apache OFBiz Real World Open Source Java Platform ERP
Supreme JUG Commander Juggy the Java Finch General David Jones Admiral Ean Schuessler Open for Business Project, Apache Foundation http://ofbiz.apache.org
TS-7900
2007 JavaOneSM Conference | Session TS-7900 |
Apache OFBiz
A demonstration on setting up, followed by a brief tour of the platform and its features; the intention being that you may return home and experiment with OFBiz out in your own business
Agenda
What is OFBiz? A quick start Technical overview Customized applications Community is critical
Agenda
What is OFBiz? A quick start Technical overview Customized applications Community is critical
What Is OFBiz?
OFBiz is a general purpose framework for building software that controls common business processes Unlike many systems which provide abstract software structures, OFBiz attempts to supply a set of data structures and software libraries for managing more concrete business elements such as orders, employees, contracts, and manufacturing processes
OFBiz Features
Advanced e-commerce (integrated catalog, pricing, order and sales management) Customer relationship management Warehouse management and fulfillment (auto stock moves, batched pick, pack and ship) Accounting (invoice, payment and billing accounts, fixed assets) Work efforts (manufacturing, events, tasks, etc.) Content management (product content, web sites, documents, blogging, forums, etc)
What Is OFBiz?
Save effort by customizing existing business logic rather than reinventing the application from low level storage and messaging primitives The OFBiz data schema is based on Len Silverstons comprehensive survey of industry data modeling practices OFBiz provides more than 700 data classes representing common business structures
Conceived May 13th, 2001 First 6 Months: identified universal data model and basic platform objectives Next 3 Years: community building, iterative development and refinement of framework Last 2.5 Years: extensive refactoring and improvement of base enterprise application artifacts Apache Top Level Project in December, 2006
2007 JavaOneSM Conference | Session TS-7900 | 8
Agenda
What is OFBiz? A quick start Technical overview Customized applications Community is critical
A Quick Start
$ svn co http://svn.apache.org/repos/asf/ofbiz/trunk ofbiz ... checkout messages ... $ ./ant run-install ... build messages ... $ java -jar ofbiz.jar ... startup messages ...
This will give a base install running on an embedded Derby database and web services listening on port 8080 and 8443
2007 JavaOneSM Conference | Session TS-7900 | 10
http://localhost:8080/ecommerce
OFBiz provides webbased ecommerce with pricing rules, customer reviews and ratings, promotional codes that track sell through and configurable products that can drive manufacturing processes.
11
Configurable Products
For instance, this sample configurable PC allows the user to specify a variety of options on the product. The configuration of the options impacts the final ticket price. The sub-assemblies of a product can drive sophisticated Bill Of Materials decisions in the OFBiz manufacturing application.
2007 JavaOneSM Conference | Session TS-7900 | 12
http://localhost:8080/manufacturing
Purchasing a configurable PC generates a series of manufacturing tasks that must be executed to complete the order.
z
13
Agenda
What is OFBiz? A quick start Technical overview Customized applications Community is critical
14
Technical Overview
OFBiz apps work with relational stores directly Entity Engine provides a ResultSet on steroids interface to relational data called a GenericEntity Schemas and queries are database agnostic A caching infrastructure is provided to accelerate common lookups. Cache sizes can be adjusted on an Entity by Entity basis
15
Entity Engine
GenericValue order = delegator.findByPrimaryKey( OrderHeader, UtilMisc.toMap( orderId, myOrderId)); List shippingCustomers = order.getRelatedByAnd(OrderRole, UtilMisc.toMap( roleTypeId, SHIP_TO_CUSTOMER));
OrderHeader orderId orderTypeId orderDate entryDate statusId etc... OrderRole orderId roleTypeId partyId etc...
16
Entity Engine
GenericValue order = delegator.findByPrimaryKey( OrderHeader, UtilMisc.toMap( orderId, myOrderId)); List shippingCustomers = order.getRelatedByAnd(OrderRole, UtilMisc.toMap( roleTypeId, SHIP_TO_CUSTOMER));
OrderHeader orderId orderTypeId orderDate entryDate statusId etc... OrderRole orderId roleTypeId partyId etc...
17
Technical Overview
Services are exposed as stateless units of functionality with named parameters and can be called synchronous, asynchronous or scheduled Services can be implemented in a variety of languages; The calling interface shields any calling code from the implementation details Services can be delegated to remote machines via SOAP, XML-RPC and other messaging services; OFBiz services can also be externally exposed via the same protocols
18
19
Service entity condition actions allow AOP-like triggering of other orthogonal services when some system service is called
<!-- if new statusId of a SALES_SHIPMENT is SHIPMENT_PACKED, create invoice --> <eca service="updateShipment" event="commit"> <condition-field field-name="statusId" operator="not-equals" to-fieldname="oldStatusId"/> <condition field-name="statusId" operator="equals" value="SHIPMENT_PACKED"/> <condition field-name="shipmentTypeId" operator="equals" value="SALES_SHIPMENT"/> <action service="createInvoicesFromShipment" mode="sync"/> </eca>
20
21
Agenda
What is OFBiz? A quick start Technical overview Customized applications Community is critical
22
Customized Applications
The vocabulary of business entities in the OFBiz framework can be used to implement business processes other than its default e-commerce application Common business objects such as parties (individuals, groups and companies), physical assets (tools, buildings) and more are available in the baseline toolkit Building on these primitives can provide a big boost once you are familiar with them
2007 JavaOneSM Conference | Session TS-7900 | 23
Customized Applications
24
Customized Applications
25
Customized Applications
The web framework is flexible enough that you can build applications with very different lookand-feel that leverage the large selection For this legal contract management application, no new data classes were required; All of the business elements mapped cleanly to existing OFBiz primitives The OFBiz web framework is an area where a lot of innovation is being incorporated
26
Customized Applications
Customer Agreement
FixedAsset Assignment workEffortId fromDate thruDate fixedAssetId etc...
27
Demo
28
Agenda
What is OFBiz? A quick start Technical overview Customized applications Community is critical
29
Community Is Critical
Software implementation is a unique way to share business practices and verify execution An open organization that is not a for-profit company helps insure that the platform is not dominated by one particular commercial interest The Apache Foundation is a reliable organization for businesses to invest effort in; Many organizations probably already use Apache software
30
Community Is Critical
Most business programmers work for organizations that are not primarily in the software business Customizing business logic is more common than customizing low level code like operating systems or webservers If sharing code for low level system services can succeed then sharing high level business logic should be an even larger win We just have to work together
2007 JavaOneSM Conference | Session TS-7900 | 31
Q&A
32
33