Anleitung zur Migration von Modulen

Aus iDempiere de
Wechseln zu: Navigation, Suche
 IN BEARBEITUNG  

Hinweis: Dieser Artikel ist eine Übersetzung eines Artikels von D. Redhuan (Red1) und der spanischen Übersetzung.



Migrationsplan für Entwickler

Migration.png



Warum migrieren?

Es ist in der Software-Industrie allgemein bekannt, dass die Verwaltung von Updates, Bugfixes und Quellcode-Versionen eine der großen Herausforderungen ist.

Je mehr individuelle Änderungen der Benutzer am Quellcode der Anwendung oder am Konfiguration Modell vonimmt, umso größer wird die Wahrscheinlichkeit, dass Konflikte mit Updates oder Korrekturen des Standardes von iDempiere entstehen, da iDempiere durch die Gemeinschaft entwickelt wird.

Ein ERP kann leicht, aufgrund der zunehmenden Komplexität und Größe, zu einem riesigen Ungeheuer werden. Daher macht es Sinn durch einen kleineren ERP Kern eine gemeinsame Basis für die meisten Anwender zu schaffen. Weiter Module und Funktionen können in iDempiere durch Add-on-Module und Plugins bei Bedarf integriert werden. In iDempiere erfolgt daher die Entwicklung neuer Module in Form von gekapselten Modulen und Plugins.

Die Herausforderung ist es nun konsequent zu migrieren und bestimmte bestehende Funktionalitäten zu vermeiden.


Die Abbildung zeigt die derzeitige Arbeitsweise von System A (wie ADempiere 3,6) und die Zukunft mit System B (wie Idempiere).

Mit 2K Abb. 3


Durch das System B (wie Idempiere) wird sichergestellt, dass Sie die neuesten Updates oder wichtige Upgrades verwenden können, ohne Ihre kundenspezifischen Änderungen zu beeinträchtigen.



Was migrieren

Die nächsten Fragen, die entstehen, sind:
- Was migrieren? -
- Wie migrieren
- Wie ist der Code?

Immigration Abb. 2

IDempiere und ADempiere basieren auf Compiere. Hier können Änderungen sowohl Code und Daten umfassen. Diese Daten sind "Metadaten" für die Konfiguration der Anwendung. Ein sog. Dictionary, das das Look and Feel bestimmt und das Konfigurations-Modell, wobei die letzteren auch Elemente wie Menüs, Fenster, Desktops, Tabulatoren, Prozesse und andere Merkmale beinhalten, die zwar im Quellcode "eingebrannt" (fest codiert) sind, jedoch in der Datenbank separat in einem bestimmten Format gespeichert werden.

Wie man genau auf dem obigen Diagramm sehen kann, zeigt sich, was wir gerade beschrieben haben. Es macht Sinn, dass in rot die Worte AD CODE hervorgehoben werden.

AD steht für Application Dictionary, das die erwähnten Metadaten darstellt.

Die obige Abbildung zeigt, dass die Einheiten von IDempiere in Metadaten zu 2K migriert werden. Der Quellcode wird als neues Plugin entwickeltes Tool für die Entwicklung von Plugins (PDE) in Eclipse gesendet.

Wie migrieren?

Der nächste Schritt ist, die Migration von Metadaten und Code erfolgreich abzuschließen. Wie bereits erwähnt, führte der erste Teil 2K in einer ZIP-Datei (2pack.zip) und enthält die ausführliche Beschreibung der Änderungen an exportiert AD im XML-Format. Der zweite Teil ist Java in der Struktur des Eclipse Plugin zu formatieren. In Abbildung 3 können wir, durch-Boxen und den roten Pfeil markiert, deutlich den Prozess der Migration AD erkennen. Andere Bereiche, die wir später im Detail untersuchen, zeigen den Prozess der Code Migration. Dieser ist durch ein rot umrandetes "Eclipse" gekennzeichnet.

Mit 2K Abb. 3

In Abbildung 3 präsentieren wir die neuen Begriffe.

