SlideShare ist ein Scribd-Unternehmen logo
1 von 65
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 jan.thielemann@evenos.de

Weitere ähnliche Inhalte

Andere mochten auch

Janis, Maike, Nisha, Alice, Cybermobbing
Janis, Maike, Nisha, Alice, CybermobbingJanis, Maike, Nisha, Alice, Cybermobbing
Janis, Maike, Nisha, Alice, Cybermobbingpechakucha1
 
Gost 19393 74
 Gost 19393 74 Gost 19393 74
Gost 19393 74Kinlay89
 
Wikiquiz - Die kostenlose Lerncommunity mit Karteikarten
Wikiquiz - Die kostenlose Lerncommunity mit KarteikartenWikiquiz - Die kostenlose Lerncommunity mit Karteikarten
Wikiquiz - Die kostenlose Lerncommunity mit KarteikartenPascal Dequito
 
Anleitung google plus für ofw-studenten
Anleitung google plus für ofw-studentenAnleitung google plus für ofw-studenten
Anleitung google plus für ofw-studentenBernd Schmitz
 
Vernetzung von digitalen Tool
Vernetzung von digitalen ToolVernetzung von digitalen Tool
Vernetzung von digitalen ToolOlaf Nitz
 
Kleine Hotels Within Andalusien
Kleine Hotels Within Andalusien
Kleine Hotels Within Andalusien
Kleine Hotels Within Andalusien leslie0mack5
 
Gallup Strengthsfinder 2.0 Results
Gallup Strengthsfinder 2.0 ResultsGallup Strengthsfinder 2.0 Results
Gallup Strengthsfinder 2.0 ResultsLucas Ratisseau
 

Andere mochten auch (11)

Janis, Maike, Nisha, Alice, Cybermobbing
Janis, Maike, Nisha, Alice, CybermobbingJanis, Maike, Nisha, Alice, Cybermobbing
Janis, Maike, Nisha, Alice, Cybermobbing
 
Gost 19393 74
 Gost 19393 74 Gost 19393 74
Gost 19393 74
 
Sigmadivertikulitis
SigmadivertikulitisSigmadivertikulitis
Sigmadivertikulitis
 
Wikiquiz - Die kostenlose Lerncommunity mit Karteikarten
Wikiquiz - Die kostenlose Lerncommunity mit KarteikartenWikiquiz - Die kostenlose Lerncommunity mit Karteikarten
Wikiquiz - Die kostenlose Lerncommunity mit Karteikarten
 
Kurzreferenz css
Kurzreferenz cssKurzreferenz css
Kurzreferenz css
 
Anleitung google plus für ofw-studenten
Anleitung google plus für ofw-studentenAnleitung google plus für ofw-studenten
Anleitung google plus für ofw-studenten
 
Vernetzung von digitalen Tool
Vernetzung von digitalen ToolVernetzung von digitalen Tool
Vernetzung von digitalen Tool
 
Kleine Hotels Within Andalusien
Kleine Hotels Within Andalusien
Kleine Hotels Within Andalusien
Kleine Hotels Within Andalusien
 
Gallup Strengthsfinder 2.0 Results
Gallup Strengthsfinder 2.0 ResultsGallup Strengthsfinder 2.0 Results
Gallup Strengthsfinder 2.0 Results
 
Prn1
Prn1Prn1
Prn1
 
Spottr
SpottrSpottr
Spottr
 

Ähnlich wie Präsentation plug in development

UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...Nico Orschel
 
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Nico Orschel
 
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge UnternehmenBjoern Reinhold
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
 
Testautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeTestautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeNico Orschel
 
DevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenDevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenFotiosKaramitsos
 
ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?POINT. Consulting GmbH
 
B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009Andreas Schulte
 
Social Intranet für KMU - IBM Connect Switzerland
Social Intranet für KMU - IBM Connect SwitzerlandSocial Intranet für KMU - IBM Connect Switzerland
Social Intranet für KMU - IBM Connect SwitzerlandKlaus Bild
 
