65
evenos Consulting GmbH 1 Plug-In Development Jan Thielemann

Präsentation plug in development

Embed Size (px)

DESCRIPTION

Plugin Development Vortrag. Gehalten auf dem deutschen iDempiere Community Treffen

Citation preview

Page 1: Präsentation plug in development

evenos Consulting GmbH 1

Plug-In Development

Jan Thielemann

Page 2: Präsentation plug in development

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

Page 3: Präsentation plug in development

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

Page 4: Präsentation plug in development

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“

Page 5: Präsentation plug in development

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

Page 6: Präsentation plug in development

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

Page 7: Präsentation plug in development

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:

Page 8: Präsentation plug in development

evenos Consulting GmbH 8

Wie entwickle ich mein eigenes Plug-In?

Best Practice - Neues Plug-In erstellen

Page 9: Präsentation plug in development

evenos Consulting GmbH 9

Wie entwickle ich mein eigenes Plug-In?

Page 10: Präsentation plug in development

evenos Consulting GmbH 10

Wie entwickle ich mein eigenes Plug-In?

Page 11: Präsentation plug in development

evenos Consulting GmbH 11

Wie entwickle ich mein eigenes Plug-In?

Page 12: Präsentation plug in development

evenos Consulting GmbH 12

Wie entwickle ich mein eigenes Plug-In?

Page 13: Präsentation plug in development

evenos Consulting GmbH 13

Wie entwickle ich mein eigenes Plug-In?

Page 14: Präsentation plug in development

evenos Consulting GmbH 14

Wie entwickle ich mein eigenes Plug-In?

Page 15: Präsentation plug in development

evenos Consulting GmbH 15

Wie entwickle ich mein eigenes Plug-In?

Best Practice – Manifest konfigurieren

Page 16: Präsentation plug in development

evenos Consulting GmbH 16

Wie entwickle ich mein eigenes Plug-In?

Page 17: Präsentation plug in development

evenos Consulting GmbH 17

Wie entwickle ich mein eigenes Plug-In?

Page 18: Präsentation plug in development

evenos Consulting GmbH 18

Wie entwickle ich mein eigenes Plug-In?

Page 19: Präsentation plug in development

evenos Consulting GmbH 19

Wie entwickle ich mein eigenes Plug-In?

Page 20: Präsentation plug in development

evenos Consulting GmbH 20

Wie entwickle ich mein eigenes Plug-In?

Page 21: Präsentation plug in development

evenos Consulting GmbH 21

Wie entwickle ich mein eigenes Plug-In?

Page 22: Präsentation plug in development

evenos Consulting GmbH 22

Wie entwickle ich mein eigenes Plug-In?

Page 23: Präsentation plug in development

evenos Consulting GmbH 23

Wie entwickle ich mein eigenes Plug-In?

Best Practice - 2Pack

Page 24: Präsentation plug in development

evenos Consulting GmbH 24

Wie entwickle ich mein eigenes Plug-In?

Page 25: Präsentation plug in development

evenos Consulting GmbH 25

Wie entwickle ich mein eigenes Plug-In?

Page 26: Präsentation plug in development

evenos Consulting GmbH 26

Wie entwickle ich mein eigenes Plug-In?

Page 27: Präsentation plug in development

evenos Consulting GmbH 27

Wie entwickle ich mein eigenes Plug-In?

Page 28: Präsentation plug in development

evenos Consulting GmbH 28

Wie entwickle ich mein eigenes Plug-In?

Page 29: Präsentation plug in development

evenos Consulting GmbH 29

Wie entwickle ich mein eigenes Plug-In?

Page 30: Präsentation plug in development

evenos Consulting GmbH 30

Wie entwickle ich mein eigenes Plug-In?

Best Practice - RegisterBuddy, Extensions and Components

Page 31: Präsentation plug in development

evenos Consulting GmbH 31

Wie entwickle ich mein eigenes Plug-In?

RegisterBuddy

Page 32: Präsentation plug in development

evenos Consulting GmbH 32

Wie entwickle ich mein eigenes Plug-In?

RegisterBuddy

