//// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. //// = Apache OFBiz User Manual The Apache OFBiz Project Release 17.12 :imagesdir: ./images ifdef::backend-pdf[] :title-logo-image: image::OFBiz-Logo.svg[Apache OFBiz Logo, pdfwidth=4.25in, align=center] :source-highlighter: rouge endif::[] == Introduction to OFBiz Welcome to _Apache OFBiz_! A powerful top level Apache software project. OFBiz is an Enterprise Resource Planning (ERP) System written in Java and houses a large set of libraries, entities, services and features to run all aspects of your business. This manual will describe all aspects of this powerful ERP system. The manual starts with the basics of what OFBiz is and how it works, and describes high level concepts like the entity engine, service engine, widget system and so on. In addition the manual explains the core application of this framework like the Party Manager, Order Manager, Accounting system, and others. If you wish to contribute to OFBiz and help make it better, you may wish to read the "Apache OFBiz Developer Manual" for a deeper understanding of the architectural concepts of the framework. === What is Apache OFBiz It is hard to define OFBiz because it offers many different solutions targeted at different levels of interests (users, developers, business owners). At a low level it may considered a web framework, at another level, it may considered a full fledged ERP system, and yet it can also be considered a business automation suite. === The main parts of Apache OFBiz Perhaps to better understand what OFBiz is, it may be necessary to understand its main parts and the purpose that each part plays. Thus the main parts or sub-systems are summarized below. ==== Web MVC Framework The lowest or most foundational part of Apache OFBiz is a classical web MVC (Model View Controller) framework. This part of the system is designed for basic routing of web requests and may be considered as the infrastructure or plumbing where everything is wired together. ==== Entity Engine The entity engine allows OFBiz users to define entities, data, and queries in a database-independent domain specific language (DSL) based on XML. Thus, without learning any SQL users can create and interact with databases in a platform-independent manner and Apache OFBiz would make the translations under the hood to each database system. ==== Service Engine Apache OFBiz is designed specifically around a Service Oriented Architecture (SOA). Services are units of business logic that take a set of input values and produces a set of output values. Services are programming-language-independent. It does not matter whether a service is implemented using Java, Groovy, Jython, or something else because services are an abstraction away from the underlying technology. This provides maximum flexibility for designing business logic without worrying about interoperability between different languages. ==== Widget System Whether the output is HTML, CSV, PDF, or something else, Apache OFBiz provides a system for creating user interface that is independent of the actual implementation. This makes it possible to publish the same widget to HTML, PDF, CSV or some other output format. However, the widget system allows users, if needed, to drop down to any platform-specific code and mix it with widget designs, thus providing a mix between ease of use, platform independence and customizability. ==== Data Model Library Apache OFBiz is heavily inspired by a book called the "The Data Model Resource Book". This book provides a "A Library of Universal Data Models for All Enterprises". These models cover things like parties, orders, invoices, payments, general ledgers, quotes and much more. By using OFBiz, adopters start with a full pre-designed data model that covers common and universal business requirements. Hundreds of entities are defined which save many hours of thinking, designing, and testing such models. It is important to note that the data model library does not only cover entities, but also the data that comes with these entities. Data is further categorized by function (seed, demo, etc ...) ==== Service Library Having a rich and powerful data model is not very useful on its own without services that apply business logic on this data model. That is where the services defined in Apache OFBiz come into play. OFBiz provides, out-of-the-box, thousands of services to create, retrieve, update, delete, search, and do many other operations on the data model. ==== Core Applications The core applications in Apache OFBiz are web applications that serve common business needs found in most enterprises such as accounting, order management, party management and so on. These core applications are built on top of the data model and service library earlier described. The core applications are further described in the relevant section. ==== Plugins OFBiz extends any basic functionality through plugins. Plugins are very similar to the core applications in design and structure, but are not shipped with OFBiz by default. Thus to install a plugin a user must add it to the framework first. include::../../README.adoc[tags=quickstart] == Core Business Applications Most businesses share universal needs. They require accounting functionality, managing customers, placing orders, book-keeping, invoicing and so on. OFBiz is designed so that such basic universal business needs are available through a set of core business applications. These applications all share a unified data-model with a set of unified services to implement this functionality. This section of the manual will describe each core business application starting with a high level overview of design and purpose down to the details of how to achieve common tasks. include::../../applications/accounting/src/docs/asciidoc/accounting.adoc[leveloffset=+2] include::../../applications/humanres/src/docs/asciidoc/humanres.adoc[leveloffset=+2]