C++ Dependency Management 2.0
C++ Dependency Management 2.0C++ Dependency Management 2.0
C++ Dependency Management 2.0Patrick Charrier
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...LeanIX GmbH
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsAndreas Schulte
 
Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsGünther Haslbeck
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular AppFlorian Bader
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Thorsten Kamann
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationGWAVA
 
6 verschiedene Arten von Software
6 verschiedene Arten von Software6 verschiedene Arten von Software
6 verschiedene Arten von SoftwareYUHIRO
 

Ähnlich wie Präsentation plug in development (20)

UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
 
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
Testmanagement mit Visual Studio 2013 / CodedUI / Neues aus der Produktgruppe...
 
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Testautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeTestautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für Fortgeschrittende
 
DevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenDevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigen
 
ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?
 
Advanced Continuous Integration
Advanced Continuous IntegrationAdvanced Continuous Integration
Advanced Continuous Integration
 
B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009
 
Social Intranet für KMU - IBM Connect Switzerland
Social Intranet für KMU - IBM Connect SwitzerlandSocial Intranet für KMU - IBM Connect Switzerland
Social Intranet für KMU - IBM Connect Switzerland
 
C++ Dependency Management 2.0
C++ Dependency Management 2.0C++ Dependency Management 2.0
C++ Dependency Management 2.0
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite Applications
 
Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web Applications
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular App
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?
 
XPages - The Basics
XPages - The BasicsXPages - The Basics
XPages - The Basics
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
6 verschiedene Arten von Software
6 verschiedene Arten von Software6 verschiedene Arten von Software
6 verschiedene Arten von Software
 
2011 05 11 11-45 top_sopft-startfolien-xx-01
2011 05 11 11-45 top_sopft-startfolien-xx-012011 05 11 11-45 top_sopft-startfolien-xx-01
2011 05 11 11-45 top_sopft-startfolien-xx-01
 