Auf der linken Seite ist der Java-Code im alten Stil, in der Java Virtual Machine (JVM) zu erkennen. Dieser arbeitet in einer Art von geschlossenem Behälter. Damit ist nicht jede Form des Zugangs möglich.

Auf der rechten Seite sehen System B. Hierbei handelt es sich um einen OSGi-Container, der mit "Connect" eine neue Funktionalität bereitstellt. Damit wird Ihnen und Eclipse-Plugins der Zugriff und die Kontrolle per 'SS' Befehl ermöglicht. In dem neuen System können wir ebenfalls eine Beziehung zwischen Plugins durch eine Manifest-Datei bestimmt. Die Datei MANIFEST.MF befindet sich in dem Unterordner META-INF. In der Datei META-INF befindet sich ein eigener "Activator". Dieser erkennt automatisch jede 2pack.zip Datei in diesem Ordner und Überträgt automatisch in die Datenbank.


Nun folgt der Prozess zur Herstellung eines benutzerdefinierten Moduls. Hilfreich sind auch folgende (englische) Filme:
Pack-Out Module
Eclipse Plugin Development
Pack-Plugin als Modul

Zur Analyse werden wir auf die Elemente in Abbildung 4 später noch näher eingehen.

1) Das Plugin Modul
2) Der Aktivator
3) Blau markiert können Sie den hartcodierten Codeausschnitt sehen.
4) Die Datei 2Pack.zip wird in dem Ordner META-INF aufgerufen.


Modulo2migrar-2.png



Migrieren eines Moduls

Wir werden am Beispiel eines echten Moduls die ADempiere / IDempiere Migration eines Plugin erläutern. Für unser Beispiel verwenden wir das Integrationsmodul von Openbravo POS und ERP ADempiere. Dies ist ein Job, der entwickelt und im letzten Jahr veröffentlicht wurde.


Es wird ein Modul dieses Namens POS Integration mit drei Unterpunkten erstellt. Zwei Unterpunkte werden Prozesse Export to Queue und Import Orders from Queue enthalten. Ein weiterer Menüpunkt wird ein Fenster mit dem Name Process Imported Orders.

Migrate-Modul Abbildung 5


All dies sind kundenspezifische Modifikationen und weder Teil des Standard-ADempiere noch ein Bestandteil von iDempiere. Es gibt wohl eine Reihe von Möglichkeiten um diese Änderungen in iDempiere enzuarbeiten.

Eine Möglichkeit ist die aufgezeichneten Log Migration Skripte für durchgeführte Änderungen zu verwednden.

Ein anderer Weg ist das entpacken und wieder packen durch das 2Pack Tool. Dieses Tool ist schon seit einigen Jahren Bestandteil von ADempiere. Es gibt nun allerdings einen Unterschied, da Low Heng Sin das 2Pack Tool überarbeitet und verbessert hat. Wenn Sie das iDempiere Tool 2Pack zum importien verwenden möchten, sollten Sie auch das iDempiere Tool 2Pack zum exportien verwenden.

Beginnen wir mit einem frischen iDempiere v1.0.a und nutzen den Link zum Migrations-Script.



SQL Scripts Abbildung 6


Der obige Link ist eine Liste von SQL-Skripts wie in der Abbildung oben dargestellt. Es folgt der Quellcode des Moduls. Wir können die Migration des Scriptes sehen und wie die Datei 2pack.zip mit OpenBravoPOS verwendet wird. Es ist jedoch wichtig zu beachten, dass wir uns nur auf dem Code der Customization Migration konzentrieren.

Mit dem folgenden Link können Sie die Vollversion des Produkts herunterladen.



Installation von IDempiere

Wenn Sie einen Desktop oder Notebook mit frisch installiertem Windows, ohne Java oder Postgres DB, haben ist es einfach iDempiere zu installieren. Laden Sie hierzu einfach das Installationsprogramm herunter.

Wenn fehlende Komponentem benötigt werden enthält der Installer, in Verbindung mit dem Update-Assistenten, eine schriftliche Anleitung.

