12
JTL-Connector: Anpassung & Erweiterung der Endpoints Ein Workshop mit Daniel Böhmer & Christian Spoo

JTL-Connector | Anpassung & Erweiterung der Endpoints

Embed Size (px)

Citation preview

Page 1: JTL-Connector | Anpassung & Erweiterung der Endpoints

JTL-Connector:Anpassung & Erweiterung

der EndpointsEin Workshop mit Daniel Böhmer & Christian Spoo

Page 2: JTL-Connector | Anpassung & Erweiterung der Endpoints

JTL-Software-GmbH, Daniel Böhmer & Christian Spoo

Ablauf des Workshops• Einführung in Connector-Plugins• Technologische Grundlagen• Events• Architektur• Debugging

• Vorstellung eines Example-Plugins• Fragerunde• Abschluss

Dauer: ca. 30 Min.

Page 3: JTL-Connector | Anpassung & Erweiterung der Endpoints

Einführung in Connector-Plugins• Ereignisgesteuerter

Aufruf durch Connector-Core

• Automatischer Plugin-Loader und Verwendung von Dependency Injection (DI)

• Plugin ist losgelöst vom eigentlichen Endpoint

• Zugriff auf alle Daten, die JTL-Wawi übermittelt

Page 4: JTL-Connector | Anpassung & Erweiterung der Endpoints

JTL-Software-GmbH, Daniel Böhmer & Christian Spoo

Technologische Grundlagen• Basiert auf

objektorientierem PHP nach 5.4-Sprachstandard

• Composer zur Verwaltung von Abhängigkeiten

• Event-System auf Basis des Symfony-EventDispatchers

Page 5: JTL-Connector | Anpassung & Erweiterung der Endpoints

JTL-Software-GmbH, Daniel Böhmer & Christian Spoo

Events• Hauptentities (Product, Category etc.) haben jeweils 8

Events• Wir unterscheiden Before- und After-Events, die zu den

4 jeweiligen Controllermethoden gehören:• push, pull, delete und statistic• z.B. ProductAfterPushEvent

• Das Eventobjekt bekommt das jeweilige Hauptentity als Referenz• Daten können also nicht nur gelesen, sondern z.B. vor dem Schreiben in

die Shop-Datenbank auch verändert werden

Page 6: JTL-Connector | Anpassung & Erweiterung der Endpoints

JTL-Software-GmbH, Daniel Böhmer & Christian Spoo

Architektur

Page 7: JTL-Connector | Anpassung & Erweiterung der Endpoints

JTL-Software-GmbH, Daniel Böhmer & Christian Spoo

Symfony EventDispatcher• Bibliothek zum Handling

von Ereignissen• Ein Event hat n Listener

Page 8: JTL-Connector | Anpassung & Erweiterung der Endpoints

JTL-Software-GmbH, Daniel Böhmer & Christian Spoo

Die Bootstrap-Klasse• Namespace gleicht dem

Ordnerpfadplugins/izzle/demo/ izzle\demo

• Bootstrap-Klasse (izzle\demo\Bootstrap) implementiert IPlugin und registriert n Listener

• Bootstrap-Klassen werden automatisch gefunden und geladen

• Kein Eingriff in den Endpoint selbst nötig

Page 9: JTL-Connector | Anpassung & Erweiterung der Endpoints

Beispiel-Listener• Listener-Methode

bekommt das jeweilige Event

• Das Event beinhaltet das Main-Entity

• Objekte können so im Listener manipuliert werden

Page 10: JTL-Connector | Anpassung & Erweiterung der Endpoints

Debugging – serverseitig• JTL-Connector schreibt eigene

Logdateien (via Monolog)• gesamte RPC-Kommunikation• Session-Handling• endpointspezifische Logs• weitere Kanäle können angelegt

werden• Loglevel konfigurierbar• Logdateien werden mit Datum

versehen und automatisch rotiert• Erweitertes Logging im Developer-

Modus

Page 11: JTL-Connector | Anpassung & Erweiterung der Endpoints

Debugging – clientseitig• Connector-Tester

• zeigt direkte RPC-Ausgabe (JSON, Baumstruktur, Response-Zeit)

• alle verfügbaren RPC-Calls können abgesetzt werden

• nützlich, wenn der eigene Endpoint noch am Anfang steht, oder zur Fehlersuche

Page 12: JTL-Connector | Anpassung & Erweiterung der Endpoints

JTL-Software-GmbH, Daniel Böhmer & Christian Spoo

Fragen?

Dokumentation: http://docs.jtl-connector.deSourcecode: http://gitlab.jtl-software.de