Anleitung zur Migration von Modulen: Unterschied zwischen den Versionen
| Zeile 46: | Zeile 46: | ||
Von hier aus können wir den Prozess der Herstellung eines benutzerdefinierten Moduls sehen. | Von hier aus können wir den Prozess der Herstellung eines benutzerdefinierten Moduls sehen. | ||
Die Links unten zeigen in Videos (in Englisch) den Prozesses, der unten beschrieben wird: <br> | Die Links unten zeigen in Videos (in Englisch) den Prozesses, der unten beschrieben wird: <br> | ||
| − | [[http://www.youtube.com/watch? feature = player_embedded&v=oZSnsfW2A2Y Pack-Out Module]] <br> | + | [[http://www.youtube.com/watch?feature=player_embedded&v=oZSnsfW2A2Y Pack-Out Module]] <br> |
[[http://www.youtube.com/watch?feature=player_embedded&v=JjUgGJiXDD0 Eclipse Plugin Development]] <br> | [[http://www.youtube.com/watch?feature=player_embedded&v=JjUgGJiXDD0 Eclipse Plugin Development]] <br> | ||
| − | [[http://www.youtube.com / watch?feature=player_embedded&v=TnqizjaCEm8 Pack-Plugin als Modul]] <br> | + | [[http://www.youtube.com/watch?feature=player_embedded&v=TnqizjaCEm8 Pack-Plugin als Modul]] <br> |
Auf die Elemente in Abbildung 4 werden wir später analysieren noch näher eingehen. | Auf die Elemente in Abbildung 4 werden wir später analysieren noch näher eingehen. | ||
Version vom 23. Dezember 2012, 11:08 Uhr
aus dem Englischen
Redhuan D. Oon - Ein Migrationsplan für Entwickler
Warum migrieren?
Es ist allgemein für alle diejenigen, die die Software-Industrie verknüpft sind bekannt, dass die Verwaltung von Updates, Bugfixes und Quellcode-Versionen Kopfschmerzen bereiten können.
Je mehr der Benutzer Änderungen an den Quellcode der Anwendung oder Konfiguration Modell vornimmt, umso größer wird die Wahrscheinlichkeit, dass Konflikte mit Updates oder Korrekturen, die vom Herausgeber oder der Software, die mit der Unterstützung der Gemeinschaft entwickelt wird, entstehen.
Ein ERP kann leicht zu einem vielköpfigen Ungeheuer aufgrund der zunehmenden Komplexität und Größe werden, deshalb ist es eine gute Idee, einen gemeinsamen Kern-Anwendung für die meisten Nutzer und diejenigen, die Änderungen oder Ergänzungen brauchen, anzulegen. In iDempiere können Sie dazu die Entwicklung von neuen Modulen oder wie im Fall von gekapselten Module IDempiere des Plugins verwenden.
Die Herausforderung ist dann, konsequent zu migrieren und die Vermeidung bestimmter bestehende Funktionalität ("break").
Abbildung 2 zeigt die Arbeit von Benutzern, die derzeit mit einem System (wie ADempiere 3,6) und in der Zukunft System B (wie Idempiere), wie die wichtigsten Verbesserungen der Infrastruktur und erhöhte Funktionalität durchgeführt werden, die Arbeit zu vereinfachen, das System B zu migrieren, alle Änderungen und Anpassungen, die Benutzer im System A vorgenommen haben, zu migrieren.
Was migrieren
Die nächsten Fragen, die entstehen, sind:
- Was migrieren? -
- Wie migrieren
- Wie ist der Code?
In Compiere basierte Anwendungen wie es IDempiere und ADempiere sind, 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 und andere Merkmale Prozesse beinhalten, die zwar "eingebrannt" (fest codiert) im Quellcode 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 und 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 dann die Java nach der Struktur des Eclipse Plugin formatieren.
Später werden wir genauer jeden dieser Schritte sehen.
In Abbildung 3 können wir deutlich den Prozess der Migration der 'AD' erkennen, durch-Boxen und den roten Pfeil markiert.
Andere Bereiche, die wir später im Detail untersuchen, zeigen den Prozess der Code Migration, jetzt nur markiert mit roter "Eclipse".
In Abbildung 3 präsentieren wir neue Begriffe.
Auf der einen Seite können wir im System, siehe , den linken vorderen Java-Code im alten Stil in der verarbeiteten Java Virtual Machine (JVM) erkennen, die eine Art geschlossener Behälter arbeitet, so dass nicht jede Form des Zugangs möglich ist.
Auf der anderen Seite sehen wir auf der rechten Seite, System B, einen OSGi-Container, der mit "Connect" eine neue Funktionalität bereitstellt, um Eclipse-Plugins zu erlauben und ihnen auch den Zugriff auf und Kontrolle über Befehle 'SS' zu ermöglichen.
In dem neuen System können wir auch eine Beziehung zwischen Plugins durch eine Manifest-Datei bestimmt.
Diese befindet sich in der META-MANIFEST INF.En. Die Datei hat auch ihre eigenen "Activator", die automatisch jede Datei in dem Ordner 2pack.zip beschreibt und im "Pack In" führt, um die Datenbank-Anwendung zu beschreiben.
Von hier aus können wir den Prozess der Herstellung eines benutzerdefinierten Moduls sehen.
Die Links unten zeigen in Videos (in Englisch) den Prozesses, der unten beschrieben wird:
[Pack-Out Module]
[Eclipse Plugin Development]
[Pack-Plugin als Modul]
Auf die Elemente in Abbildung 4 werden wir später analysieren noch näher eingehen.
Das Plugin-Modul.
2 Plugin-Aktivator bezeichnet in der Manifest-Datei. '
' 3.
4. Die Manifest-Datei.'
.
Der Kommando "burned" ruft 2Pack.zip Datei im Ordner META-INF auf.
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.
Eine Möglichkeit, ein Modul dieses Namens' 'POS Integration " zu erstellen, ist, die 3 drei Unterpunkte, die zwei Prozesse enthalten genannt Export 'Cola und Import Bestellungen Anhang 'inklusive eines Fensters namens
Importierte Abwicklung von Bestellungen.
'Die oben aufgeführten Artikel sind nicht Teil der Standard-Version von ADempiere oder IDempiere, obwohl es verschiedene Möglichkeiten gibt, in denen diese Veränderungen IDempiere eingearbeitet werden können.
Einer dieser Wege eröffnet sich durch das Protokoll der Migration, die gespeichert werden, wenn die Anpassung durchgeführt wurde.
Ein anderer Weg ist das 2K-Tool, das zur Verfügung seit einigen Jahren in ADempiere bereit steht.
In jedem Fall ist es notwendig, zu beachten, dass Low Heng Ohne erhebliche Verbesserungen vorgenommen hat.
IDempiere 2K verhält sich somit nicht unbedingt gleich mit der alten Version.
Die Version aus IDempiere ist also erforderlich, um das Paket aus IDempiere zu verwenden.
Wir sehen mit IDempiere Script aus v1.0 , dass wir den folgenden Link benutzen können https://sourceforge.net/ p/red1/small/101/tree/trunk/POSIntegration/migration /
Der obige Link ist eine Liste von SQL-Skripts wie in der Abbildung oben dargestellt.
Es folgt der Quellcode des Moduls, und wir können die Migration des Scriptes sehen und wie die Datei 2pack.zip OpenBravoPOS Software verwendet wird. Es ist jedoch wichtig zu beachten, dass wir uns in diesem Papier nur auf dem Code der Customization Migration konzentrieren.
Mit dem folgenden Link können Sie sich die Vollversion des Produkts zu 20Packages/IntegratedPOSplugin.zip/download http://sourceforge.net/projects/red1/files/Software verwenden % 20Packages/IntegratedPOSplugin.zip/download herunterladen.
Installation von IDempiere
Wenn Sie Windows-Umgebung IDempiere einfach auf einem Desktop-oder Notebook installieren wollen, bei denen JAVA oder Postgres bereits installiert sind, mit dem / red1/files/Software% 20Packages/iDempiere1.0.a_Setup.exe/download Installer möglich. Wenn Sie die fehlenden Komponentem brauchen, 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, sind Sie bereit, um die Migration der Script vorzunehmen und 2pack.zip Datei für das neue Plugin zu entpacken. Weiter Unterstützung für die Migration der Scripte gibt unsere Online-Hilfe. Diese ist analog zum Prozess der Erstellung eines Paketes.
Um diesen Prozess mit eigenen Anpassungen durchzuführen ist es wichtig, sicherzustellen, dass sie eine Menü Gruppe zur Integration mit Openbravo POS haben.
Making "Out"
Melden Sie sich als Benutzer an und wählen Sie die im Menü System erwähnte Pack Out, wie in der folgenden Abbildung mit der Nummer (1). Zum Öffnen der Fenster geben Sie die Informationen ein, wie in der folgenden Abbildung angegeben (2).
In der zweiten Tabelle wählen Sie die ausgewählte Anwendung oder ein Modul, so dass die Auswahl-Menü in (3) angegeben wird. Dann wählen Sie das Menü-Modul zur Migration. Nach erfolgter Rückkehr zum übergeordneten Menü wählen Sie die Schaltfläche Export, wie in Package dargestellt (4).
Der Prozess nimmt einige Zeit in Abhängigkeit von der Komplexität des Moduls in Anspruch. Am Ende des Prozesses sehen Sie am unteren Fensterrand, wo der Pfad 2pack.zip Datei erstellt wurde, wie in (5) gezeigt. Wir werden die Datei für die Verpackung jedoch zusammen mit dem Plugin erstellen. Zuerst werfen wir einen Blick auf den Quellcode des Moduls, wie er auch innerhalb des Plugins enthalten ist.
Ü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
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.
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.
==== Ü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.
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.
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
.
Zweitens in Eclipse Run> Run Configurations wählen(2)
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)
.
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
Datei:. 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
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.
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)
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).
In dem folgenden Link wird ein Video gezeigt, wo diese Vorgehensweise in Aktion gezeigt wird.
[Http :/ / youtu.be/HXTy9GvCgu8 http://youtu.be/HXTy9GvCgu8]

