# Apache OFBiz

Apache OFBiz ist ein Open-Source-Enterprise-Resource-Planning-System (ERP). OFBiz ist ein Toplevel-Projekt der Apache Software Foundation und stellt verschiedene Unternehmensapplikationen zur Verfügung. Diese Unternehmensapplikationen integrieren und automatisieren viele übliche Unternehmensprozesse. Apache OFBiz steht bzw. stand für Open For Business, diese Bezeichnung wird jedoch offiziell nicht mehr geführt.

## Geschichte

Apache OFBiz wurde 2001 von David E. Jones und Andrew Zeneski bei SourceForge veröffentlicht und war eine Zeitlang auf java.net gehostet. Am 10. Januar 2006 wurde Apache OFBiz als Apache-Projekt vorgeschlagen und am 31. Januar 2006 nach einer Abstimmung in den Inkubationsprozess aufgenommen.

## Überblick

Apache OFBiz ist eine Enterprise Application Development Framework, welches ein gemeinsames Datenmodell sowie einen umfangreichen Satz von Geschäftsprozessen für Unternehmen bereitstellt. Die Applikationen basieren auf einer gemeinsamen Architektur, welche Daten-, Logik- und Prozesskomponenten bereitstellt. Neben dem Framework bietet Apache OFBiz u. a. folgende Funktionalitäten:
* E-Commerce
* Katalog- und Produktmanagement (PIM)
* Content-Management-System (CMS)
* Lagerverwaltungssystem (WMS)
* Bestandsführung
* Bestellverwaltung
* Customer Relationship Management (CRM)
* Buchhaltung (Verträge, Rechnungen, Faktura, Hauptbuch)
* Asset Maintenance
* Produktionssteuerung (MES)
* Personalverwaltung (HR)
* Verwaltung von Personen, Abteilungen und Organisationen
* Projektmanagement

## Technologie

Apache OFBiz ist ein Web Development Framework für browserbasierte basierend auf Jakarta EE. Die Anwendung ist als dreischichtige Architektur realisiert.

### Präsentationsschicht

Apache OFBiz verwendet ein Screen-Konzept zum Aufbau und Anzeige der Seiteninhalte. Jede Seite wird durch einen Screen repräsentiert. Eine Seite besteht aus verschiedenen Komponenten, bspw. dem Header, Footer, Menü usw. Beim Rendern der Seite werden alle Komponenten anhand der Screen Definition kombiniert. Komponenten können FreeMarker Templates oder Forms und Menü Widgets sein. Widgets sind eine Apache OFBiz spezifische Technologie.

### Logikschicht

Die Logikschicht definiert Geschäftslogiken und -prozesse, welche dem Anwender zur Verfügung gestellt werden. Services können in unterschiedlichen Technologien wie Java, Groovy und der Apache OFBiz eigenen, XML basierten Mini Language realisiert werden. Eine Service Engine ist verantwortlich für die Validierung und den Aufruf der Services und kümmert sich um die Sicherheit und das Transaktionsverhalten. Services können dabei auch als Webservices nach außen verfügbar gemacht werden.

### Datenschicht

Die Datenschicht ist verantwortlich für den Datenbankzugriff, Datenspeicherung und Bereitstellung eines einheitlichen Schnittstelle für die Logikschicht. Die sog. Entity Engine sorgt für eine datenbankunabhängige Zugriffslogik und ist aufgrund ihres ausgefeilten Cachings sehr performant. Apache OFBiz wird mit der eingebetteten Apache Derby SQL Datenbank ausgeliefert. Diese dient jedoch nur zum testen bzw. zu Evaluations- und Demozwecken, im Produktivbetrieb sollten geeignete Datenbanksysteme verwendet werden. Es werden Datenbanksysteme wie PostgreSQL, MySQL, Oracle, Microsoft SQL Server, Sybase und weitere unterstützt.
Apache OFBiz implementiert ein umfangreiches Datenmodell basierend auf dem Datamodel Ressource Book von Len Silverston. Es ist sehr flexibel für unterschiedliche Geschäftsanwendungen einsetzbar, lässt sich datengetrieben erweitern und hat einen Umfang von etwa 900 Datentabellen (Stand 06/2022).

## Entwicklungsumgebung

Apache OFBiz setzt in der aktuellen Version auf Java 8 und Groovy sowie einen Gradle basierten Buildprozess. Es lässt sich gut in die Entwicklungsumgebungen Eclipse und IntelliJ einbinden.