Upload
xxtesaxx
View
117
Download
5
Embed Size (px)
DESCRIPTION
Plugin Development Vortrag. Gehalten auf dem deutschen iDempiere Community Treffen
Citation preview
evenos Consulting GmbH 1
Plug-In Development
Jan Thielemann
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
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
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“
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
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
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:
evenos Consulting GmbH 8
Wie entwickle ich mein eigenes Plug-In?
Best Practice - Neues Plug-In erstellen
evenos Consulting GmbH 9
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 10
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 11
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 12
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 13
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 14
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 15
Wie entwickle ich mein eigenes Plug-In?
Best Practice – Manifest konfigurieren
evenos Consulting GmbH 16
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 17
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 18
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 19
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 20
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 21
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 22
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 23
Wie entwickle ich mein eigenes Plug-In?
Best Practice - 2Pack
evenos Consulting GmbH 24
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 25
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 26
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 27
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 28
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 29
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 30
Wie entwickle ich mein eigenes Plug-In?
Best Practice - RegisterBuddy, Extensions and Components
evenos Consulting GmbH 31
Wie entwickle ich mein eigenes Plug-In?
RegisterBuddy
evenos Consulting GmbH 32
Wie entwickle ich mein eigenes Plug-In?
RegisterBuddy
evenos Consulting GmbH 33
Wie entwickle ich mein eigenes Plug-In?
RegisterBuddy
evenos Consulting GmbH 34
Wie entwickle ich mein eigenes Plug-In?
RegisterBuddy
evenos Consulting GmbH 35
Wie entwickle ich mein eigenes Plug-In?
Extension
evenos Consulting GmbH 36
Wie entwickle ich mein eigenes Plug-In?
Extension
evenos Consulting GmbH 37
Wie entwickle ich mein eigenes Plug-In?
Component
evenos Consulting GmbH 38
Wie entwickle ich mein eigenes Plug-In?
Component
evenos Consulting GmbH 39
Wie entwickle ich mein eigenes Plug-In?
Component
evenos Consulting GmbH 40
Wie entwickle ich mein eigenes Plug-In?
Component
evenos Consulting GmbH 41
Wie entwickle ich mein eigenes Plug-In?
Component
evenos Consulting GmbH 42
Wie entwickle ich mein eigenes Plug-In?
Component
evenos Consulting GmbH 43
Wie entwickle ich mein eigenes Plug-In?
Component
evenos Consulting GmbH 44
Wie entwickle ich mein eigenes Plug-In?
Component
evenos Consulting GmbH 45
Wie entwickle ich mein eigenes Plug-In?
Best Practice - Plug-Ins in den Client integrieren
evenos Consulting GmbH 46
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 47
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 48
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 49
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 50
Wie entwickle ich mein eigenes Plug-In?
Best practice - Export eines Plug-Ins als p2 Repositories oder als .jar
evenos Consulting GmbH 51
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 52
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 53
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 54
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 55
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 56
Wie entwickle ich mein eigenes Plug-In?
evenos Consulting GmbH 57
Wie entwickle ich mein eigenes Plug-In?
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:
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
evenos Consulting GmbH 60
● installing/updating/removing plug-ins
evenos Consulting GmbH 61
● installing/updating/removing plug-ins
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
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
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
evenos Consulting GmbH 65
Vielen Dank für eure Aufmerksamkeit
Noch Fragen? Schreib mir eine Mail an [email protected]