dvcon g webservice · dvcon!g webservice produktkon!guration mit constraints typo3 camp berlin •...
TRANSCRIPT
dvConfig Webservice
Produktkonfiguration mit Constraints
TYPO3 Camp Berlin • Juli 2016 • Dr. Rico Schüppel •
dvConfig WebserviceProduktkonfiguration mit Constraints: Trennung von FrontEnd und Logik
ProduktkonfiguratorenFreie Wildbahn
• unterschiedlichste Arten von Webshops und CMS
• vorgefertigte StandAlone Konfiguratoren via iFrame einbinden
• oder hochindividuelle Javascript FrontEnds inkl. Logik
Unser Ziel
• branchenunabhängige, individualisierbare Lösung (ToolBox .. SDK)
• Entwicklungszeit reduzieren, erweiterbar, einfache Wartung
→ Trennung von FrontEnd und Konfigurationslogik
Lösung per Webservice• View (HTML/CSS) - individuelles Design
• Model (Webshop/CMS) - Produktdaten: Shop, PIM, WaWi, ERP etc.
• ViewModel => dvConfig
• Widgets: wiederverwendbare Funktionalität und atomares Design
• Ergebnis: Webservice in Verbindung mit AngularJS
• Anwendung: Konfiguratoren, Planungstools, Guided Selling
dvConfig: REST API• /product
• /decision
• /context
• /xsd-schema
• /cli-credentials
https://konfigurator.davitec.de/dvConfig/api
RestApi dvConfigDoc
HTTP Requests via POST, PUT, GET, DELETE
Produktdefinition• Beschreibung in XML
• XSD Schema (Validierung)
• Feature Model
• Wird vom Webserver initiiert
• API Session
• GET /product => json
Feature - Model• Feature Domain: Selected, Deleted, Undecided
• Feature Types: Mandatory, Optional, Ordinary
• Gruppen (OneOf, SomeOf, AllOf)
• Relationen (requires, excludes, implies, ifonlyif)
• Attribute (int, enum, bool) mit In/Out-Guards
• Baumstruktur mit Cross Tree Dependencies
Constraints• Frei kombinierbare Bedingungen für Features und Attribute
• Boolsche Ausdrücke (and, or, not) und Vergleichsoperatoren
• Bsp: A && !B <=> (C || D) && (E<=10) , wobei {A..E} FQNs sind
• Arithmetische Ausdrücke (Berechnungen)
• Alle Constraints gelten gleichzeitig & widerspruchsfrei
• Differenzierung: Sprach-, Model-, UserConstraints
Einige Helfer• Attachements
• Relations
• Preselection
• Context
• Sorting
• Dokumentation
Initialisieren
• Webseite wird aufgerufen (GET auf Webserver)
• POST /cli-credentials erzeugt Session - Rückgabe SessionKey
• POST /product mit XML im Body (200 OK)
• Webserver: Ausliefern des FrontEnds inkl. SessionKey
• ab jetzt kann das FrontEnd direkt mit der API kommunizieren
User Decisions• FrontEnd holt Daten direkt von der API
• selektive Darstellung nach Status: isSelected, isSelectable usw.
• Klick auf Feature => POST, PUT oder DELETE /decision/{fqn}
• API berechnet Konsequenzen => 200 OK
• erneut Daten abholen per GET /product
• AngularJS mit 2-Wege-Datenbindung (Auto-Refresh in der View)
BoilerPlate• php Server Code für
ApiSession & Product Init
• AngularJS Controller fürProduktModel & Steps
• Product XML Beispiel
• Services: Api Utility, Settings
• Widget Directive
• Atomic Design ToolBox BoilerPlate: Demo / Source
AngularJS - Databinding
Getting started• BoilerPlate ziehen
• Account erstellen
• ApiKey registrieren
• XML erstellen
• Widgets anpassen
• ServerCode integrieren
• Ausliefern 😉
Ausblick• API ist ready to use
• Praxis & Projekte
• Arithmetische Berechnungen
• TYPO3 & Magento Extensions
• Konnektoren
• ANTLR/XTEXT
• GUI für Produktdefinition
• Predictions
Ressourcen• dvConfig Webservice
• XSD Schema
• Account erstellen
• Api User Verwaltung
• Dokumentation
• Support per Ticketsystem
• BoilerPlate
• Dresden, Bautzner Str. 45
Quellen
• [CHOC] choco-solver.org, Java Library for Constraint Programming
• [SCHN] Denny Schneeweiss-Göritz, Diplomarbeit, TU Cottbus
• [JERS] jersey.java.net, Restful Webservices in Java
• [TOMC] tomcat.apache.org, Apache Tomcat Server
• [SPRG] https://projects.spring.io/spring-framework/
Danke• Probiert es aus und gebt uns Feedback!
• project.davitec.de
• @Rico_Schueppel
• Jobs bei davitec !
dvConfig Webservice
Produktkonfiguration mit Constraints
MobileCamp Dresden • Mai 2016 • Dr. Rico Schüppel •