Mit seinem mittlerweile sehr stark ausgebautem (Python-) Framework hat Odoo die Grundlage geschaffen, nicht nur als ERP genutzt zu werden. Die Vorteile hierdurch sind vielzählig.
Das Python- und Server-Framework
Erfahrene Entwickler können Grundprinzipien eines Frameworks schnell nachvollziehen und sich ebenso gut in dieses einarbeiten. Lästige Aufgaben wie das Schreiben von SQL-Befehlen ist dank Odoo auch nicht mehr nötig. Fast alles ist bereits in das Framework integriert und kann entsprechend genutzt werden. Auch der modulare Aufbau und die einfache Erweiterbarkeit tragen dazu bei, dass die Nutzungsmöglichkeiten des Odoo Frameworks nahezu grenzenlos zu sein scheinen.
Von einem ORM, über eine RPC API bis hin zur Weboberfläche bietet Odoo alle Komponenten, die für eine klassische Web-Anwendung benötigt werden. Und das Beste am Odoo Framework: Es ist Teil der Community Edition - demnach Open Source und somit auch anderweitig nutzbar.
Warum wird ein (eigenes) Framework benötigt?
Odoo ist eine Mehrmodul - und Mehrmandanten Web Applikation und bietet die Möglichkeit, gleichzeitig mehrere Datenbanken zu nutzen, welche allerdings nicht dieselben Module installiert haben müssen. Außerdem bedient es mehrere Nutzer, ohne dass diese gegenseitig Daten einsehen können.
Warum dann ein eigenes Framework? Dies ist größtenteils historisch bedingt, da das Framework an sich schon ca. 20 Jahre alt ist. Zur damaligen Zeit gab es nur sehr wenig Alternativen und vor allem keine, die den benötigten Bedürfnissen entsprach. Mit jedem Release einer neuen Odoo Version wurde das Framework verbessert, was eine entscheidende Rolle spielt. Viele andere Frameworks setzen darauf, eine Abwärtskompatibilität zu gewährleisten. So gibt es keine oder nur sehr eingeschränkte Möglichkeiten, bereits vorhandene Features zu modernisieren, was dann zur Folge haben kann, dass diese auf eine neue Art implementiert werden müssen.
OWL Javascript Framework
Das OWL-Framework - Odoo‘s eigenes Javascript-Framework - ist ebenfalls erwähnenswert. Dieses ist innerhalb der letzten Odoo Versionen entstanden und ist ein modernes und durch React geprägtes Framework, welches unter der Nutzung des ES6-Syntax geschrieben wurde. Es basiert auf Komponenten, welche im Zusammenspiel die meiste Arbeit der Benutzeroberfläche übernehmen. Das Laden der Ansicht und dessen Konvertierung zu HTML, aber auch die Einbindung anderer Darstellungskomponenten werden dadurch ermöglicht. Das heißt, dass der Code, der durch Javascript Dateien bereitgestellt wird, sowie die Templates für Ansichten in XML beschreiben, wie die Live UI (HTML) auszusehen hat und welche Funktionen sie zu erfüllen hat.
Warum ein eigenes Framework und kein bereits vorhandenes?
Die Antwort ist simpel: Odoo ist erweiterbar und so sollte es auch bei den Odoo Frameworks sein. Neben der einfachen Anpassbarkeit gibt es noch weitere Punkte, die für ein eigenes Framework sprechen. Einer davon ist, dass eine Anpassung teilweise zur Laufzeit möglich ist, da Teile der UI z.B. Menüs, Aktionen und Ansichten in der Datenbank gespeichert und dadurch bearbeitbar werden.
Um dies zu gewährleisten, wird nicht nur ein auf Templates basierendes Framework benötigt, sondern auch eines, welches auf Klassenkomponenten beruht, anstatt auf Funktionen. Zu Letzterem neigen die aktuell verbreiteten Frameworks, was eine Modifikation zur Laufzeit deutlich erschweren kann. Auch verwaltet Odoo seine eigenen Assets, welche bspw. noch aus CSS oder SCSS Dateien bestehen und fügt diese mit den JS und XML Dateien zu Bundles zusammen.
OWL Rendering
Basierend auf Browser-Rendering werden unter anderem die Vorlagen in HTML konvertiert, Events an entsprechende Handler gebunden und bei Updates nur der geänderte Inhalt aktualisiert, anstatt den gesamten Inhalt noch einmal neu darzustellen.
Dafür nutzt OWL die Komponenten, um ein Virtual DOM („virtuelles Dokumenten-Objekt-Modell“) zu rendern, welches genutzt wird, um die Unterschiede festzustellen und darauf basierend das DOM zu patchen. Nutzer und Kenner von Virtual DOM fragen sich vielleicht, ob dies nicht zu langsam ist. Zwar wird dies auch in Frameworks wie React und Vue genutzt, OWL hingegen unterteilt aber einzelne Abschnitte des Templates in Blöcke und handhabt diese einzeln. So findet auch nur ein Rendering für übergeordnete Elemente statt, ohne Untergeordnete zu erneuern. Auch werden nicht sichtbare Bereiche nicht mehr initial berechnet, sondern erst dann, wenn nötig. Dadurch konnte die Geschwindigkeit des Updateprozesses noch einmal erhöht werden.
Odoo Dev-Tools
Weiterhin gibt es noch zahlreiche Tools, die die Odoo Entwicklung ebenfalls unterstützen. Sei es eine Report-Engine (basierend auf QWeb), Verwaltung von Zugriffsrechten pro Datenmodell oder Datensatz, die Odoo Shell oder auch die Einbindung von Python Unittests mit vorgefertigten Testklassen und QUnit Tests für Javascript.
Jetzt kostenlose Odoo Beratung anfordern!
Rufen Sie uns an unter 03831 44557 0 oder nutzen Sie das Kontaktformular.