Wenn Sie eine andere Umgebung als Windows einsetzen, können Sie die Anleitung zu IDempiere http://wiki.idempiere.org verwenden.

Sobald IDempiere läuft können Sie das Migration Script anwenden und die 2pack.zip Datei für das neue Plugin entpacken. Für Zusätzliche Unterstützung zu den Migration Scripten steht die Online-Hilfe zur Verfügung.

Um diesen Prozess mit eigenen Anpassungen durchzuführen ist es wichtig, dass sie eine Menü Gruppe zur Integration haben.



Entpacken (Pack out)

1) Pack Out im Menü wählen
Melden Sie sich als Benutzer an und wählen Sie im Menü den Menüpunkt Pack Out

2) Zum Öffnen der Fenster geben Sie, wie in der folgenden Abbildung angegeben, die Informationen ein.

3) In der zweiten Tabelle wählen Sie die Anwendung oder ein Modul. Dann wählen Sie das Menü-Modul zur Migration.

4) Nach erfolgter Rückkehr zum übergeordneten Menü wählen Sie die Schaltfläche Export.

5) Der Prozess nimmt, Abhängig von der Komplexität des Moduls, einige Zeit in Anspruch. Am Ende des Prozesses sehen Sie am unteren Fensterrand in welchem Pfad die Datei 2pack.zip Datei erstellt wurde.


Wir werden die Datei später für das Plugin verwenden. Nun werfen wir einen Blick auf den Quellcode des Moduls, wie er innerhalb des Plugins enthalten ist.


Packout.jpg



Überprüfung des Quellcode

Der Quellcode-Pakete muss in einer dem Beispiel ähnlichen Weise ähnlich präsentiert werden. Obwohl die Integration von ADempiere mit Openbravo POS nicht im Sinne von großen Klassen oder Zeilen Code erfolgt, ist es ein perfektes Beispiel zur Veranschaulichung, weil mehrere Kern-ERP-Komponenten verwendet werden.

Ein Beispiel veranschaulicht, wie org.adempiere.process mehrere Klassen der Bereiche ImportOrder.java Prozess bündelt, die wiederum die ursprüngliche Klasse im selben Paket ADempiere erweitern.
Da ADempiere die OSGI IDempiere Architektur verwendet, ist das früher notwendige Schreibrecht auf die Datei customization.jar nicht nicht mehr erforderlich. Alles, was wir jetzt tun müssen, ist, den neuen Code in einem Plugin zu erklären und in das gleiche Paket (org.adempiere.process) zu integrieren und während der Laufzeit auf ADempiere Basis zu aktivieren.
Möglich macht dies im Grunde die OSGI Architektur durch Modularisierung, so dass es nicht mehr notwendig ist, neu zu kompilieren oder die Datei customization.jar zu ersetzen, wenn Sie eine Änderung vornehmen, oder wenn auch nur um unser Plugin als Container für andere Plugins hinzuzufügen. Es erleichtert die Wartung der Anwendung, der Debug-und Tracking-Fehler, wenn sie auftreten. Es ist es ausreichend, lediglich das Plugin OSGI-Konsole im laufen Betrieb zu deaktivieren.

Vorbereiten der Umgebung

Eclipse-

Unser Wiki gibt weitere Informationen, wie Sie die Eclipse-Entwicklungsumgebung mit Funktionalität Buckminster' und' Mercurial konfigurieren. Mercurial ist erforderlich, da unser Online-Repository unter Bitbucket IDempiere gehostet wird. Ist das erledigt sind wir bereit für unser erstes Plugin.

Erstellen eines neuen Projekts

Plugin

