|
|
| Zeile 25: |
Zeile 25: |
| | [[File: MigracionSubrayada.png | 400px | Immigration Abb. 2]] | | [[File: MigracionSubrayada.png | 400px | Immigration Abb. 2]] |
| | 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. | | 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". |
| | + | [[File: usar2pack.png | 400px | Mit 2K Abb. 3]] |
| | + | 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: <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 = TnqizjaCEm8 Pack-Plugin In Modul als] <br> |
| | + | 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.'' '<br>' ''3. <br> '''4.</span> Die Manifest-Datei.'''' 4'' <br>. |
| | + | Der Code "verbrannt" 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'' [[File: modulo2migrar.png | Migrate-Modul Abbildung 5]] 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/ https://sourceforge.net/ p/red1/small/101/tree/trunk/POSIntegration/migration /] [[File: ScriptsSQL.jpg | 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, 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 [http://sourceforge.net/projects/red1/files/Software% 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 [http://sourceforge.net/projects / 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 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. |
| | + | |
| | + | [[File: 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. <br> |
| | + | 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. <br> |
| | + | 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 [[File: revizarcod1.jpg]] [[Datei: 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. |
| | + | [[File: 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. |
| | + | [[File: 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. |
| | + | [[File: 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. |
| | + | [[File: 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 <br> |
| | + | [[File: activarplugin.jpg]]. <br> |
| | + | Zweitens in Eclipse Run> Run Configurations wählen(2) <br> |
| | + | [[File: activarplugin1.jpg]] <br> |
| | + | Drittens wählen Swingclient.product (3) auswählen<br> |
| | + | Viertens wählen Sie die Option auf der linken Seite unserer neues Plugin und konfigurieren Sie die Standard-Boot (4) <br> |
| | + | [[File: activarplugin2.jpg]]. <br> 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 <br> |
| | + | [[File:. Activarplugin4. jpg]] <br> 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 <br> |
| | + | [[File: activarplugin5.jpg]] <br> |
| | + | 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. <br> |
| | + | IDempiere verfolgt eine schnelle Entwicklung, wie im folgenden Link zu sehen ist: <br> [http://wiki.idempiere.org/en/Category : New_Features_v0.01 http://wiki.idempiere.org/en/Category:New_Features_v0.01].</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"> |
| | + | 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. |
| | + | <br> |
| | + | 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) <br > |
| | + | <br> |
| | + | [[File: epilogo1.jpg]] [[Datei: 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). |
| | + | <br> [[File: epilogo3.jpg]] <br> |
| | + | In dem folgenden Link wird ein Video gezeigt, wo diese Vorgehensweise in Aktion gezeigt wird. |
| | + | [Http :/ / youtu.be/HXTy9GvCgu8 http://youtu.be/HXTy9GvCgu8] |
| | | | |
| | == Baustelle == | | == Baustelle == |
| − |
| |
| − | </span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">AD es la sigla de Diccionario de Aplicación, que representa los metadatos mencionados antes.</span> AD steht für Application Dictionary, welches die Metadaten erwähnt darstellt.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Lo que la figura anterior ilustra es entoces que para migrar a IDempiere los metadatos son enviados a traves de 2Pack y el codigo fuente es enviado como un nuevo plugin desarrollado con la herramienta para el desarrollo de plugins (PDE) de Eclipse.</span> Was ist die obige Abbildung zeigt, dass die entoces IDempiere Metadaten migriert werden über 2K und der Quellcode wird als neues Plugin entwickelt Tool für die Entwicklung von Plugins (PDE) in Eclipse gesendet wird.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">== ¿Como realizar la Migración?</span> == Wie zu migrieren?</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">== El siguiente paso es completar la migración de los metadatos y del codigo de manera exitosa.</span> == Der nächste Schritt ist, die Migration von Metadaten und dem Code erfolgreich abzuschließen.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Tal como lo mencionamos anteriormente, la primera parte la realizamos utilizando 2Pack, que exporta en un archivo ZIP (2pack.zip), que contiene toda la descripción de los cambios realizados al '''AD''' en formato XML.</span> Wie bereits erwähnt, führte die erste Teil mit 2K, in einer ZIP-Datei (2pack.zip) enthält ausführliche Beschreibung der Änderungen an'' exportiert "AD'' 'XML-Format.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">La segunda parte consiste entonces en formatear los paquetes JAVA de acuerdo a la estructura de Plugin de Eclipse.</span> Der zweite Teil ist dann die Java nach der Struktur des Eclipse Plugin formatieren.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Mas adelante veremos con mas detalle cada uno de estos pasos, por ahora examinando la Figura 3 podemos ver de manera clara el proceso de migración del '''AD''' a traves de las cajas señaladas por la flecha roja.</span> Später werden wir genauer sehen jeden dieser Schritte, denn nun prüfen Abbildung 3 können wir deutlich sehen, den Prozess der Migration der'' 'AD''' durch-Boxen durch den roten Pfeil markiert.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">En otras figuras que presentaremos mas adelante examinaremos en detalle el proceso de migración de codigo, por ahora los representamos solo con la caja de contonrno rojo que dice "Eclipse".</span> In anderen Figuren, die später präsentieren im Detail zu untersuchen, den Prozess der Migration Code, jetzt sind nur contonrno mit rotem "Eclipse".</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">[[Archivo:usar2pack.png|400px|Fig 3 Usando 2Pack]] En la figura 3 presentamos tambien nuevos terminos, por un lado podemos ver en el Sistema A de la Izquierda que el codigo anterior Java esta envuelto en el antiguo estilo en la Maquina Virtual Java (JVM) que es una especia de contenedor cerrado que no permite ninguna forma de acceso al mismo.</span> [[File: usar2pack.png | 400px | Mit 2K Abb. 3]] In Abbildung 3 präsentieren wir auch neue Begriffe, auf der einen Seite können wir im System siehe A der linken vorderen Java-Code im alten Stil in das verpackte Java Virtual Machine (JVM), die eine Art geschlossener Behälter, die nicht zulässt, dass jede Form des Zugangs ist.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Por otro lado vemos en el lado derecho el Sistema B tiene un Contenedor OSGI que permite "Conectar" nueva funcionalidad al mismo a traves de Plugins Eclipse y ademas permite acceder y monitorear los mismos a traves de Comandos 'SS'.</span> Auf der anderen Seite sehen wir auf der rechten Seite System B verfügt über eine OSGi-Container, der "Connect" neue Funktionalität, um es durch Eclipse-Plugins erlaubt und ermöglicht ihnen auch den Zugriff auf und Kontrolle über Befehle 'SS'.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">En el nuevo sistema tambien podemos ver una relacion entre Plugins determinada por el archivo MANIFEST, que se encuentra en la carpeta META-INF.En ese archivo MANIFEST tambien esta descrito su propio "Activador" que detecta automaticamente cualquier archivo 2pack.zip en la carpeta y ejecuta el "Pack In" a la base de datos de la aplicación.</span> In dem neuen System können wir auch eine Beziehung zwischen Plugins durch eine Manifest-Datei bestimmt, befindet sich in der META-MANIFEST INF.En, dass die Datei auch ihre eigenen "Activator", die automatisch jede Datei in dem Ordner 2pack.zip beschrieben und führt die "Pack In", um die Datenbank-Anwendung.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">De aqui en adelante veremos como realizar el proceso de un modulo personalizado, ademas en los siguientes enlaces podremos ver los videos (en Ingles) del proceso que detallaremos a continuación:<br> [http://www.youtube.com/watch?feature=player_embedded&v=oZSnsfW2A2Y Pack Out del Modulo]<br> [http://www.youtube.com/watch?feature=player_embedded&v=JjUgGJiXDD0 Desarrollo del Plugin en Eclipse]<br> [http://www.youtube.com/watch?feature=player_embedded&v=TnqizjaCEm8 Pack In del Modulo como Plugin]<br> Ademas presentamos la figura 4 en la cual introducimos los elementos sobre los cuales seguiremos analizando mas adelante.</span> Von hier aus werden wir sehen, wie der Prozess der Herstellung ein benutzerdefiniertes Modul, plus die Links unten können wir die Videos (in Englisch) des Prozesses, der unten beschrieben werden sehen: <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 = TnqizjaCEm8 Pack-Plugin In Modul als] <br> auch in Abbildung 4 die Elemente, auf die wir später analysieren einführen vorgestellt.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">[[Archivo:EclipseEnv.png|Fig 4 Ambiente de desarrollo Eclipse PDE]] '''1.</span> [[File: EclipseEnv.png | Bild 4 Entwicklungsumgebung Eclipse PDE]]'' '1.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">El módulo del Plugin.'''<br> '''2.</span> Das Plugin-Modul.'''' ''2 <br>.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">El activador del Plugin llamado en el archivo MANIFEST.'''<br> '''3.</span> Plugin-Aktivator bezeichnet in der Manifest-Datei.'' '<br>'' '3.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">El archivo MANIFEST.'''<br> '''4.</span> Die Manifest-Datei.'''' 4'' <br>.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">El codigo "quemado" que llama el archivo 2Pack.zip en la carpeta META-INF.''' ==Migración de un Módulo == A continuación analizaremos un ejemplo de un modulo real de ADempiere el cual migraremos a IDempiere como plugin.</span> Der Code "verbrannt" ruft 2Pack.zip Datei im Ordner META-INF.'' '== Migrieren eines Moduls == Wir werden ein Beispiel eines echten Moduls die ADempiere IDempiere als Plugin migrieren zu diskutieren.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Para nuestro ejemplo usaremos el modulo de integración de OpenBravo POS y ADempiere ERP que fue un trabajo que desarrollamos y publicamos el año pasado.</span> Für unser Beispiel verwenden wir das Integrationsmodul von Openbravo POS und ERP ADempiere ein Job, der entwickelt wurde und im letzten Jahr veröffentlicht.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Para ese módulo creamos un Menú llamado '''Integración POS''', el cual contiene 3 tres sub items que son 2 procesos '''llamados Exportar''' Cola e '''Importar Cola de Ordenes''' y una ventana llamada '''Procesar Ordenes Importadas.''' [[Archivo:modulo2migrar.png|Figura 5 Modulo a Migrar]] Los Items anteriores no hacen parte de la version estandar de ADempiere o IDempiere, aunque existen diferentes formas en las cuales esos cambios se pueden incorporar a IDempiere.</span> Um ein Menü, dass Modul namens erstellen'''' 'POS Integration ", die 3 drei Unterpunkte, die zwei Prozesse enthält''' genannt Export'' 'Cola und''' Import Bestellungen Schwanz'' 'und ein Fenster namens'' [[File: modulo2migrar.png | Migrate-Modul Abbildung 5]] 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.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Una de esas formas es a traves del Log de Migración que se guardo cuando la customización se realizó.</span> Einer dieser Wege ist durch das Protokoll der Migration, die gespeichert werden, wenn die Anpassung durchgeführt wurde.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Otra forma de hacerlo es usando la herramienta 2Pack que ha estado disponible por algunos años en ADempiere.</span> Ein anderer Weg ist 2K-Tool, das zur Verfügung gestanden hat seit einigen Jahren in ADempiere.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">De todas formas es necesario tener en cuenta que Low Heng Sin realizó considerables mejoras al 2Pack de IDempiere asi que no es necesariamente igual a su antigua versión por lo que para usar el Pack In de IDempiere es necesario usar el Pack Out de IDempiere.</span> In jedem Fall ist es notwendig, zu beachten, dass Low Heng Ohne erhebliche Verbesserungen vorgenommen, um IDempiere 2K so ist nicht unbedingt gleich auf die alte Version so den Pack In der IDempiere verwenden ist notwendig, um das Pack verwenden Aus IDempiere.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Como estamos utilizando IDempiere v1.0 usaremos los scripts que se encuetran en el siguiente link [https://sourceforge.net/p/red1/small/101/tree/trunk/POSIntegration/migration/ https://sourceforge.net/p/red1/small/101/tree/trunk/POSIntegration/migration/] [[Archivo:ScriptsSQL.jpg|Figura 6 Scripts SQL]] En el enlace anterior encontrará un listado de scripts SQL como lo ilustra la figura anterior.</span> Da wir mit v1.0 IDempiere Script, dass wir den folgenden Link benutzen encuetran [https://sourceforge.net/p/red1/small/101/tree/trunk/POSIntegration/migration/ https://sourceforge.net/ p/red1/small/101/tree/trunk/POSIntegration/migration /] [[File: ScriptsSQL.jpg | SQL Scripts Abbildung 6]] Der obige Link ist eine Liste von SQL-Skripts wie in der Abbildung oben dargestellt.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Lo siguiente es el codigo fuente del modulo, se puede obtener los Scripts de migración, el archivo 2pack.zip y el software de OpenBravoPOS que se utilizará, aunque es importante anotar que en el presente documento nos centraremos solo en el codigo de customización que estamos migrando.</span> Das folgende ist der Quellcode des Moduls, können Sie die Migration der Script und Datei 2pack.zip OpenBravoPOS Software verwendet werden, obwohl es wichtig ist zu beachten, dass in diesem Papier werden wir nur auf dem Code konzentrieren wir Customization Migration.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">En el siguiente enlace podrá descargar el producto completo para usar [http://sourceforge.net/projects/red1/files/Software%20Packages/IntegratedPOSplugin.zip/download http://sourceforge.net/projects/red1/files/Software%20Packages/IntegratedPOSplugin.zip/download] == Lanzando IDempiere == Si esta usando ambiente Windows puede instalar IDempiere de forma sencilla en un computador o notebook que no tenga instalado JAVA ni POSTGRES utilizando el [http://sourceforge.net/projects/red1/files/Software%20Packages/iDempiere1.0.a_Setup.exe/download Instalador], si lo necesita puede ver la guia escrita de como utilizar el instalador en conjunto con el asistente de actualización.</span> In den folgenden Link können Sie sich die Vollversion des Produkts zu [http://sourceforge.net/projects/red1/files/Software% 20Packages/IntegratedPOSplugin.zip/download http://sourceforge.net/projects/red1/files/Software verwenden % 20Packages/IntegratedPOSplugin.zip/download] == Werfen IDempiere == Wenn Sie Windows-Umgebung IDempiere einfach auf einem Desktop-oder Notebook, das nicht installiert werden JAVA oder Postgres mit der [http://sourceforge.net/projects / red1/files/Software% 20Packages/iDempiere1.0.a_Setup.exe/download Installer], wenn Sie es brauchen ist die schriftliche Anleitung, wie man den Installer in Verbindung mit dem Update-Assistenten verwenden.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Si esta usando un ambiente diferente a Windows puede ver las instruciones de como desplegar IDempiere en [http://wiki.idempiere.org http://wiki.idempiere.org].</span> Wenn Sie eine andere Umgebung auf Windows können Sie die Anleitung zur IDempiere [http://wiki.idempiere.org http://wiki.idempiere.org] einzusetzen.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Una vez que IDempiere este corriendo, estará listo para aplicar los scripts de migracion y hacer el Pack Out para obtener el archivo 2pack.zip del nuevo plugin.</span> Sobald IDempiere läuft, sind Sie bereit, um die Migration der Script vorgenommen und die Pack Out 2pack.zip Datei für die neue Plugin.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Si necesita ayuda adicional con los scripts de migración puede ir nuestra ayuda en linea.</span> Für zusätzliche Unterstützung für die Migration der Script gehen können unsere Online-Hilfe.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Veamos ahora como realizar el proceso de Pack Out.</span> Dies ist, wie der Prozess von Pack machen.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Para realizar este proceso con sus propias customizaciones es importante asegurarse de que tengan un grupo de menú como es el caso de esta integracion con OpenBravo POS.</span> Um diesen Prozess mit eigenen Anpassungen durchzuführen ist wichtig, um sicherzustellen, dass sie ein Menü Gruppe wie diese Integration mit Openbravo POS haben.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">== Haciendo Pack Out == Es necesario loguearse con el usuario System e ir al menú Pack Out subrayado en la siguiente imagen con el número (1).</span> Making Out ==== Pack muss sich mit dem Benutzer und wählen Sie im Menü System Pack Out betonte in der folgenden Abbildung mit der Nummer (1).</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Al abrir la ventana ingrese la información como se detalla en la siguiente imagen en el número (2).</span> Das Öffnen der Fenster geben Sie die Informationen, wie in der folgenden Abbildung an (2).</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">En la segunda tabla selecciona Aplicación o Módulo de manera que el menú de selección señalado en (3) aparezca, luego selecciona el menú del modulo a migrar y una vez hecho esto regresa a la pestaña padre y selecciona el boton Exportar Paquete como se ilustra en (4).</span> In der zweiten Tabelle ausgewählte Anwendung oder ein Modul, so dass die Auswahl-Menü in (3) wird angegeben, dann wählen Sie das Menü-Modul zu migrieren und einmal getan Rückkehr zum übergeordneten Menü und wählen Sie die Schaltfläche Export in Package dargestellt (4).</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">El proceso tardará unos momentos dependiendo de la complejidad del módulo.</span> Der Prozess wird noch einige Zeit in Abhängigkeit von der Komplexität des Moduls nehmen.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Al terminar el proceso en la parte inferior de la ventana aparecerá el Path en el que el archivo 2pack.zip fue creado, tal y como se puede apreciar en (5), mas adelante usaremos el archivo creado para empaquetarlo junto con el plugin, por ahora le echaremos un vistazo al codigo fuente del módulo que tambien incluiremos dentro del plugin.</span> Am Ende des Prozesses auf der Unterseite des Fensters ist, wo der Pfad 2pack.zip Datei erstellt wurde, wie in (5) gezeigt, aber wir werden die Datei für die Verpackung zusammen mit dem Plugin erstellten verwenden, Jetzt nehmen wir einen Blick auf den Quellcode des Moduls wird auch innerhalb des Plugins enthalten.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">[[Archivo:packout.jpg]] == Revisando el Codigo Fuente == El codigo fuente debe estar en paquetes de manera similar a como se presenta el ejemplo, aunque la integración de ADempiere con OpenBravo POS no es muy extensa en terminos de nro de clases o lineas de codigo, el presente ejemplo es perfecto para propositos ilustrativos ya que utiliza varios componenetes del Nucleo del ERP.</span> [[File: packout.jpg]] ==== Überprüfung der Quellcode Der Quellcode-Pakete müssen in einer Weise ähnlich dem Beispiel präsentiert werden, obwohl die Integration ADempiere mit Openbravo POS ist nicht im Sinne von nro großen Klassen oder Zeilen Code, das ist ein perfektes Beispiel zur Veranschaulichung, weil es mehrere Kern-ERP-Komponenten verwendet.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Un ejemplo claro se visualiza al ver el parquete org.adempiere.process que incluyen varias clases que determinan el compartamiento del proceso ImportOrder.java, que a su vez extiende la clase original del mismo paquete de ADempiere.<br> Para hacer algo como lo anterior en ADempiere sobre escribiamos el archivo customization.jar, pero como IDempiere utiliza la arquitectura OSGI, esto ya no es necesario.</span> Ein deutliches Beispiel ist angezeigt, um den parquete org.adempiere.process darunter mehrere Klassen, die die Fächer ImportOrder.java Prozess, was wiederum erweitert die ursprüngliche Klasse im selben Paket ADempiere. <br> Um etwas tun zu bestimmen anzeigen ADempiere früheren customization.jar auf das Schreiben der Datei, sondern als OSGI IDempiere Architektur verwendet, ist dies nicht mehr notwendig.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Lo unico que debemos hacer ahora es incluir el nuevo codigo en un plugin declarando el mismo paquete (org.adempiere.process) y activarlo durante el tiempo de ejecución, lo que hará que se ejecute nuestra customización en lugar del codigo base de ADempiere.<br> Este es basicamente el poder de la arquitectura OSGI, que a traves de la modularización, permite que no sea necesario recompilar o reemplazar el archivo customization.jar cada vez que se realice un cambio, si no que solo con agregar nuestro plugin a un contenedor de otros plugins, lo que facilita enormemente el mantenimiento de la aplicación, el debug y el seguimiento de errores en caso de que se presenten, pues bastará solo con desactivar el plugin para a traves de la consola OSGI,incluso en ejecución.</span> Alles, was wir jetzt tun müssen, ist, den neuen Code in einem Plugin erklärte das gleiche Paket (org.adempiere.process) gehören und aktivieren Sie es während der Laufzeit, die unsere Code-Anpassung laufen anstatt ADempiere Basis. < br> Das ist im Grunde die Macht der Architektur OSGI, die durch Modularisierung, lässt nicht notwendig sein, neu zu kompilieren oder ersetzen Sie die Datei customization.jar, wenn Sie eine Änderung vornehmen, wenn auch nur um unser Plugin hinzufügen Container für andere Plugins, die erleichtert die Wartung der Anwendung, die Debug-und Tracking-Fehler, wenn sie auftreten, ist es ausreichend, lediglich das Plugin OSGI-Konsole sogar laufen zu deaktivieren.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">== Preparando ambiente con Eclipse == En nuestra wiki puede obtener mas información de como configurar el ambiente de desarrollo Eclipse junto con la funcionalidad de ''Buckminster'' y ''Mercurial''.</span> Vorbereiten Umfeld == Eclipse-== Unser Wiki können weitere Informationen, wie Sie die Eclipse-Entwicklungsumgebung mit Funktionalität konfigurieren Sie Buckminster'''' und'''' Mercurial.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Mercurial es necesario para acceder a nuestro repositorio online de IDempiere alojado en Bitbucket.</span> Mercurial ist erforderlich, um unsere Online-Repository Bitbucket IDempiere gehostet werden.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Una vez hecho estamos listos para nuestro primer Plugin.</span> Ist das erledigt sind wir bereit für unser erstes Plugin.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">== Creando un nuevo Proyecto Plugin == Selecciona Nuevo>Otro(1)> Plugin Project(3) e ingresa el nombre del modulo a migrar.</span> Erstellen eines neuen Projekts == Plugin == Wählen Sie Neu> Andere (1)> Plugin-Projekt (3) und geben Sie den Namen des Moduls zu migrieren.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Deselecciona la opcion > Generar Activator (4).</span> Deaktivieren Sie die Option> Generate Activator (4).</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Pues usaremos el Activator que ADempiereActivator [[Archivo:revizarcod1.jpg]] [[Archivo:revizarcod2.jpg]] En la carpeta META-INF se encuentra el archivo MANIFEST.MF (1) en la tabla Overview.</span> Dann benutzen wir den Activator ADempiereActivator [[File: revizarcod1.jpg]] [[Datei: revizarcod2.jpg]] In der META-INF MANIFEST.MF Datei befindet (1) in der Tabelle im Überblick.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Selecciona la opción Activator y en el botón de busca selecciona la clase AdempiereActivator, no sera posible seleccionarlo hasta que defina las dependencias del plugin, para hacerlo es necesario ir a la pestaña de dependencias (2) y agrega el plugin org.adempiere.plugins que contiene el Activador(3), ademas agregue el plugin org.adempiere.base que es el nucleo para los paquetes org.adempiere.process y org.compiere.process que se sobre escriben en el nuevo plugin.</span> Wählen Sie den Activator und wählen Sie die Suchtaste AdempiereActivator Klasse, können Sie nicht, bis Sie die Abhängigkeiten des Plugins definieren, ist es notwendig, auf der Registerkarte Abhängigkeiten (2) und fügen Sie das Plugin org.adempiere.plugins, dass Activator enthält (3), die auch das Plugin hinzufügen org.adempiere.base die den Kern für die Pakete, die org.compiere.process org.adempiere.process und über das neue Plugin geschrieben ist.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Nota que dentro de los paquetes importados he seleccionado la libreria para que mi Active MQ funcione (4).</span> Beachten Sie, dass innerhalb der importierte Pakete ich die Bibliothek ausgewählt für meine Active MQ-Funktion (4).</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">[[Archivo:revizarcod3.jpg]] Luego vuelve a la pestaña Overview (1) selecciona el boton buscar(2) y ahora si será posible seleccionar el Activador (3).</span> [[File: revizarcod3.jpg]] Dann gehen Sie zurück zu der Registerkarte Übersicht (1) Wählen Sie die Schaltfläche Suchen (2) und jetzt, wenn Sie den Activator (3) auswählen können.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">[[Archivo:revizarcod4.jpg]] == Revisando el Plugin == Ahora echemosle un vistazo al codigo fuente de nuestra customizacion y aseguremonos que las clases esten dentro de paquetes de manera apropiada(1), ademas las dependencias deben estar resueltas(2).</span> [[File: revizarcod4.jpg]] ==== Überprüfung Plugin Lassen Sie uns nun auf den Quellcode schauen und sicherstellen, dass unsere Customization Klassen innerhalb Pakete richtig (1) sind, müssen neben der Abhängigkeiten aufgelöst (2 werden ).</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Es importante notar que en la arquitectura OSGI las librerias importadas son resueltas por (a) Plataforma Destino o (B)Otros Plugins declarados en el archivo MANIFEST (3), o tambien pueden ser Jars declarados en el MANIFEST.</span> Beachten Sie, dass in den Bibliotheken importiert OSGI Architektur werden durch (a) Zielplattform aufgelöst oder (B) Andere Plugins erklärte in der Manifest-Datei (3), oder in MANIFEST Jars deklariert werden.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">A continuación se ilustra como se ve un plugin al estar terminado.</span> Nachfolgend wird als Plugin abgeschlossen werden gezeigt.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">[[Archivo:revizarcod5.jpg]] Sin embargo eso no es todo, antes de que el nuevo plugin funcione es necesario con el nucleo de ADempiere a traves del plugin org.adempiere.base, pues el classpath incluido en OSGI funciona de manera diferente en el que el plugin del nucleo es una serie de paquetes de clases como por ejemplo org.adempeire.process, para hacer esto debes colocar la linea Eclipse-RegisterBuddy(1) en algun lugar en el archivo MANIFEST.</span> [[File: revizarcod5.jpg]] Aber das ist noch nicht alles, bevor das neue Plug-In mit dem Kern durch das Plugin ADempiere org.adempiere.base daher enthalten im Klassenpfad arbeiten müssen anders funktioniert OSGI wobei der Kern plugin eine Reihe von Paketen wie org.adempeire.process Klassen ist, dies zu tun, müssen Sie das Line-RegisterBuddy Eclipse-(1) irgendwo in der Manifest-Datei setzen.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Tambien es posible exportar paquetes en la pestaña de ejecución (2) de manera que sea vivible para otros plugins que lo utilicen, ademas en la pestaña (3) puedes declarar jars internos que se quieran utilizar.</span> Sie können auch den Export Pakete Registerkarte Run (2), so dass es bewohnbar für andere Plugins, die es verwenden, plus die Registerkarte (3) können interne Gläser, dass verwendet werden sollen erklären.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">[[Archivo:revizarcod6.jpg]] Con estos pasos realizados estamos listos para avanzar.</span> [[File: revizarcod6.jpg]] Mit diesen Schritten sind wir bereit, vorwärts zu bewegen.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">== Activando el Plugin == Con todo en su lugar y sin errores rojos en nuestro ambiente eclipse vamos a ejecutar el plugin desde aqui.(En un futuro tutorial cubriremos en detalle el despliegue de plugins).</span> Die Aktivierung des Plugin ==== Mit alles an seinem Platz und keine roten Fehler in unserer Umwelt werden wir das Eclipse-Plugin von hier laufen. (In einem zukünftigen Tutorial werden wir im Detail beschreiben den Einsatz von Plugins).</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Primero, es necesario correr el script ImportIDempiere (1) de forma que la base de datos quede como nueva.<br><br> [[Archivo:activarplugin.jpg]]<br><br> Segundo, en Eclipse dar clic en Run>Run Configurations (2)<br><br> [[Archivo:activarplugin1.jpg]]<br><br> Tercero, Seleccionamos Swingclient.product (3)<br> Cuarto, Seleccionamos la opción de la izquierda de nuestro nuevo plugin y configuramos el arranque por defecto.(4)<br><br> [[Archivo:activarplugin2.jpg]]<br><br> Cuando aparezca la opción de logueo del cliente JAVA, no se loguee, pues esto obstruira el proceso de empaquetado que se esta llevando a cabo.</span> Zuerst müssen Sie das Skript ImportIDempiere (1) so ausgeführt werden, dass die Datenbank als neue bleibt <br> [[File: activarplugin.jpg]]. <br> Zweitens auf Eclipse auf Run> Run Configurations (2) <br> [[File: activarplugin1.jpg]] <br> Drittens wählen Swingclient.product (3) <br> Vierte, wählen Sie die Option auf der linken Seite unserer neues Plugin und konfigurieren Sie die Standard-Boot (4) <br> [[File: activarplugin2.jpg]]. <br> Wenn die Logging-Option JAVA-Client, nie angemeldet, da dies zu blockieren der Verpackungsprozess stattfindenden.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">En lugar de eso vaya a la pestaña de consola y escriba la sigla 'ss' (1) (Short Status), de esa forma visualizaremos el listado de plugins con su respectivo estado.<br><br> [[Archivo:activarplugin4.jpg]]<br><br> A continuación identificamos nuestro plugin en la lista e identificamos su Id, en nuestro ejemplo vemos que es el Id = 2, asi que para activarlo escribimos en la consola: 'start 2' (2), a continuación vera el packin en acción y será necesario esperar hasta que la palabra OSGI aparezca en la ultima linea (3)<br><br> [[Archivo:activarplugin5.jpg]]<br><br> Ahora ya podemos ir a la ventana de logueo para ingresar a la aplicación, sin embargo será necesario ejecutar el proceso Role Acces Update, y despues loguearse nuevamente para tener acceso al menú del nuevo modúlo.</span> Statt auf die Registerkarte Konsole gehen und geben Sie den Buchstaben "ss" (1) (Short Status), so visualisieren die Liste der Plugins bei Ihrem Staat <br> [[File:. Activarplugin4. jpg]] <br> dann erkennen unser Plugin in der Liste und Identifizierung der Id, in unserem Beispiel sehen wir, dass die Id = 2, so aktivieren Sie die Konsole zu schreiben: "Start 2" (2), Du wirst sehen, packin in Aktion und wird warten müssen, bis das Wort OSGI erscheint in der letzten Zeile (3) <br> [[File: activarplugin5.jpg]] <br> Jetzt können wir gehen das Login-Fenster, um auf die Anwendung zugreifen, sondern müssen den Prozess Acces Role Update ausführen und dann wieder anmelden, um das Menü des neuen Moduls zugreifen.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">[[Archivo:activarplugin6.jpg]]<br><br> Una de las principales caracteristicas de este enfoque es que no es necesario preocuparse por el mantenimiento de la aplicación o los cambios de codigo, pues con tan solo escribir en la consola 'stop 2' IDempiere deja de utilizar el nuevo plugin y retorana al comportamiento anterior sin siquiera tener que parar el servidor.</span> [[File: activarplugin6.jpg]] <br> Eines der wichtigsten Merkmale dieses Ansatzes ist, dass Sie nicht brauchen, um die Wartung oder die Anwendung Code-Änderungen kümmern, da mit nur an der Konsole "schreiben Stop 2 'IDempiere Anschlag mit dem neuen Plugin und retorana vorherigen Verhalten, ohne jemals den Server zu stoppen.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Es asi que nuestro ERP prueba que se ha dejado de ser una cueva cerrada para convertirse en una aplicacion dinamica y modular implementando todos lo beneficios de la arquitectura OSGI.</span> So, unsere ERP-Test, die nicht mehr eine geschlossene Höhle eine dynamische und modulare Anwendung alle Vorteile der Implementierung der Architektur OSGI geworden zu sein hat.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">== Conclusiones == Aunque el plugin de ejemplo presentado en el documento es sencillo, es posible desarrollar plugin mas sofisticados con el framework OSGI, empoderando en gran manera el proyecto IDempiere ya que las posibilidades son inmensas.</span> Schlussfolgerungen ==== Obwohl das Plugin Beispiel in der Papier präsentiert ist einfach, ist es möglich, komplexere Plugin mit OSGi-Framework zu entwickeln, stark Stärkung IDempiere Projekt seit die Möglichkeiten immens sind.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Ademas es posible refactorizar aun mas el plugin base en plugins mas pequeños, de la misma forma que se hizo con los los callouts, los procesos y los componenetes graficos.</span> Sie können Refactoring das Plugin noch mehr Plugins basierend auf kleinere, in der gleichen Weise wie mit den Legenden, Prozesse und Grafik-Komponenten durchgeführt wurde.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Esto mismo podriamos hacerlo con los diferentes procesos funcionales como Manofactura, Activos Fijos o incluso facturación, pagos y recaudos.</span> Das gleiche kann mit verschiedenen funktionalen Prozesse getan werden selbst hergestellt, das Anlagevermögen oder Abrechnung, Zahlungen und Sammlungen.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Por ultimo el implementar la plataforma OSGI, permitira a IDempiere adoptar una gran variedad de herramientas del universo OSGI y de esa forma dia tras dia veremos como IDempiere crece rapidamente.<br><br> Cualquiera que sea el camino que siga IDempiere no sera un camino lento, pues en mientras estoy escribiendo este documento, Carlos Ruiz via Skype me ha mostrado nuevos cambios que se han integrado como se pueden ver en el siguiente enlace: <br> [http://wiki.idempiere.org/en/Category:New_Features_v0.01 http://wiki.idempiere.org/en/Category:New_Features_v0.01].</span> Schließlich wird die Implementierung der OSGi-Plattform ermöglicht IDempiere treffen eine Vielzahl von Werkzeugen OSGI Universum und so sehen wir Tag für Tag als IDempiere schnell wächst. <br> Was IDempiere dem Pfad folgen wird keine sein langsame Art hat, weil, wie ich schreibe in diesem Dokument über Skype Carlos Ruiz mir gezeigt, Änderungen, die vorgenommen wurden, wie in den folgenden Link zu sehen ist: <br> [http://wiki.idempiere.org/en/Category : New_Features_v0.01 http://wiki.idempiere.org/en/Category:New_Features_v0.01].</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Asi que IDempiere es ahora el ERP rapido y furioso del mundo Opensource.</span> So IDempiere ERP ist nun fast and furious Welt der Opensource.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left"><br><br> Esta guia solo intenta ilustrar de manera general las posibilidades que tendran los desarrolladores y disminuir la curva de aprendizaje de estos para sumergirse en el mejor software del mundo.</span> <br> Dieser Leitfaden nur allgemein versucht, die Möglichkeiten, die Entwickler haben und reduzieren die Lernkurve von ihnen, sich in die beste Software der Welt eintauchen veranschaulichen.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Como saben debido a los tutoriales que he escrito en el pasado, es un placer para mi compartir lo que he aprendido para que otros lo experimenten, este es el legado que quiero dejar en los ultimos años que me queden por vivir de acuerdo a la voluntad de Dios.</span> Wie Sie wegen der Tutorials, die ich in der Vergangenheit geschrieben haben, wissen, es ist eine Freude für mich, zu teilen, was ich gelernt habe, für andere zu erleben, das ist das Vermächtnis I want to leave in den letzten Jahren verließ ich die nach dem Willen zu leben Gott.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left"><br><br> Si tienes alguna sugerencia o alqo para decime puedes escribirme a red1@red1.org.</span> <br> Wenn Sie Anregungen oder ALQO um mir zu sagen haben, können Sie schreiben red1@red1.org.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left"><br><br> Agradezco que te hayas tomado el tiempo de leer esto y es mi esperanza que estas lineas te ayuden a tomar la decisión de hacer parte de este increible proyecto.</span> <br> dass Sie sich die Zeit, dies zu lesen, und es ist meine Hoffnung, dass diese Zeilen wird Ihnen helfen, die Entscheidung zu diesem unglaublichen Projekt.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left"><br><br> Que la paz y la bendición de Dios este con Ustedes.</span> <br> Möge Frieden und Segen Gottes mit Ihnen sein.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">== Epilogo - Usando Puntos de Extensión == Nuestro Don, Low Heng Sin ha señalado que usar Eclipse Register-Buddy no es la mejor practica y ha aconsejado en cambio que es mejor utilizar los puntos de extension para definir el proceso.</span> Epilogue == - == Extension Points Verwendung unserer Don, Low Heng Sin hat gezeigt, dass die Verwendung Eclipse-Register-Buddy ist nicht die beste Praxis und stattdessen hat darauf hingewiesen, dass es besser ist, Extension Points verwenden, um den Prozess zu definieren.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Asi que regresemos un poco a Eclipse para "desarecer" esa linea, como se muestra en (1), para continuar el proceso vamos a la pestaña overview (2), daremos clic en el enlace extensiones(3), luego vamos a la pestaña extensiones(4).</span> So gehe ich zurück ein wenig zu "desarecer", die Linie, wie in (1) gezeigt, Eclipse, den Prozess fortzusetzen gehen Sie auf die Registerkarte Übersicht (2), werden wir den Link Erweiterungen (3) klicken, dann auf die Registerkarte Erweiterungen (4).</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Despues daremos clic en el boton de agregar y selccionamos la ventana (5) de puntos de extensión eligiendo org.adempiere.process (6)y regresando a la ventana anterior damos clic derecho a la nueva linea y seleccionamos nuevo proceso (7) <br><br> [[Archivo:epilogo1.jpg]] [[Archivo:epilogo2.jpg]] Una nueva clase es definida (1), pero no es necesario escribir codigo, basta solo con dar clic en el boton de busqueda(2) y seleccionar la clase existente (3).</span> Dann werden wir auf die Schaltfläche Hinzufügen und das Fenster selccionamos (5) der Wahl org.adempiere.process Extension Points (6) und die Rückkehr zum vorherigen Fenster wir nach rechts auf die neue Zeile klicken und neue Verfahren (7) <br > <br> [[File: epilogo1.jpg]] [[Datei: epilogo2.jpg]] Eine neue Klasse definiert ist (1), aber keine Notwendigkeit, Code zu schreiben, genug nur auf die Suchtaste (2 klicken ) und wählen Sie die vorhandene Klasse (3).</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">Luego es necesario suministrar el ID (5) que se registrará en el classpath, por ultimo puedes ingresar tambien un nombre (6).</span> Dann müssen Sie die ID (5) in den Klassenpfad aufgenommen werden können, schließlich kann man auch einen Namen eingeben (6).</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left"><br><br> [[Archivo:epilogo3.jpg]] <br><br>En el siguiente enlace puedes ver un video que ilustra lo anterior.</span> <br> [[File: epilogo3.jpg]] <br> In dem folgenden Link ein Video, das zeigt sehen können.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align: left">[http://youtu.be/HXTy9GvCgu8 http://youtu.be/HXTy9GvCgu8]</span> [Http :/ / youtu.be/HXTy9GvCgu8 http://youtu.be/HXTy9GvCgu8]</span>
| |
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? -
- Ist dies nur Code? -
Ist die Antwort ja und nein?.
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:
feature = player_embedded & v = oZSnsfW2A2Y Pack-Out Module
Eclipse Plugin Development
/ watch? feature = player_embedded & v = TnqizjaCEm8 Pack-Plugin In Modul als
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.' 4
.
Der Code "verbrannt" 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]
Baustelle