Entwicklung eigener Module

Aus iDempiere de
Wechseln zu: Navigation, Suche

Eigentlich gleicht kein Geschäft dem anderen und eine Warenwirtschaft sollte sich immer den Geschäftsprozessen des Unternehmens anpassen. Aus diesem Grunde ist iDempiere unglaublich flexibel in seinen Möglichkeiten der Anpassung und Erweiterung. Man kann die vorhandenen Menüs und Befehle komplett konfigurieren, die vorhandenen Datenstrukturen erweitern oder neue erzeugen und man kann auch eigene Geschäftslogik, Auswertungen, etc. auf diese Datenstrukturen anwenden. Dabei finden sehr viele Anpassungen rein innerhalb der Datenbank statt, d.h. für sehr viele Erweiterungen ist es nicht nötig, die eigentliche Software zu ändern.

Zusammenfassung der Anpassung des Datenmodells

In iDempiere ist jede Datenbank-Tabelle, jede Spalte, jedes Fenster und jedes Eingabefeld in einer zentralen Datenbank erfasst und beschrieben. Diese Datenbank ist das sogenannte Application Dictionary (AD). Will man die vorhandenen Tabellen ändern oder erweitern, so macht man dies zuallererst im AD. Falls man dort eigene neue Objekte definiert, kann man diesen einen sogenannten "Entity Type" zuordnen. Es bietet sich also an, einen solchen zu definieren, damit man seine eigenen Änderungen später auch leichter wiedererkennt. Nun kann man (im Fenster Tabellen & Spalten) neue Tabellen erzeugen und innerhalb von Tabellen neue Spalten erzeugen. Natürlich kann man für jede Spalte verschiedene Eigenschaften wie den Datentyp, Beschreibungen, Hilfetexte, etc. definieren. Hat man dies gemacht, ist der nächste Schritt (im Fenster Fenster, Register & Felder), zu jeder Tabelle ein Fenster zu definieren, mit dessen Hilfe man die Daten der Tabelle editieren kann sowie für die Tabellenspalten entsprechende Eingabefelder zu definieren. Auch hier kann man wieder vielfältige Eingenschaften angeben. Die Unterscheidung zwischen einer Tabellenspalte, die die eigentlichen Daten beinhaltet und einem Eingabefeld, das die Anzeige und Manipulation dieser Daten erlaubt, ist wichtig und wird beim Suchen nach der richtigen Stelle für eine Anpassung gerne durcheinandergebracht. Es ist natürlich auch möglich, das es mehrere Fenster (oder Register-Tabs innerhalb eines Fensters) gibt, die sich auf die gleiche Tabelle beziehen ebenso wie es mehrere Felder (in unterschiedlichen oder im gleichen Fenster) geben kann, die sich auf ein und dieselbe Spalte beziehen. Tabellen und Spalten hingegen gibt es immer nur genau einmal, weil sie ja letztlich die Daten in der PostgreSQL-Datenbank definieren.

Zusammenfassung der Anpassung der Geschäftslogik

Nachdem man auf diese Art und Weise die Struktur seiner Daten beschrieben hat, ist die nächste Anpassungsmöglichkeit die Einbringung von Geschäftslogik, mit deren Hilfe man die Daten manipuliert. Hierzu gibt es verschiedene Erweiterungspunkte, die mit "alten" ADempiere-Methoden und mit den moderneren "OSGI"-Methoden von iDempiere angesprochen werden können:

  • Ein Callout ist eine Methode, die abhängig von einer Eingabe in einem Eingabefeld aufgerufen wird. So ist es möglich, während der Eingabe eine Verifizierung oder eine Berechnung stattfinden zu lassen. Ein Beispiel wäre, das nach Eingabe einer PLZ durch ein Callout auf dem PLZ-Feld automatisch die Stadt in das entsprechende Feld eingetragen wird. Callouts können prinzipiell innerhalb der Datenbank als Code in einer Skriptsprache oder als Java-Code implementiert werden.
  • Ein ModelValidator erlaubt es, bestimmten Code auszuführen, wenn bestimmte Ereignisse eintreten, die ein Objekt innerhalb des Datenmodells betreffen. Er bezieht sich also nicht auf ein Eingabefeld, sondern auf einen Datensatz. So kann man z.B. beim Speichern eines Datensatzes eine bestimmte Aktion ausführen. Ein Beispiel könnte sein, das man beim Speichern einer Rechnung die Rechnungsposten und die Mehrwertsteuer neu ausrechnet und speichert.
  • Ein Model ist eine eigene Java-Klasse, die eine selbsterzeugte Tabelle bzw. den darin enthaltenen Datentyp beschreibt. Ihr Quellcode kann vom GenerateModel Tool automatisiert erzeugt und dann angepasst werden. Sie erlaubt einen sehr viel weitergehenden Einfluss auf Aktionen als der ModelValidator und bietet innerhalb des Java-Programms auch eine objektorientierte Klasse, die überall benutzt werden kann.
  • Ein Prozess kann aus dem Menü heraus oder auch durch Button-Felder innerhalb eines Datenfensters aufgerufen werden. Er erhält ggf. vom Benutzer weitere Parameter, die durch ein kleines Auswahlfenster abgefragt werden und führt dann beliebige, programmierte Aufgaben mit den Daten aus.

Zusammenfassung der Anpassung von Ausgaben

Als weiteren Bereich, der angepasst werden kann, kann man eigene Reporte erstellen oder auch mit JasperReports eine sehr fortschrittliche und leistungsfähige Methode wählen, Auswertungen in schriftlicher Form (bzw. als PDF) zu erzeugen.

Übersicht

Folgende Punkte möchte ich von dieser Seite aus erarbeiten und erklären:

Anpassungen ohne Erweiterung des Java-Quellcodes

Anpassungen mit Hilfe eines Java-Projektes in Eclipse


vorläufige Linksammlung zum Thema


Beiträge