Wählen Sie Neu> Andere (1)> Plugin-Projekt (3) und geben Sie den Namen des Moduls zur Migration ein. Deaktivieren Sie die Option> Generate Activator (4). Dann benutzen wir den Activator ADempiereActivator Revizarcod1.jpg Revizarcod2.jpg der sich in der META-INF MANIFEST.MF Datei befindet (1), siehe Tabelle im Überblick. Wählen Sie den Activator und wählen Sie die Suchtaste AdempiereActivator Klasse. Sie können die Abhängigkeiten des Plugins definieren. Gehen sie zur Registerkarte Abhängigkeiten (2) und fügen Sie das Plugin org.adempiere.plugins, dass Activator enthält (3), und auch das Plugin org.adempiere.base hinzu als Kern für die Pakete, die unter org.compiere.process org.adempiere.process und über das neue Plugin geschrieben ist. Beachten Sie, dass innerhalb der importierte Pakete die Bibliothek für meine Active MQ-Funktion (4) ausgewählt ist. Revizarcod3.jpg Dann gehen Sie zurück zu der Registerkarte Übersicht (1) Wählen Sie die Schaltfläche Suchen (2). Dort können Sie den Activator (3) auswählen. Revizarcod4.jpg ==== Überprüfen Sie das Plugin und schauen Sie auf den Quellcode und stellen sicher, dass unsere Customization Klassen innerhalb der Pakete richtig (1) sind. Sie müssen neben der Abhängigkeiten aufgelöst (2 werden ). Beachten Sie, dass in den importierten Bibliotheken die OSGI Architektur wird und (a) Zielplattform aufgelöst oder (B) Andere Plugins in der Manifest-Datei (3), oder in MANIFEST Jars deklariert werden.

Nachfolgend Der Abschluss des Plugins gezeigt. Revizarcod5.jpg Aber das ist noch nicht alles.

Bevor das neue Plug-In im Kern vom Plugin ADempiere org.adempiere.base im Klassenpfad enthalten ist, müssen Sie, da OSGI im Kern plugin anders arbeitet und eine Reihe von Paketen wie org.adempeire.process Klassen ist, müssen Sie das Line-RegisterBuddy Eclipse-(1) irgendwo in der Manifest-Datei setzen. Sie können auch den Export Pakete Registerkarte Run (2) einstellen, so dass es andere Plugins aufnehmen kann, die es verwenden kann. Zusätzlich können interne Linsen auf der Registerkarte (3) zur Erklärung verwendet werden. Revizarcod6.jpg Mit diesen Schritten sind wir soweit, zum nächsten Schritt zu gehen.

Die Aktivierung des Plugin

Wenn nun alles an seinem Platz ist und keine roten Fehler in unserer Umgebung angezeigt werden, werden wir das Eclipse-Plugin von hier starten. (In einem zukünftigen Tutorial werden wir den Einsatz von Plugins im Detail beschreiben).

Zuerst müssen Sie das Skript ImportIDempiere (1) so ausführen, dass die Datenbank neu bleibt
Activarplugin.jpg.
Zweitens in Eclipse Run> Run Configurations wählen(2)
Activarplugin1.jpg
Drittens wählen Swingclient.product (3) auswählen
Viertens wählen Sie die Option auf der linken Seite unserer neues Plugin und konfigurieren Sie die Standard-Boot (4)
Activarplugin2.jpg.
Verwenden Sie sich nicht die Logging-Option im JAVA-Client, da diese den Verpackungsprozess stattfindendenden blockiert.

Stattdessen gehen Sie auf die Registerkarte Konsole und geben Sie den Buchstaben "ss" (1) (Short Status) ein, so visualisieren die Liste der Plugins bei Ihrem Staat
Activarplugin4.jpg
dann können Sie unser Plugin in der Liste erkennen und die ID identifizierung. In unserem Beispiel sehen wir, dass die Id = 2 ist, also aktivieren Sie die Konsole zum schreiben: "Start 2" (2). Sie sehen den Packprozess in Aktion und müssen sich eine Weile gedulden, bis das Wort OSGI in der letzten Zeile (3) erscheint
Activarplugin5.jpg
Jetzt gehen wir nicht zum Login-Fenster, um auf die Anwendung zuzugreifen, sondern müssen den Prozess "Acces Role Update" ausführen. Dann können wir uns wieder anmelden, um auf das Menü des neuen Moduls zugreifen. Eines der wichtigsten Merkmale dieses Ansatzes ist, dass Sie sich nicht um die Wartung oder die Anwendung Code-Änderungen kümmern brauchen, da Sie nur an der Konsole "schreiben Stop 2 'IDempiere Anschlag mit dem neuen Plugin und zum vorherigen Verhalten zurückkehren, ohne jemals den Server zu stoppen. Somit, hat uns unser ERP-Test, aus der geschlossenen Welt in eine dynamische und modulare Anwendung alle Vorteile der Implementierung der Architektur OSGI geführt.

