Frank Weigmann - MOnAMi ?· Frank Weigmann Entwurf und Implementierung eines symfony-Plugins zur Synchronisierung…

Download Frank Weigmann - MOnAMi ?· Frank Weigmann Entwurf und Implementierung eines symfony-Plugins zur Synchronisierung…

Post on 04-Jun-2018

212 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Frank Weigmann

    Entwurf und Implementierung eines symfony-Plugins zurSynchronisierung von Daten zwischen OpenERP und einer

    Webanwendung

    DIPLOMARBEIT

    HOCHSCHULE MITTWEIDA (FH)

    UNIVERSITY OF APPLIED SCIENCES

    Fachbereich Informationstechnologie & Elektrotechnik

    Mittweida, Juli 2009

  • Frank Weigmann

    Entwurf und Implementierung eines symfony-Plugins zurSynchronisierung von Daten zwischen OpenERP und

    einer Webanwendung

    eingereicht als

    DIPLOMARBEIT

    an der

    HOCHSCHULE MITTWEIDA (FH)

    UNIVERSITY OF APPLIED SCIENCES

    Fachbereich Informationstechnologie & Elektrotechnik

    Mittweida, Juli 2009

    Erstprufer: Prof. Dr.-Ing. Frank ZimmerZweitprufer: Dipl.-Wirtsch.-Inf. Tim Heil

    Vorgelegte Arbeit wurde verteidigt am:

  • Bibliografische Beschreibung:

    Frank Weigmann:Entwurf und Implementierung eines symfony-Plugins zur Synchronisie-rung von Daten zwischen OpenERP und einer Webanwendung 2009. -85 S.Mittweida, Hochschule Mittweida (FH) - University of Applied Sciences,Fachbereich Informationstechnologie & Elektrotechnik, Diplomarbeit, 2009

    Referat:

    Ziel der Diplomarbeit ist es, eine Moglichkeit zum Datenaustausch zwi-schen der Webanwendung Jobmixer.com und dem ERP-System OpenERPzu entwerfen und zu implementieren. Dabei wird auf vorhandene Kom-ponenten der beiden Systeme zuruckgegriffen. Die Synchronisation wirdin Form eines symfony-Plugins zur Verfugung gestellt, welches direkt mitJobmixer.com verbunden ist. Der Zugriff auf die Daten von OpenERP ge-schieht uber dessen XML-RPC-Schnittstelle. Zum Speichern und Auslesender Daten des Plugins und von Jobmixer.com wird Doctrine verwendet.

    Desweiteren wird auf die Unterschiede in der Datenstruktur vonJobmixer.com und OpenERP und deren Ausgleich eingegangen. Zu die-sem Zweck wird eine Struktur zum Mapping der Daten entwickelt und au-erdem aufgezeigt, wie die Synchronisation konfiguriert und durchgefuhrtwird.

  • Danksagung

    Fur die Unterstutzung bei meiner Diplomarbeit mochte ich mich bei folgenden Personenund Institutionen herzlich bedanken:

    Prof. Dr.-Ing. Frank Zimmer von der Hochschule Mittweida, fur die Betreuung meinerDiplomarbeit.

    Meinem Betreuer von der IN AUDITO GmbH Dipl.-Wirtsch.-Inf. Tim Heil, M. Sc. inComp. Sc. Thomas Kappel, Dipl.-Ing. (FH) Sebastian Schulze und M. A. Conny Ledwigfur deren Hinweise, Anregungen, Kritiken und fur das Korrekturlesen dieser Arbeit.

    Der IN AUDITO GmbH, fur die Moglichkeit, diese Diplomarbeit zu schreiben und dieUnterstutzung, die sie mir gegeben hat.

    I

  • Inhaltsverzeichnis

    Danksagung I

    Inhaltsverzeichnis II

    Abbildungsverzeichnis III

    Tabellenverzeichnis IV

    Abkurzungsverzeichnis V

    1 Einleitung 1

    2 Grundlagen 32.1 Das freie ERP-System OpenERP . . . . . . . . . . . . . . . . . . . . . . 32.2 Die Webanwendung Jobmixer.com . . . . . . . . . . . . . . . . . . . . . 52.3 Das Webframework symfony . . . . . . . . . . . . . . . . . . . . . . . . 52.4 Doctrine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.5 XML-RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.6 Konventionen fur die Umsetzung . . . . . . . . . . . . . . . . . . . . . . 15

    3 Anforderungen 183.1 Analyse des Verkaufsprozesses . . . . . . . . . . . . . . . . . . . . . . . 18

    3.1.1 Ablauf des Verkaufsprozesses . . . . . . . . . . . . . . . . . . . 193.1.2 Anforderungen an OpenERP . . . . . . . . . . . . . . . . . . . . 193.1.3 Anforderungen an den Datenaustausch . . . . . . . . . . . . . . 20

    3.2 Umsetzung des Datenaustausches . . . . . . . . . . . . . . . . . . . . . 213.3 Anforderungen an die Sicherheit . . . . . . . . . . . . . . . . . . . . . . 22

    3.3.1 Sicherheit der Kommunikation . . . . . . . . . . . . . . . . . . . 23

    4 Entwurf 244.1 Vorbetrachtungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.2 Module fur OpenERP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.3 Datenstruktur der relevanten Daten in OpenERP . . . . . . . . . . . . . . 25

    4.3.1 Kundendaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.3.2 Bestelldaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.3.3 Rechnungsdaten . . . . . . . . . . . . . . . . . . . . . . . . . . 274.3.4 Produktdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    II

  • 4.4 Datenstruktur der relevanten Daten in Jobmixer.com . . . . . . . . . . . . 274.4.1 Kundendaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.4.2 Bestelldaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.4.3 Rechnungsdaten . . . . . . . . . . . . . . . . . . . . . . . . . . 294.4.4 Produktdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    4.5 Schnittstellen und Techniken der Synchronisation . . . . . . . . . . . . . 294.5.1 symfony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.5.2 XML-RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.5.3 Doctrine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    4.6 Datenbankstruktur fur die Synchronisation . . . . . . . . . . . . . . . . . 304.6.1 Steuerungstabelle der Synchronisation . . . . . . . . . . . . . . . 314.6.2 Mapping der Daten . . . . . . . . . . . . . . . . . . . . . . . . . 32

    4.7 Entwurf der Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.7.1 Die Datenbankklassen fur die Synchronisation . . . . . . . . . . 344.7.2 Die Klassen zur Verwaltung der Synchronisation . . . . . . . . . 364.7.3 Die Klassen fur die Steuerung der Synchronisation . . . . . . . . 39

    4.8 Konfiguration der Synchronisation . . . . . . . . . . . . . . . . . . . . . 414.9 Steuerung der Synchronisation . . . . . . . . . . . . . . . . . . . . . . . 414.10 Ablauf der Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . 43

    4.10.1 Synchronisation von Kundendaten . . . . . . . . . . . . . . . . . 444.10.2 Synchronisation von Produktdaten . . . . . . . . . . . . . . . . . 464.10.3 Synchronisation von Bestelldaten . . . . . . . . . . . . . . . . . 474.10.4 Synchronisation zur Aktualisierung des Bestellstatus . . . . . . . 484.10.5 Synchronisation von Rechnungsdaten . . . . . . . . . . . . . . . 49

    4.11 Absicherung der Kommunikation . . . . . . . . . . . . . . . . . . . . . . 50

    5 Implementierung 515.1 Implementierung der Datenbanktabellen . . . . . . . . . . . . . . . . . . 51

    5.1.1 Erstellen des Models . . . . . . . . . . . . . . . . . . . . . . . . 515.1.2 Migration der Datenbank . . . . . . . . . . . . . . . . . . . . . . 52

    5.2 Die Ordnerstruktur von iaOpenErpPlugin . . . . . . . . . . . . . . . . . 545.2.1 Das lib-Verzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . 555.2.2 Das config-Verzeichnis . . . . . . . . . . . . . . . . . . . . . . . 55

    5.3 Nutzung der XML-RPC-Schnittstelle von OpenERP . . . . . . . . . . . . 565.3.1 XML-RPC mit PHP nutzen . . . . . . . . . . . . . . . . . . . . . 565.3.2 Die Verbindung zwischen Jobmixer.com und OpenERP . . . . . . 565.3.3 Aufruf von OpenERP-Methoden uber XML-RPC . . . . . . . . . 585.3.4 Datensuche mit XML-RPC . . . . . . . . . . . . . . . . . . . . . 595.3.5 Datentransfer uber XML-RPC . . . . . . . . . . . . . . . . . . . 60

    5.4 Erfassen von Anderungen . . . . . . . . . . . . . . . . . . . . . . . . . . 635.4.1 Erfassen einer Anderung mit Jobmixer.comObjekt . . . . . . . . 635.4.2 Erfassen einer Anderung ohne Jobmixer.com-Objekt . . . . . . . 645.4.3 Erkennen von bereits synchronisierten Objekten . . . . . . . . . . 64

    5.5 Ausfuhren der Synchronisation . . . . . . . . . . . . . . . . . . . . . . . 645.6 Helfer fur die Synchronisation . . . . . . . . . . . . . . . . . . . . . . . 66

    5.6.1 Daten formatiert fur die Synchronisation bereitstellen . . . . . . . 66

    III

  • 5.6.2 Konvertierung von XML-RPC-Object-Arrays . . . . . . . . . . . 665.6.3 Uberprufung des Datentypes der zuruckgegebenen Daten . . . . . 675.6.4 Das zur Anderung passende Jobmixer.com-Objekt erhalten . . . . 68

    5.7 Die Konfigurationsdatei openerp.yml . . . . . . . . . . . . . . . . . . 685.7.1 Die Bereiche UserType, ObjectGroup und FieldType . . . . 695.7.2 Der Bereich Objects . . . . . . . . . . . . . . . . . . . . . . . 69

    5.8 Ubernehmen der Einstellungen . . . . . . . . . . . . . . . . . . . . . . . 715.8.1 Parsen der Einstellungen . . . . . . . . . . . . . . . . . . . . . . 715.8.2 Loschen veralteter Daten . . . . . . . . . . . . . . . . . . . . . . 715.8.3 Abspeichern der Einstellungen in der Datenbank . . . . . . . . . 725.8.4 Aufraumen der Einstellungen . . . . . . . . . . . . . . . . . . . 725.8.5 Erzeugen der Synchronisationsklassen und Interfaces . . . . . . . 73

    5.9 Auslosen der Synchronisation . . . . . . . . . . . . . . . . . . . . . . . 745.9.1 Der SynchronisationTask . . . . . . . . . . . . . . . . . . . . . . 745.9.2 Der SyncInvoiceTask . . . . . . . . . . . . . . . . . . . . . . . . 755.9.3 Der SyncProductTask . . . . . . . . . . . . . . . . . . . . . . . . 755.9.4 Der SyncCustomerTask . . . . . . . . . . . . . . . . . . . . . . 75

    5.10 Absicherung der Kommunikation . . . . . . . . . . . . . . . . . . . . . . 76

    6 Test der Synchronisation 776.1 Die Testumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786.2 Die Testdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786.3 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    6.3.1 Testen der Produktsynchronisation . . . . . . . . . . . . . . . . . 796.3.2 Testen der PluginFieldMapTable-Klasse . . . . . . . . . . . 81

    7 Fazit und Ausblick 84

    Glossar 86

    Literaturverzeichnis 89

    CD-Verzeichnis 91

    Selbststandigkeitserklarung 92

    IV

  • Abbildungsverzeichnis

    2.1 OpenERP-Client unter Linux . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Die Schichten von Doctrine . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3.1 Kommunikationspartner der Synchronisation . . . . . . . . . . . . . . . 23

    4.1 Datenstruktur OpenERP Tabellen . . . . . . . . . . . . . . . . . . . . . . 264.2 Datenstruktur Jobmixer.com Tabellen . . . . . . . . . . . . . . . . . . . . 284.3 Datenstruktur von iaOpenErpPlugin . . . . . . . . . . . . . . . . . . . 314.4 Paketubersicht fur die Synchronisation . . . . . . . . . . . . . . . . . . . 344.5 Die Doctrine-Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.6 Beispiel Zusammenspiel Doctrine-Klassen . . . . . . . . . . . . . . . . . 364.7 Klassen fur dei Verwaltung der Synchronisation . . . . . . . . . . . . . . 384.8 Klassen fur die Steuerung der Synchronisation . . . . . . . . . . . . . . . 404.9 Struktur zur Steuerung der Synchronisation . . . . . . . . . . . . . . . . 424.10 Ablauf zum Anlegen eines neuen Benutzers . . . . . . . . . . . . . . . . 444.11 Aktualisieren der Daten eines bereits vorhanden Benutzers . . . . . . . . 454.12 Ablauf, wenn Produkte hinzugefugt oder aktualisiert werden . . . . . . . 464.13 Ablauf der Synchronisation von Bestellungen . . . . . . . . . . . . . . . 474.14 Ablauf fur die Aktualisierung des Bestellstatus . . . . . . . . . . . . . . 484.15 Ablauf der Synchronisation von Rechnungen . . . . . . . . . . . . . . . 49

    5.1 Ordnerstruktur von iaOpenErpPlugin . . . . . . . . . . . . . . . . . . . . 545.2 Verbindungsaufbau zwischen Jobmixer.com und OpenERP . . . . . . . . 575.3 Ordnerstruktur der automatisch erzeugten Klassen und Interfaces . . . . 74

    6.1 Test von Produktsynchronisation erfolgreich . . . . . . . . . . . . . . . . 816.2 Test von PluginFieldMapTabletest erfolgreich . . . . . . . . . . . . . 826.3 alle Tests auf der Konsole erfolgreich ausgefuhrt . . . . . . . . . . . . . . 83

    V

  • Tabellenverzeichnis

    2.1 Die verschiedenen Datentypen von XML-RPC . . . . . . . . . . . . . . . 15

    4.1 Die Anforderungen an OpenERP und das entsprechende Modul . . . . . 254.2 Mogliche Status der Synchronisation . . . . . . . . . . . . . . . . . . . . 32

    5.1 Synchronisationsrichtungen . . . . . . . . . . . . . . . . . . . . . . . . . 70

    6.1 Ubersicht uber die am haufigsten verwendeten Methoden zum Testen derAnwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    VI

  • Abkurzungsverzeichnis

    AJAX Asynchronous Javascript and XML

    CRUD Create Retrieve Update Delete

    DBAL Database-Abstraction-Layer (Datenbankabstrak-tionsschicht)

    ERM Entity-Relationship-ModelERP Enterprise-Resource-Planning

    GPL GNU General Public License

    HTTP Hypertext Transfer Protocol

    MVC Model-View-Control

    ORM Object-Relational Mapper

    PDO PHP-Data-Objects (PHP-Datenobjekte)PEAR PHP Extension and Application RepositoryPHP PHP: Hypertext Preprocessor

    RPC Remote-Procedure-Call

    SQL Structured Query LanguageSSH Secure ShellSVN Subversion

    URL Uniform Ressource Locator

    XLIFF XML Localization Interchange File FormatXML Extensible Markup Language

    YAML YAML Aint Markup Language

    VII

  • Kapitel 1

    Einleitung

    Heutige Geschaftsprozesse werden immer umfangreicher und komplexer. Um den darausentstehenden Anforderungen an die Personalverwaltung, die Verkaufsabwicklung oderdie Buchhaltung gerecht zu werden, gibt es eine vielschichtige Auswahl verschiedenerERP1-Systeme. Diese helfen beim Erledigen der Geschaftsprozesse oder ubernehmen siekomplett. Bei der Erfullung dieser Aufgaben kann es notwendig sein, mehr als ein ein-ziges Produkt zu nutzen. Aus diesem Grund befinden sich haufig heterogene Software-Landschaften und somit eine Mischung verschiedener Systeme im Einsatz. Damit eineZusammenarbeit dieser verschiedenen Systeme funktioniert, ist eine Kommunikation zwi-schen ihnen erforderlich.

    Die Ausgangssituation der IN AUDITO GmbH besteht darin, dass ein ERP-System ei-ne Webanwendung bei der Abwicklung des Verkaufsprozesses unterstutzen sollt. DasERP-System und die Webanwendung stehen vollstandig implementiert zur Verfugung.Es existiert jedoch keine Moglichkeit, Daten gezielt zwischen den beiden Systemen aus-zutauschen. Das Ziel dieser Diplomarbeit wird daher sein, eine Moglichkeit zum Daten-austausch zwischen dem ERP-System und der Webanwendung zu entwerfen und diese zuimplementieren.

    Um die Anforderungen fur den Entwurf der Synchronisation zu erhalten, wird im Ka-pitel Anforderungen der Verkaufsprozess analysiert. Fur diese Anforderungen wird imKapitel Entwurf eine optimale Umsetzung gesucht. Dazu wird auf die verschiedenenBesonderheiten und Unterschiede der beiden Systeme und deren mogliche Kombinationgenauer eingegangen. Die Umsetzung des Entwurfs wird in Implementierung behan-delt. Dabei wird im Detail darauf eingegangen, wie die einzelnen Komponenten der bei-

    1Enterprise Resource Planning (ERP)

    1

  • KAPITEL 1. EINLEITUNG

    den Systeme zusammenarbeiten und genutzt werden. Zum Abschluss werden noch dieTests fur die Synchronisierung im Kapitel Test der Synchronisation betrachtet. Zu die-sem Zweck wird die Testumgebung erlautert und Beispiele fur die Umsetzung der Testswerden aufgezeigt.

    Diplomarbeit, Frank Weigmann, 2009 2

  • Kapitel 2

    Grundlagen

    In diesem Kapitel werden die Themen behandelt, die fur das grundlegende Verstandnisdieser Diplomarbeit notwendig sind. Es werden das ERP-System OpenERP und die We-banwendng Jobmixer.com genauer erlautert. Auf die Technologien und Schnittstellen diein dieser Diplo...

Recommended

View more >