Apache OFBiz Project Overview
Written By: David E. Jones
...
The Purpose of this document is to give you an overview of the Open For Business OFBiz Project from a business perspective. It will review some of the principles and motivations behind the project, major application components, and a brief explanation of the system's technical organization.
The descriptions of functionality in this document are meant to give you a high level overview of the system. For more detailed information you can look over the Feature List and related documents.
Introduction
Open For Business (OFBiz ) is a suite of enterprise applications built on a common architecture using common data, logic and process components. The loosely coupled nature of the applications makes these components easy to understand, extend and customize.
...
No restrictions are placed on these activities because we feel that they are necessary for effective use of this type of software. Unlike other open source licenses, such as the GPL, your changes do not have to be released as open source. There are obvious benefits to contributing certain improvements, fixes and additions back to the core project, but some changes will involve proprietary or confidential information that must not be released to the public. For this reason OFBiz uses the Apache License Version 2.0 which does not require this. For more information on open source licenses see the Open Source Initiative (OSI) web site at www.opensource.org.
Another benefit of this open source model is that we receive constant feedback from those who are using the software. We have received countless bug fixes, improvement suggestions, and best-practice business advice from users and potential users of OFBiz. Many of the greatest features in the project were inspired by some comment or suggestion sent to the mailing lists associated with the project. With dozens of organizations using the software and probably hundreds of deployed sites using one piece or another of the project we generally get 20-30 emails each day about the project.
...
We researched other ERP and CRM systems and looked at various general and system specific books before finding The Data Model Resource Book, Revised Edition, Volumes 1 and 2 by Len Silverston. After a few weeks of translating the logical data models described in these books into flexible and normalized physical data models we had our initial system organization. Since that time the initial data model has gone through hundreds of revisions and refinements based on real-life use of the system and compatibility with dozens of existing public standards. Because of the flexible system architecture it is easy to make changes to the data model. This is necessary for the ongoing improvement of the project and makes it easy for you to make changes that suit your specific needs.
...
The following is a brief overview of the major functional areas of the system. Many of these have functionality that exists now and all have data elements defined that cover the needs of that part of the system. As further functionality is implemented we continually refine the data model, but all of the major data element definitions are in place. So, just remember that much, but not all, of the functionality described here is implemented at this point.
Common Data
The Common Data in the system includes entities such as Geographic Boundaries, Units of Measure, Status Codes, Enumerations, and so forth. Most of this data is seed data that is imported when the system is installed and generally needs very few changes over time. Geographic boundary and other applicable seed data is based on ISO and other standards.
Content
The Content entities are used to track data resources and structure them into general content and knowledge. They include many concepts such as: a separation of information and organization allowing a data resource to be used in many content structures; flexible organization of content including free-from association in graphs or more constrained organization in trees, lists, named maps, templates, etc; the specification of meta-data for content and data resources that can be used to implicitly organize and explicitly describe the information. Individual pieces of content can be in various text and binary formats described by standard MIME types and character encodings.
...
The Content entities also include information about Web-based content such as pages and interaction with content including visits to a site (or application) and information about every request sent to the site. This is useful for tracking what users are doing with an application for security, marketing, usability and other reasons.
Security
The Security entities are used to control access to various parts of the system and include user login accounts, login audit data, permission data, and so forth. Additional more restrictive security is accomplished through the Party entities and the association of Parties to various other data in specific Roles. For instance one user might have a Permission to view and modify all Product data where another user only has permission to view and modify the Product data if the user is associated as a Merchandiser with a category that the product is in.
Party
A Party can be either a Person, or a group of Parties. A Party Group could be a company, an organization within the company, a supplier, a customer, and so forth. Information that describes Parties or is directly related to Parties is contained in these entities.
...
Another type of data that fits into the Party category is information about communication and agreements between Parties. This gets into the area of relationship management and also includes information about issues or trouble tickets that a Party may have. These entities are used along with the Work Effort entities to plan and track the research and resolution of such issues.
Product
The Product entities contain information about products that are for sale or for use within a company. Products can be goods or services and there are various types of goods including raw materials, subassemblies and finished goods. Product information includes descriptive information about the products but is not used for describing actual instances (where applicable) or physical goods, that is where Inventory Items come into play. An Inventory Item contains information about where a particular good is located, the status of the item, and a serial number for serialized items or quantity on hand and available to promise amounts for non-serialized inventory.
...
In addition to explicitly specifying prices there are also entities and logic that uses the entities to have rules about prices. For instance you could create a rule that is in effect for a certain time period that puts all of the products in a certain category on sale. Or, you could give special prices to specific customers or groups of customers with a simple rule.
Order
The Order entities are used to manage information about sales and purchase orders and information leading up to an order. For example a request for a specific product or feature may be submitted by a customer and that would be tracked by the request entities in the Order package.
...
Payment preferences can be tracked as an order is created to automate payment once an invoice is created. This is especially useful for payment by credit card or other electronic means. If no payment preferences are specified then a standard invoicing and billing process can be used.
Facility
A Facility is a building or other physical location. Examples include warehouses, stores, office buildings, individual rooms in a larger facility, loading docks, et cetera. Generally a facility will have Contact Mechanisms associated with it such as a postal address or a phone number.
...
Parties can be associated with Facilities to represent where a person works, which organization controls or operates the facility, who manages the facility, et cetera.
Shipment
The Shipment entities are used to track incoming and outgoing shipments and to issue items from inventory or receive items into inventory.
...
The Shipment Route entities are used to split up a Shipment's journey into multiple route segments. One route segment for a Shipment could be a commercial carrier while another could be a private carrier or a company owned truck.
Accounting
The Accounting entities are organized according to age old and generally accepted principles such as double-entry accounting, a General Ledger with hierarchical accounts, journals and posting of transactions and corresponding entries. The structure is primary primarily based on the OMG GL standard and the work that was done on an AR/AP extension of the OMG GL standard. This correlates well with other standards such as ebXML and OAGIS.
...
Entities to track Fixed Assets are also part of the Accounting entity package. This includes depreciation information in addition to maintenance, scheduling of Fixed Assets (along with the Work Effort entities), and so forth.
Marketing
The Marketing entities are used to track information about Marketing Campaigns and related information such as Contact Lists (mailing, email, or calling lists) and Tracking Codes. Tracking Codes are primarily used in automated systems to keep track of where a customer came from and can be used for commission purposes in addition to analyzing the effectiveness of specific Marketing Campaigns including advertisements, partnerships or affiliations, and so forth.
Work Effort
A Work Effort can be one of many things including a task, project, project phase, to-do item, calendar item, or even a Workflow or a Workflow Activity.Workflows are a special case and are managed by the OFBiz Workflow Engine. A Workflow is essentially a semi-automated process that involves both automatic activities performed by the computer and manual activities performed by a human or some other external system controlled by a human. The Workflow Engine processes Workflows defined in special entities modeled after the Workflow Management Coalition (WfMC.org) specifications. XPDL files can be imported into these entities and then the Workflows defined there can be invoked through various means. The Workflow Engine keeps track of everything that has been done and that needs to be done for the processes that it runs
Notice : OFBiz gave up on Workflow Engines. Shark was implemented last but never really used in OFBiz. Instead of using a Workflow Engine, OFBiz uses an Event Driven Architecture (EDA) and ECAs (SECA, EECA, MECA) are used in OFBiz to drive the Workflow. ECA is the acronym of Event Condition Action. SECAs are for Services (triggered on services conditions), EECA are for Entity (triggered on entities conditions), MECAs are for Mail.
There are also entities in the Work Effort entity package for keeping track of timesheets and the pay rate of specific Parties performing Work Efforts. In addition various other resources can be tracked such as Fixed Assets, Facilities, et cetera.
When Work Efforts are used for manufacturing or other modification of Products the Products and Inventory Items consumed and produced by the specific Work Effort can be tracked.
Human Resources
The Human Resources entities are used to keep track of positions, responsibilities, skills, employment, termination, benefits, training, pay grades and payroll preferences, performance reviews, resumes and applications, and other Human Resources related information.
...
Architecture is really just a fancy word for the organization and composition of application components. There are many different "tools" available as part of Java, J2EE and the OFBiz Core Framework that can be used together to efficiently and effectively organize data and business logic, to provide interfaces to other systems, and to create user interfaces for humans to interact with the system.
Entities and Services
The most basic components in OFBiz are Entities and Services. An Entity is a relational data construct that contains any number of Fields and can be related to other entities. Basic entities correspond to actual database structures. There is also a type of entity called a "view-entity" that can be used to create a virtual entity from other entities to combine sets of fields by joining other entities together. These constructs can be used to summarize and group data and in general prepare it for viewing or use in a program.
...
Services can be implemented in a number of different ways to make it easier for engineers to match the tools available to the task at hand. It also makes it easy to keep track of the logic components in the system which may exists in hundred of different files and even on different computers used inside the company or computers of a partnering company.
Workflow and Rules
The Workflow Engine, which is described briefly in the Work Effort section above, can be used to automate business processes consisting of both manual (humanly performed) and automatic (computer performed) activities. Workflows can be called as services and automated activities within a workflow can call services allowing unlimited flexibility in combining these small logical components.
The purpose of workflow tools is to automate and track complex business processes. They can help to insure that your policies are followed and that important tasks are not lost in the chaos and confusion that even reasonably sized organizations often operate in. A good example of this is the Order Manager in OFBiz which is workflow based. When an order is placed a workflow is started and tracked through approval and fulfillment of the order. With this tool it is easy to see what has happened to a specific order and what still needs to be done with the order.
There are many other examples of processes that can benefit by this sort of management. For example: content creation and publishing, customer issue, complaint and service management, sales cycle management, and any other business process that involves the coordination of different people in different roles.
The Rule Engine in OFBiz is essentially an alternative programming language that is based on concepts completely different from procedural programming languages like Java, Basic, C, Cobol, and so forth. Facts and rules are declared and then used in one of two ways: 1) asking if a specific assertion is true and showing all possible proofs of the assertion, and 2) presenting all information available and asking the Rule Engine to produce all other information possible given the facts and rules it knows about.
Rule engines can be used for many different applications. They are most useful for decision support and helping humans analyze situations that are too complex to do on paper or in one's head or by any means because of the amount of time that would be involved. Using the rules as constraints and finding all valid solutions to a problems such as airport gate assignments or truck delivery and pickup routing can save countless hours and allow for consistent application of rules that a human might occasionally miss or forget no matter how experienced that person is.
Web Framework and XML Mini-Languages
There are many useful tools in the OFBiz Core Framework that address points of difficulty in web, client-server and peer-to-peer based enterprise applications. A tool exists for simplifying the use of flat data files making it easier to integrate with legacy systems. Various tools exist for organizing and structuring web-based content and applications with a flexible separation of logic and presentation. These tools along with the standard J2EE and other Java tools make it easy for the system to communicate with human users and other systems.
To make it easier to use these Core Framework tools another component called an XML Mini-Language has been created that allows an engineer or other user to create an XML file with simple, well-defined instructions that the system can understand and execute. Expressing logic in a Mini-Lang "simple-method" often requires only one third as much code as an equivalent Java method and is much easier to read and modify for semi-technical users. Processing form input, composing services into larger services, and interacting with data in the database are common things that can be done easily with this tool.
Conclusion
Web Framework
There are many useful tools in the OFBiz Core Framework that address points of difficulty in web, client-server and peer-to-peer based enterprise applications. A tool exists for simplifying the use of flat data files making it easier to integrate with legacy systems. Various tools exist for organizing and structuring web-based content and applications with a flexible separation of logic and presentation. These tools along with the standard J2EE and other Java tools make it easy for the system to communicate with human users and other systems.
Conclusion
The OFBiz The Open For Business Project is a collaborative effort involving a large group of users and developers and is moderated by a small central team. The applications and framework components are being used in a wide variety of businesses and applications and are customized heavily in many circumstances to meet the needs of the organizations using the software.
...