Präsentation plug in development

  • 1. evenos Consulting GmbH 1 Plug-In Development Jan Thielemann
  • 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
  • 9. evenos Consulting GmbH 9 Wie entwickle ich mein eigenes Plug-In?
  • 10. evenos Consulting GmbH 10 Wie entwickle ich mein eigenes Plug-In?
  • 11. evenos Consulting GmbH 11 Wie entwickle ich mein eigenes Plug-In?
  • 12. evenos Consulting GmbH 12 Wie entwickle ich mein eigenes Plug-In?
  • 13. evenos Consulting GmbH 13 Wie entwickle ich mein eigenes Plug-In?
  • 14. evenos Consulting GmbH 14 Wie entwickle ich mein eigenes Plug-In?
  • 15. evenos Consulting GmbH 15 Wie entwickle ich mein eigenes Plug-In? Best Practice – Manifest konfigurieren
  • 16. evenos Consulting GmbH 16 Wie entwickle ich mein eigenes Plug-In?
  • 17. evenos Consulting GmbH 17 Wie entwickle ich mein eigenes Plug-In?
  • 18. evenos Consulting GmbH 18 Wie entwickle ich mein eigenes Plug-In?
  • 19. evenos Consulting GmbH 19 Wie entwickle ich mein eigenes Plug-In?
  • 20. evenos Consulting GmbH 20 Wie entwickle ich mein eigenes Plug-In?
  • 21. evenos Consulting GmbH 21 Wie entwickle ich mein eigenes Plug-In?
  • 22. evenos Consulting GmbH 22 Wie entwickle ich mein eigenes Plug-In?
  • 23. evenos Consulting GmbH 23 Wie entwickle ich mein eigenes Plug-In? Best Practice - 2Pack
  • 24. evenos Consulting GmbH 24 Wie entwickle ich mein eigenes Plug-In?
  • 25. evenos Consulting GmbH 25 Wie entwickle ich mein eigenes Plug-In?
  • 26. evenos Consulting GmbH 26 Wie entwickle ich mein eigenes Plug-In?
  • 27. evenos Consulting GmbH 27 Wie entwickle ich mein eigenes Plug-In?
  • 28. evenos Consulting GmbH 28 Wie entwickle ich mein eigenes Plug-In?
  • 29. evenos Consulting GmbH 29 Wie entwickle ich mein eigenes Plug-In?
  • 30. evenos Consulting GmbH 30 Wie entwickle ich mein eigenes Plug-In? Best Practice - RegisterBuddy, Extensions and Components
  • 31. evenos Consulting GmbH 31 Wie entwickle ich mein eigenes Plug-In? RegisterBuddy
  • 32. evenos Consulting GmbH 32 Wie entwickle ich mein eigenes Plug-In? RegisterBuddy
  • 33. evenos Consulting GmbH 33 Wie entwickle ich mein eigenes Plug-In? RegisterBuddy
  • 34. evenos Consulting GmbH 34 Wie entwickle ich mein eigenes Plug-In? RegisterBuddy
  • 35. evenos Consulting GmbH 35 Wie entwickle ich mein eigenes Plug-In? Extension
  • 36. evenos Consulting GmbH 36 Wie entwickle ich mein eigenes Plug-In? Extension
  • 37. evenos Consulting GmbH 37 Wie entwickle ich mein eigenes Plug-In? Component
  • 38. evenos Consulting GmbH 38 Wie entwickle ich mein eigenes Plug-In? Component
  • 39. evenos Consulting GmbH 39 Wie entwickle ich mein eigenes Plug-In? Component
  • 40. evenos Consulting GmbH 40 Wie entwickle ich mein eigenes Plug-In? Component
  • 41. evenos Consulting GmbH 41 Wie entwickle ich mein eigenes Plug-In? Component
  • 42. evenos Consulting GmbH 42 Wie entwickle ich mein eigenes Plug-In? Component
  • 43. evenos Consulting GmbH 43 Wie entwickle ich mein eigenes Plug-In? Component
  • 44. evenos Consulting GmbH 44 Wie entwickle ich mein eigenes Plug-In? Component
  • 45. evenos Consulting GmbH 45 Wie entwickle ich mein eigenes Plug-In? Best Practice - Plug-Ins in den Client integrieren
  • 46. evenos Consulting GmbH 46 Wie entwickle ich mein eigenes Plug-In?
  • 47. evenos Consulting GmbH 47 Wie entwickle ich mein eigenes Plug-In?
  • 48. evenos Consulting GmbH 48 Wie entwickle ich mein eigenes Plug-In?
  • 49. evenos Consulting GmbH 49 Wie entwickle ich mein eigenes Plug-In?
  • 50. evenos Consulting GmbH 50 Wie entwickle ich mein eigenes Plug-In? Best practice - Export eines Plug-Ins als p2 Repositories oder als .jar
  • 51. evenos Consulting GmbH 51 Wie entwickle ich mein eigenes Plug-In?
  • 52. evenos Consulting GmbH 52 Wie entwickle ich mein eigenes Plug-In?
  • 53. evenos Consulting GmbH 53 Wie entwickle ich mein eigenes Plug-In?
  • 54. evenos Consulting GmbH 54 Wie entwickle ich mein eigenes Plug-In?
  • 55. evenos Consulting GmbH 55 Wie entwickle ich mein eigenes Plug-In?
  • 56. evenos Consulting GmbH 56 Wie entwickle ich mein eigenes Plug-In?
  • 57. evenos Consulting GmbH 57 Wie entwickle ich mein eigenes Plug-In?
  • 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
  • 60. evenos Consulting GmbH 60 ● installing/updating/removing plug-ins
  • 61. evenos Consulting GmbH 61 ● installing/updating/removing plug-ins
  • 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

Hinweis der Redaktion

  1. Implementation der ModelFactory
  2. feature.xml in org.adempiere.ui.swing-feature