Page 33: Präsentation plug in development

evenos Consulting GmbH 33

Wie entwickle ich mein eigenes Plug-In?

RegisterBuddy

Page 34: Präsentation plug in development

evenos Consulting GmbH 34

Wie entwickle ich mein eigenes Plug-In?

RegisterBuddy

Page 35: Präsentation plug in development

evenos Consulting GmbH 35

Wie entwickle ich mein eigenes Plug-In?

Extension

Page 36: Präsentation plug in development

evenos Consulting GmbH 36

Wie entwickle ich mein eigenes Plug-In?

Extension

Page 37: Präsentation plug in development

evenos Consulting GmbH 37

Wie entwickle ich mein eigenes Plug-In?

Component

Page 38: Präsentation plug in development

evenos Consulting GmbH 38

Wie entwickle ich mein eigenes Plug-In?

Component

Page 39: Präsentation plug in development

evenos Consulting GmbH 39

Wie entwickle ich mein eigenes Plug-In?

Component

Page 40: Präsentation plug in development

evenos Consulting GmbH 40

Wie entwickle ich mein eigenes Plug-In?

Component

Page 41: Präsentation plug in development

evenos Consulting GmbH 41

Wie entwickle ich mein eigenes Plug-In?

Component

Page 42: Präsentation plug in development

evenos Consulting GmbH 42

Wie entwickle ich mein eigenes Plug-In?

Component

Page 43: Präsentation plug in development

evenos Consulting GmbH 43

Wie entwickle ich mein eigenes Plug-In?

Component

Page 44: Präsentation plug in development

evenos Consulting GmbH 44

Wie entwickle ich mein eigenes Plug-In?

Component

Page 45: Präsentation plug in development

evenos Consulting GmbH 45

Wie entwickle ich mein eigenes Plug-In?

Best Practice - Plug-Ins in den Client integrieren

Page 46: Präsentation plug in development

evenos Consulting GmbH 46

Wie entwickle ich mein eigenes Plug-In?

Page 47: Präsentation plug in development

evenos Consulting GmbH 47

Wie entwickle ich mein eigenes Plug-In?

Page 48: Präsentation plug in development

evenos Consulting GmbH 48

Wie entwickle ich mein eigenes Plug-In?

Page 49: Präsentation plug in development

evenos Consulting GmbH 49

Wie entwickle ich mein eigenes Plug-In?

Page 50: Präsentation plug in development

evenos Consulting GmbH 50

Wie entwickle ich mein eigenes Plug-In?

Best practice - Export eines Plug-Ins als p2 Repositories oder als .jar

Page 51: Präsentation plug in development

evenos Consulting GmbH 51

Wie entwickle ich mein eigenes Plug-In?

Page 52: Präsentation plug in development

evenos Consulting GmbH 52

Wie entwickle ich mein eigenes Plug-In?

Page 53: Präsentation plug in development

evenos Consulting GmbH 53

Wie entwickle ich mein eigenes Plug-In?

Page 54: Präsentation plug in development

evenos Consulting GmbH 54

Wie entwickle ich mein eigenes Plug-In?

Page 55: Präsentation plug in development

evenos Consulting GmbH 55

Wie entwickle ich mein eigenes Plug-In?

Page 56: Präsentation plug in development

evenos Consulting GmbH 56

Wie entwickle ich mein eigenes Plug-In?

Page 57: Präsentation plug in development

evenos Consulting GmbH 57

Wie entwickle ich mein eigenes Plug-In?

Page 58: Präsentation plug in development

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:

Page 59: Präsentation plug in development

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

Page 60: Präsentation plug in development

evenos Consulting GmbH 60

● installing/updating/removing plug-ins

Page 61: Präsentation plug in development

evenos Consulting GmbH 61

● installing/updating/removing plug-ins

Page 62: Präsentation plug in development

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

Page 63: Präsentation plug in development

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

Page 64: Präsentation plug in development

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

Page 65: Präsentation plug in development

evenos Consulting GmbH 65

Vielen Dank für eure Aufmerksamkeit

Noch Fragen? Schreib mir eine Mail an [email protected]