Schlussfolgerungen

Obwohl das Plugin Beispiel in dieser Fassung sich einfach darstellt, ist es möglich, komplexere Plugin mit OSGi-Framework zu entwickeln. Die Unterstützungen durch das IDempiere Projekt sind immens.

So können durch Refactoring des Plugin noch mehr Plugins basierend auf kleineren, in der gleichen Weise wie mit den Legenden, Prozesse und Grafik-Komponenten durchgeführt wurde. Das gleiche kann mit verschiedenen funktionalen Prozesse getan werden, mit Anlagevermögen oder Abrechnung, Zahlungen und Sammlungen. Schließlich wird die Implementierung der OSGi-Plattform ermöglicht. In IDempiere trifft eine Vielzahl von Werkzeugen aus dem OSGI Universum ein. So sehen wir Tag für Tag, wie IDempiere schnell wächst.
IDempiere verfolgt eine schnelle Entwicklung, wie im folgenden Link zu sehen ist:
: New_Features_v0.01 http://wiki.idempiere.org/en/Category:New_Features_v0.01.</span> So wird IDempiere ERP ist nun Teil der schnellen und furious Welt der Opensource.

Dieser Leitfaden hat nur allgemein versucht, die Möglichkeiten, die Entwickler haben zu zeigen. Er reduzieren ihre Lernkurve, sich in die beste Software der Welt einzutauchen und zu veranschaulichen.

Wie Sie aufgrund der Tutorials, die ich in der Vergangenheit geschrieben haben, wissen, ist es eine Freude für mich, zu teilen, was ich gelernt habe, um anderen das Vermächtnis zu hinterlassen, dass ich nach dem Willen Gottes zu leben erfahren habe

Wenn Sie Anregungen oder Fragen haben, können Sie schreiben an red1@red1.org schreiben.
Danke, dass Sie sich die Zeit genommen haben, dies zu lesen. Es es ist meine Hoffnung, dass diese Zeilen Ihnen helfen, die Entscheidung zu diesem unglaublichen Projekt zu treffen Möge Frieden und Segen Gottes mit Ihnen sein.

Epilogue

Verwendung unserer Extension Points: Don, Low Heng Sin hat gezeigt, dass die Verwendung Eclipse-Register-Buddy nicht die beste Praxis ist und hat stattdessen darauf hingewiesen, dass es besser ist, Extension Points zu verwenden, um den Prozess zu definieren. So gehe ich ein wenig zurück auf die Linie, wie in (1) gezeigt. In Eclipse, um den Prozess fortzusetzen gehen Sie auf die Registerkarte Übersicht (2). Dort klicken Sie auf den Link Erweiterungen (3), dann auf die Registerkarte Erweiterungen (4). Wählen Sie die Schaltfläche Hinzufügen und das Fenster (5) der Wahl org.adempiere.process Extension Points (6). Kehren Sie zum vorherigen Fenster zurück und wir klicken nach rechts auf die neue Zeile und auf neue Verfahren (7)


Epilogo1.jpg Epilogo2.jpg Eine neue Klasse ist definiert (1), aber es besteht keine Notwendigkeit, Code zu schreiben. Es genügt, auf die Suchtaste (2 zu klicken ) und wählen Sie die vorhandene Klasse (3). Dann müssen Sie die ID (5) in den Klassenpfad aufnehmen. Schließlich kann man auch einen Namen eingeben (6).
Epilogo3.jpg
In dem folgenden Link wird ein Video gezeigt, wo diese Vorgehensweise in Aktion gezeigt wird. [Http :/ / youtu.be/HXTy9GvCgu8 http://youtu.be/HXTy9GvCgu8]

Baustelle