2. evenos Consulting GmbH 2
Inhaltsverzeichnis
Warum sollte ich Plug-Ins benutzen?
– Der ADempiere Weg
– Der iDempiere Weg
– Gründe für die Nutzung von Plug-Ins
Was kann man mit Plug-Ins anstellen?
– Gewöhnliche Anwendungsfälle
– Spezielle Anwendungsfälle
Wie entwickle ich mein eigenes Plug-In?
– Erste Schritte
– Best practice
Wie kann ich meine Plug-Ins ausliefern?
– p2 Repositories
– Installation eines Plug-Ins aus einer jar Datei via Apache Felix Web Console
Tips und Tricks
Fazit
3. evenos Consulting GmbH 3
Warum sollte ich Plug-Ins benutzen?
ADempiere Weg:
ADempiere auschecken und den Workspace konfigurieren
Neues Projekt für Customizations erstellen oder Core Code verändern
Projekt bauen und customization.jar ersetllen
Server stoppen
Dateien ersetzen oder customization.jar installieren (via setup/silentsetup)
Migrationsscripte ausführen
Server starten
Nachteile:
Unbequem für Entwickler
Fehleranfällig
Server muss gestoppt werden
Ant build.xml muss ggf. angepasst werden
Klassen in der customization.jar musen die richtige Verzeichnisstruktur aufweisen
Änderungen können nicht einfach ein- und ausgeschaltete werden
4. evenos Consulting GmbH 4
Warum sollte ich Plug-Ins benutzen?
iDempiere Weg:
iDempiere auschecken und Workspace konfigurieren
Plug-In Projekt erstellen
Benutzung von Extension Points oder Component Definitions um Funktionen bereit zu stellen
Plug-In exportieren
Installation und Start des Plug-Ins zur Laufzeit
Vorteile:
Modulare Architekture
Einfach zu erlernen
Server muss nicht gestoppt werden
Core-Klassen müssen nicht mehr geändert werden
Dependency Management
Einfache Erweiterbarkeit
Einfaches Updaten des Cores ohne Verlust von Funktionalität
Nachteile:
Modifikation der Core-Klassen nicht möglich
Es sind möglicherweise nicht alle Funktionen „OSGi-Ready“
5. evenos Consulting GmbH 5
Warum sollte ich Plug-Ins benutzen?
Gründe für die Nutzung von Plug-Ins:
Funktionen für den privaten Gebrauch entwickeln und immer noch in der Lage sein, die
Community mit Bug Fixes für den Core zu versorgen (separate Projekte und Repositories)
Einfaches und schnelles Testen neuer Funktionen mit Möglcihkeit eines einfachen Rollbacks.
Gliederung von Funktionsbereichen in Plug-Ins (Kunde A bekommt Plug-In A und B, Kunde B nur
Plug-In B
iDempiere Core kann stehts aktuell gehalten werden
Funktionen lokal entwickeln und einfach auf einem produktiven System einspielen.
Es wird kein so tiefes Verständnis für den Core benötigt um Plug-Ins zu entwickeln
Marktplatzes für Erweiterungen
6. evenos Consulting GmbH 6
Was kann ich mit Plug-Ins anstellen?
Spezielle Aufgaben:
Payment Processor
Shipment Processor
Attachements
Pack In/Out
PIPO Element Handlers
Tabs
Menus
Gewöhnliche Aufgaben:
Model
Modelvalidator
Processes
Callout
Document
Form
Editor
Infowindow
Lookup
7. evenos Consulting GmbH 7
Wie entwickle ich mein eigenes Plug-In?
iDempiere Source Code auschecken und Workspace konfigurieren
– Tutorials: http://www.globalqss.com/wiki/index.php/IDempiere
Plug-In Development Tutorials im iDempiere Wiki
– http://wiki.idempiere.org/en/Category:Plug-In_Development
Redhuan D. Oons Forum enthält auch viele nützliche Informationen
– http://red1.org/adempiere/index.php
Von existierende Plug-Ins lernen
– iDempiere besteht aus Plug-Ins und viele von ihnen benutzen Extension Points und Component
Definitions an denen man sich orrientieren kann
iDempiere Wiki und Google Groups
– http://wiki.idempiere.org/wiki/Main_Page
– https://groups.google.com/forum/#!forum/idempiere
IRC Channel #idempiere (irc.freenode.net)
Erste Schritte:
8. evenos Consulting GmbH 8
Wie entwickle ich mein eigenes Plug-In?
Best Practice - Neues Plug-In erstellen
58. evenos Consulting GmbH 58
Wie kann ich meine Plug-Ins ausliefern?
„The p2 project is a sub-project of Equinox that focuses on provisioning technology for OSGi-based applications.
Although p2 has specific support for installing Eclipse and Equinox-based applications, it includes a general-purpose
provisioning infrastructure that can be used as the basis for provisioning solutions for a wide variety of software
applications.“ - http://www.eclipse.org/equinox/p2/
Kurz: Möglichkeit zum Installieren und Updateen von iDempiere und seinen Plug-Ins übers Internet
iDempiere und Plug-Ins können in einem zentralen Repository gehostet werden
Denkbar wäre ein iDempiere Marketplace für Plug-Ins
Update iDempiere via Terminal:
– java -Dosgi.noShutdown=false -Dosgi.compatibility.bootdelegation=true -Dosgi.install.area=director -jar
plugins/org.eclipse.osgi_3.7.*.jar -application org.eclipse.equinox.p2.director -consoleLog -profileProperties
org.eclipse.update.install.features=true -destination $DESTINATION -repository
http://downloads.sourceforge.net/project/red1/p2/idempiere-server/ -u org.adempiere.server.product
– java -Dosgi.noShutdown=false -Dosgi.compatibility.bootdelegation=true -Dosgi.install.area=director -jar
plugins/org.eclipse.osgi_3.7.*.jar -application org.eclipse.equinox.p2.director -consoleLog -profileProperties
org.eclipse.update.install.features=true -destination $DESTINATION -repository
http://downloads.sourceforge.net/project/red1/p2/idempiere-server/ -i org.adempiere.server.product
p2 repositories:
59. evenos Consulting GmbH 59
Wie kann ich meine Plug-Ins ausliefern?
Auf dem Server können Plug-Ins via Apache Felix Web Console installiert werden
– http://host:8080/osgi/system/console/bundles
Server muss nicht gestoppt oder neu gestartet werden
Terminal nicht notwendig
Selbsterklärend
Apache Felix Web Console
62. evenos Consulting GmbH 62
Tips und Tricks
Extending/Overriding base models
– Extend the base model and just create a new M class instead creating I, X and M classes
– Provide your model via ModelFactory
– This way, core classes can still cast your modified model
Test plug-ins in Eclipse
– Open Run Configurations and select the application you want to run
– Switch to the Plug-ins tab and check the plug-ins you want to start
– Start the application
– Type „ss“ on the console to see the state of each plugin
– Start plug-ins with „start <nr>“
– Stop plug-ins with „stop <nr>“
– Remove plug-ins with „uninstall <nr>“
OSGi console when starting the server via command line
– open idempiere-server.sh
– look for the number after „-console“
– to connect to the OSGi console use telnet
• e. g.: telnet localhost 12612
63. evenos Consulting GmbH 63
Tips und Tricks
Wo finde ich Hilfe?
– iDempiere nahezu den selben Core wie ADempiere, daher sind die ADempiere Bücher immer
noch gut geeignet um ein tieferes Verständnis zu entwickeln
• ADempiere 3.6 Cookbook by Ajit Kumar
• ADempiere 3.4 ERP Solutions by Bayu Cahya Pamungkas
– ADempiere wiki: http://www.adempiere.com/ADempiere_ERP
– iDempiere wiki: http://wiki.idempiere.org/wiki/Main_Page
– Google group: https://groups.google.com/forum/?fromgroups#!forum/idempiere
– Redhuan D. Oon forum: http://red1.org/adempiere/index.php
– Global Quality System and Solutions wiki: http://www.globalqss.com/wiki/index.php/IDempiere
– Freenode irc: #idempiere
Bug gefunden?
– Prüfen ob der Bug auch im iDempeire Demo System auftritt: https://demo.idempiere.com/
– Im IRC fragen, ob der Fehler auch von anderen reproduzierbar ist oder ob eventuell ein
Benutzungsfehler vorliegt
– Ticket anlegen
• Ticketsystem: http://jira.idempiere.com
64. evenos Consulting GmbH 64
Fazit
iDempiere benutzt das Equinox OSGi Framework
iDempiere erlaubt es, Funktionen einfach und schnell per Plug-In bereit zu stellen
iDempiere lässt sich besser pflegen als ADempiere
2Pack ist gut geeignet um Informationen zwischen zwei iDempiere Systemen auszutauschen
iDempiere ist anfängerfreundlicher als ADempiere
iDempiere erlaubt es, Funktionen bereit zu stellen, ohne den möglichen Source Code eines
Kunden zu kennen
iDempiere ist sehr einfach zu erlenen, wenn man sich bereits mit ADempiere auskennt
65. evenos Consulting GmbH 65
Vielen Dank für eure Aufmerksamkeit
Noch Fragen? Schreib mir eine Mail an jan.thielemann@evenos.de