Date post: | 06-Apr-2016 |
Category: |
Documents |
Upload: | gerd-lehmann |
View: | 213 times |
Download: | 0 times |
SinnerSchraderNeueInformatik
SinnerSchrader
Hamburg, 27.02.2007Autor: Thomas Jacob
TECH-TALK Commerce-Framework,Projektvorlage, Projekt-Wizard, dev-Site
SinnerSchrader Seite 227.02.2007
» Agenda
01 Commerce-Framework02 Projektvorlage und Projekt-Wizard03 dev-Site04 Wie geht’s weiter?
SinnerSchrader Seite 327.02.2007
01 Commerce-Framework
» Was ist das Commerce-Framework?» Komponenten des Frameworks» Ein bisschen Statistik
SinnerSchrader Seite 427.02.2007
Was ist das Commerce-Framework?
? ?? ? ?? ?
?? ? ? ?
» Welche Vorstellung habt ihr?» Was habt ihr gehört?» Was erwartet ihr? Was befürchtet ihr?
CommerceFramework
buh!
SinnerSchrader Seite 527.02.2007
Was ist das Commerce-Framework?
Das Commerce-Framework ist ein Baukasten wiederverwendbarerJava-Komponenten, die » in vielen Sinner-Anwendungen benötigt werden,» auf einer einheitlichen Technologie basieren,
» SpringFramework, Hibernate und Struts» sehr gute Integration miteinander und ins Projekt
» sich durch hohe Qualität auszeichnen,» nicht nur Spezialfälle abdecken (Eintrittsschwelle).
SinnerSchrader Seite 627.02.2007
Was ist das Commerce-Framework nicht?
Das Framework ist kein fertiger Internetshop:» Keine fertigen JSPs oder Struts-Actions» Keine fertige Shop-Lösung in weniger als 10 Manntagen» Das Commerce-Framework ist nicht mit z.B. Enfinity vergleichbar
SinnerSchrader entwickelt individuelle Frontends» In der Präsentationsschicht keine fertigen Lösungen für
Anwendungsfälle (z.B. Produktkatalog), nur Komponenten für wiederkehrende Muster (z.B. die Prozesskomponente)
» In der Geschäftslogik werden jedoch ganze Anwendungsfälle angeboten
SinnerSchrader Seite 727.02.2007
Wie ist das Commerce-Framework entstanden?
Talkline-Shop» Einsatz von hybris jakarta» Fehlende starke Typisierung wird im Projekt ausgeglichen
Süddeutsche Zeitung Mediathek» Notwendigkeit eines flexiblen und typsicheren Shopsystems» Erste Version des Commerce-Frameworks
Integration vorhandener Komponenten» Die Prozesskomponente wird integriert
Integration weiterer Projektarbeiten» Zahlungsadapter, FTP-Komponente uvm. werden integriert
SinnerSchrader Seite 827.02.2007
Überblick über die Komponentendes Commerce-Frameworks
Formularprozesse
Struts on Rails Rewrite-Engine
Formularvalidierung
Präsentation
Mailversand
Dateitransfer
Excel und CSV
Web-Serviceswww
Schnittstellen
Produkte Benutzer Bestellungen
Shop-Logik
Administration
Administrationsoberfläche
SinnerSchrader Seite 927.02.2007
Shop-Komponenten:Produktmanagement (1)Das Objektmodell wird nur deklariert (entworfen)» Java-Klassen und das Datenbank-Mapping werden generiert» Die Administrationsoberfläche baut sich dynamisch auf
Beispielkonfiguration:<product-type code="Media" name="Medium"> <attributes> <text code="ean" name="EAN" max-length="32" index="Media_ean"/> <text-list code="keywords" name="Schlüsselwörter" max-length="128" /> <float code="weight" name="Gewicht"/> <multi-association code="matching" name="Passendes" type-code="Media"/> <choice code="style" name="Stil" type="Style" required="false"> <options> <entry key="DISCOTHEQUE" value="Diskothek"/> <entry key="AUDIOBOOK" value="Hörbuch"/> </options> </choice> <boolean code="blocked" name="deaktiviert" required="true"/> </attributes></product-type>
Es wird eine Klasse und Tabellenamens Media generiert
Produkte können bestellt werden
Das Framework bietetverschiedene Attributtypen
Die Einstellungen sorgen fürKonsistenz zwischen demDatenbankmodell und derValidierung
SinnerSchrader Seite 1027.02.2007
Shop-Komponenten:Produktmanagement (2)Generierte abstrakte Klasse: Generierte konkrete Klasse:
Generiertes Mapping:
public abstract class AbstractMedia extends Product{ private boolean blocked; private String ean; private List keywords; private List medias; private Style style; private Double weight;
public AbstractMedia() { setTypeCode(CODE); this.ean = ""; this.keywords = new ArrayList(); this.medias = new ArrayList(); }
public void addKeyword(int index, String keyword) [...]}
public class Media extends AbstractMedia{}
<joined-subclass name="Media"> <key foreign-key="Media_product"> <column name="product"/> </key> <property name="ean"> <column name="ean" not-null="false" length="32" index="Media_ean"/> </property> <list name="keywords"> <key column="media" foreign-key="MediaKeyword_media"/> <index column="position"/> <element column="keyword"/> </key> [...]</joined-subclass>
SinnerSchrader Seite 1127.02.2007
Shop-Komponenten:Produktmanagement (3)Weitere Funktionen:» Preisberechnung über Preisfabrik
» Einheitlicher Preis für Produktdarstellung und Bestellungen» Berücksichtigung von Mengen- und Kundenrabatten
» Mandanten, Mehrsprachigkeit, Produkt-Bundles» Automatische Erzeugung von Lucene-Indizes» Verwaltung Produktbildern und anderen Ressourcen in der Datenbank
» Referentielle Integrität» Interne Daten oder externe URLs
» Für Redakteur komfortabel» Für Entwickler transparent (einheitliche API und Taglib)
SinnerSchrader Seite 1227.02.2007
Shop-Komponenten:Benutzer- und BestellmanagementBenutzermanagement» Verwaltung von Endkunden und Redakteuren (Administratoren)» Persistentes Rollen- und Rechte-Management» Einheitliche API für Bonitäts- und Validitätschecks
von Adressen und Zahlungsarten» Zur Zeit implementiert: eScore, Bibit, Pago
Bestellmanagement» Verwaltung von Bestellungen und Lieferungen» Einheitliche API zur Durchführung von Zahlungen
SinnerSchrader Seite 1327.02.2007
Schnittstellenkomponenten:DateitransferDie Dateitransfer-Komponente bietet eine einheitliche API zum automatisierten Upload und Download» Automatische Erzeugung Dateinamen (Upload)
bzw. Matching (Download) nach verschiedensten Kriterien» Schutzmechanismen
» Synchronisation im Cluster» Guard-Time für partiell bereitgestellte Dateien» Überwachbarkeit durch den Betrieb
» Archivierungsfunktion» Zur Zeit implementiert: FTP, SFTP, lokales Dateisystem
SinnerSchrader Seite 1427.02.2007
Schnittstellenkomponenten:Excel- und CSV-Import und -ExportImport und Export von Dateien auf Basis von JavaBeans» Natives Excel (XLS), CSV-Dateien und Festbreiten-Dateien» Validierungsregeln beim Import» In beide Richtungen kombinierbar mit dem Dateitransfer» Verwendet u.a. POI
SinnerSchrader Seite 1527.02.2007
Schnittstellenkomponenten:MailversandVersand von spontanen Mails:» Erzeugung von Mails auf Basis von Velocity-Templates
» Plain-Text, HTML oder beides» Konfiguration aller konstanten Informationen
» z.B. Subject, From, To, CC, BCC» Veränderliche Attribute werden in der Software eingestellt
Zeitlich planbare Massen-Mailings:» Bearbeitung in Batches, Synchronisation im Cluster» Bis zu 130 Mails pro Sekunde bei 2 Nodes gemessen» Bounce-Analyse für fehlerhafte Emailadressen
SinnerSchrader Seite 1627.02.2007
Präsentationskomponenten:FormularprozesseDie Komponente Formularprozesse verteilt ein Struts-Formulars auf mehreren Seiten und übernimmt die Navigationssteuerung.» Fortschrittsanzeige innerhalb des Prozesses (Seitennavigation)» Optionale Seiten (abweichende Lieferadresse)» Schutz vor Back-Button-, Refresh- und Doppelklickfehlern» Einstellbares Navigationsverhalten
» u.a. sequentiell und wahlfrei» Wiederverwendbarkeit aller Bestandteile
» JSPs, Struts-Formulare, Java-Klassen, Validierungsregeln» Integration externer Seiten (z.B. Zahlungsdienstleister)
SinnerSchrader Seite 1727.02.2007
Präsentationskomponenten:SuchmaschinenoptimierungTechnische URLs werden automatisch in gut lesbareund gut indizierbare URLs umgewandelt» /mobile/MobileDetailsVPAction.do?manufacturer=Nokia&mobile=3210
wird zu /mobile/Nokia-3210» Kaum Eingriff in Software oder JSPs notwendig» Transparent sowohl für die Software, als auch für die Clients
SinnerSchrader Seite 1827.02.2007
Präsentationskomponenten:Struts on Rails (1)Struts on Rails» Vereinheitlichung durch „Convention over Configuration“» Beschleunigung der Entwicklungsprozesse
Struts on Rails ist ein Struts-Plugin» Die Struts-Konfiguration entfällt» Die Action-Klassen werden von Balast befreit und erhalten Generics» Die Validierungs-Konfiguration wird um die Hälfte kürzer
SinnerSchrader Seite 1927.02.2007
Präsentationskomponenten:Struts on Rails (2)Action-Klasse ohne Rails Action-Klasse mit Rails
public ActionForward execute(...){ ActionMessages errors = form.validate(mapping, request); if (errors != null && !errors.isEmpty()) { saveErrors(request, errors); return mapping.findForward("error"); }
CartForm cartForm = (CartForm) form; HttpSession session = request.getSession(); Cart cart = Cart.getInstance(session); cart.setQuantity(cartForm.getQuantityInt());
return mapping.findForward("success");}
protected Class handleInvalidRequest(...){ return CartVPAction.class;}
protected Class handleValidRequest(...){ Cart cart = Cart.getInstance(session); cart.setQuantity(form.getQuantityInt());
return CartVPAction.class;}
Validierungsfehler werden bereitsüber die API unterschieden
Die Ziel-Action wird über die Klasseangesprochen, JSPs über den Pfad.Eine Konfiguration entfällt!
Genertics übermitteln in der Methodebereits die richtige Formklasse
SinnerSchrader Seite 2027.02.2007
Administrationsoberfläche
Web-Applikation zum Administrieren von» Produkten, Benutzern und Bestellungen» Weiteren anwendungsspezifischen Inhalten
Out-of-the-box lauffähig ohne Konfiguration» Produktformulare werden auf Basis der Typisierung erstellt
Viele Aspekte sind jedoch konfigurier- und programmierbar» Darstellung der Produktbäume, -listen und -suchen» Editoren der Attribute in den Produktformularen
Integration in das Projekt über eine Checkbox in dem Projekt-WizardTechnologie: JavaServer Faces
SinnerSchrader Seite 2127.02.2007
Ein bisschen Statistik
Projekte» Das Commerce-Framework kommt in schätzungsweise 20 Projekten
zum Einsatz, 17 Projekte sind bekannt.» http://dev/Projekte
Wissensverbreitung» Ca. 65% der Software-Entwickler haben mit dem Framework gearbeitet,
ca. 10% kennen sich sehr gut aus.» Ca. 35% haben für das Framework Funktionen entwickelt.
Umfang» Die aktuelle Version 3.16.0 enthält über 3 Megabyte Source-Code.» Die Dokumentation ist zur Zeit über 330 Seiten lang (ohne Javadoc).
Davon sind allein 30 Seiten Glossar.
SinnerSchrader Seite 2227.02.2007
02 Projektvorlage und Wizard
» Was ist die Projektvorlage?» Probleme der Projektvorlage» Der Projekt-Wizard
SinnerSchrader Seite 2327.02.2007
Typisches wiederkehrendes Problem:Wie lege ich ein neues Software-Projekt an?Man kopiert das Projekt, an dem man zuletzt gearbeitet hat.» Copy-and-Paste-Fehler treten auf
» Name des letzten Projekts taucht an beliebiger Stelle auf» Falsche Abrechnungsdaten (z.B. eScore) werden verwendet
» Erschwerter technologischer UpgradeMan beginnt mit einem leeren Projekt.» Erhöhte Aufwände bei stets gleichen Einrichtungarbeiten» Uneinheitliches Setup
» Konfigurationen, Komponenten, Prozesse, etc.Lösung: Eine Vorlage für neue Projekte.
SinnerSchrader Seite 2427.02.2007
Was ist die Projektvorlage?Die Vorlage ist ein „leeres“ SinnerSchrader-J2EE-Projekt.» Vorbereitete Verzeichnisse für Konfiguration, Komponenten, Quellcode und
Dokumentation» Voreingestellte Konfigurationsfiles für sämtliche Komponenten, sowie
vorbereitete Java-Klassen» Standardeinstellungen sorgen für Einheitlichkeit und Vermeidung von
typischen Fehlern» Kommentare verläutern die nächsten Schritte und bieten Beispiele
» SinnerSchrader-typische Build- und POM-Files (Ant und Maven)» Build des Projektes» Versionsplanung und -Dokumentation» Automatisiertes Deployment auf verschiedenste Ziele
Mehr Information zur Vorlage gibt es hier:» http://dev/Projektvorlage
SinnerSchrader Seite 2527.02.2007
Anfängliche Probleme der Projektvorlage
Zunächst starker Fokus auf das Commerce-Framework» Vorlagen für Konfigurationen und Komponenten im Mittelpunkt
Manuelle Anpassung auf das entsprechende Projekt notwendig» Pfade, Packages, sonstige Namen/Bezeichnungen» Hinzufügen oder Entfernen von Komponenten inkl. Konfiguration und
Build» Umsetzung des Deployment-Szenarios weitgehend im Projekt
» Umgebungen und Cluster-Nodes, sowie Benutzer und Pfade» Entwicklung stabiler Distributions- und Deploymentskripte
Großer Bedarf an einer Ausweitung der Anwendungsfälle» Hauptsächlich in der Projektvorlage, aber auch im Framework
SinnerSchrader Seite 2627.02.2007
Was ist der Projekt-Wizard?
Der Wizard ist ein Eclipse-Plugin zum Anlegen eines neuenSinnerSchrader-J2EE-Projekts.» In drei Dialogen werden die Eckpunkte des Projekts abgefragt
» Namen und Pfade» Verwendete Komponenten» Deployment-Szenario
» Er arbeitet eng mit der Projektvorlage zusammen» Platzhalter wie Namen und Pfade werden dynamisiert» Komponenten werden hinzugefügt oder entfernt, sowie konfiguriert» Das Deployment-Szenario wird in Form von Skripten, Konfigurationsfiles
und Build-Targets aufgesetztMehr Information zum Wizard gibt es hier:
» http://dev/Projekt-Wizard
SinnerSchrader Seite 2727.02.2007
Ziele des Wizards
Einheitlichkeit» Die meisten Eingaben besitzen einen Default oder sind abgeleitet
» Konventionen, von denen nicht abgewichen werden soll,können zunächst nicht verstellt werden
» Die Komponenten sind vorausgewählt» Durch die Projektvorlage entstehen einheitliche Strukturen
Geringere Fehleranfälligkeit» Die Einrichtungsarbeit (Namen, Komponenten, etc.) ist erprobt
Kostenersparnis» Der Wizard spart bis zu 5 Personentage in jedem neuen Projekt
und hat sich damit mitlerweile mehrfach amortisiert
SinnerSchrader Seite 2827.02.2007
Screenshots: Namen und Pfade (1)Namen» Projektfamilienkürzel» Projektfamilie» Projektnummer» Projektname» Technischer Name» Package-Name
Pfade» Lokaler Pfad» RepositoryTyp und -Pfad
SinnerSchrader Seite 2927.02.2007
Screenshots: Namen und Pfade (2)
Konventionen als Defaults:» Lediglich Projektfamilie,
Projektnummer und Projektname sind Pflicht
» Technischer Name, Package, Pfade und Repository ergeben sich über die Konvention
SinnerSchrader Seite 3027.02.2007
Screenshots: FeaturesEinfaches Hinzuwählen kompletter Funktionen» Komponenten werden
hinzugefügt» Konfigurationen werden
angepasst» Der Build-File wird
angepasst» Beispiel-Sourcen und
Kommentare werden hinzugefügt
SinnerSchrader Seite 3127.02.2007
Screenshots: Distributionen (1)Der Wizard unterstützt drei Distributionstypen» One-Click-Deployment» Binary-Distribution» Source-Distrbution
Dies deckt nahezu alle Praxisfälle abUnterstützung von:» Web-, App- und DB-
Clustern» Verschiedenen
Automatisierungsstufen
SinnerSchrader Seite 3227.02.2007
Screenshots: Distributionen (2)Im One-Click-Deployment sind nahezu alle Eigenschaften je Umgebung einstellbar» Anzahl Nodes im Cluster» Rechnernamen» Benutzernamen» Pfade» Ports
Sie bieten aber wiederum Defaults entsprechend der Konvention
SinnerSchrader Seite 3327.02.2007
03 dev-Site (Commerce-Wiki)
» Was ist die dev-Site?» Handbuch des Commerce-Frameworks» Glossar technischer Begriffe bei SinnerSchrader» Downloads und Schema-Locations» Standardisierung, Entwurfsmuster, Tipps und Tricks» Zukünftige Ziele
SinnerSchrader Seite 3427.02.2007
Was ist die dev-Site?Die dev-Site (CommerceWiki) ist ein MediaWiki, in erster Linie für das Handbuch des Commerce-Frameworks» MediaWiki ist das Wiki der WikiPedia» Schöne Optik und sehr gute Funktionen» Erweiterung für Handbücher
» Inhaltsverzeichnis» Navigation
Es soll die erste Anlaufstelle für Fragen sein, die im Zusammenhang mit dem Framework, typischer SinnerSchrader-Projekte und Konventionen stehen.Die URL ist denkbar einfach:
» http://devQualitätssicherung macht Nils. ;-)
SinnerSchrader Seite 3527.02.2007
SinnerSchrader Seite 3627.02.2007
Handbuch des Commerce-Frameworks
Das Handbuch besteht aus» Einer Einführung in das Commerce-Framework und typische
SinnerSchrader-J2EE-Projekte» Einem Tutorial „das erste Projekt“, das durch schnellen Erfolg das
Framework schmackhaft macht» Dokumentation aller Komponenten
» Ausführliche Erläuterungen» Diagramme, Grafiken» Direkt einsetzbare Beispiele» Tabellarische Referenzen etc.
SinnerSchrader Seite 3727.02.2007
SinnerSchrader Seite 3827.02.2007
SinnerSchrader Seite 3927.02.2007
Das Handbuch ist auf verschiedene Weise lesbar
Schnelle Cross-Referenz» MediaWiki bietet durch einen hohen Verlinkungsgrad beim Lesen Erklärungen
für auftauchende Begriffe» Suche nach Begriffen führt schnell zu den passenden Kapiteln
Sequentielles (herkömmliches) Lesen» Durch eine Erweiterung steht ein verlinktes Inhaltsverzeichnis wie in Word zur
Verfügung» Es kann Kapitel für Kapitel, Seite für Seite gelesen werden» Geeignet zum selbständigen Einarbeiten in die SinnerSchrader-Software-
MaterieDruckversion» Das gesamte Handbuch kann in linearisierter Form gedruckt werden
SinnerSchrader Seite 4027.02.2007
Zielgruppen des Handbuchs
Verschiedenste Zielgruppen» Neue Entwickler bei SinnerSchrader
» Handbuch führt komplett in die J2EE-Thematik bei SinnerSchrader ein
» Bird-View-Einführung und Mitmach-Tutorial» Handbuch komplett ausdruckbar „für die Bahn“
» Erfahrene Entwickler» Kapitel-Browsen, Suchen, Java-API-Doku und Glossar als Referenz
» Consultants und Kunden» Einführende Kapitel für Consultants und Kunden» Auflistung von Referenzprojekten
SinnerSchrader Seite 4127.02.2007
Glossar technischer Begriffe bei SinnerSchraderAlle Begriffe im Handbuch führen zunächst auf ein Glossar-Popup.Der Eintrag führt den interessierten Leser in das entsprechende Kapitel.Das Glossar kann aber auch durchstöbert, angeklickt oder durchsucht werden.Es vereinheitlicht alle Begriffe und sorgt für konsistente englische Übersetzungen.
SinnerSchrader Seite 4227.02.2007
Standardisierung und EntwurfsmusterDas Handbuchs enthält Kapitel zur Standardisierung» Allgemeine Muster des
Software-Designs in SinnerSchrader-J2EE-Projekten
» Spezielle Muster für die Arbeit mit dem Commerce-Framework
» Coding-Conventions» Tipps- und Tricks für
» Struts» Hibernate und Spring» HTTP/Servlet-API» uvm.
SinnerSchrader Seite 4327.02.2007
Downloads und Schema-Locations
Die dev-Site ist desweiteren Server für Downloads» Aktuelle Commerce-Framework-Versionen aller Branches
» V0, V1, V2 und V3 als Source, Binary und Dokumentation» Aber auch Verweis auf das Maven-Repository
» Die Projektvorlage und der Projekt-Wizard als DownloadDie Site enthält eine Eclipse-Update-Site für den WizardSie ist Schema-Location für diverse Konfigurationsfiles» Prozesskomponente, Typisierung, Rollen und Rechte, etc.
Sie ist Server für die umfangreiche Framework-API-Dokumentation
SinnerSchrader Seite 4427.02.2007
Zukünftige Ziele der dev-Site
Zusammenführung aller SinnerSchrader-Developer-Ressourcen in die dev-Site» Wiki-Tipps, filesrv3\rnd, filesrv8\s2i, common/docs» Ein attraktiver Ort als Einstieg, keine doppelten Ressourcen» Ein Technologiekreis-Ausschuss arbeitet bereits daran
Konsequente Einhaltung der Konventionenund höherer Nutzungsgrad der Vorlage» Weniger Fehler, weniger Aufwände, besserer Komponententausch
Ggf. Veröffentlichung der dev-Site» Interesse wecken bei Entscheidern und Technikern» Interesse wecken bei Software-Entwicklern
SinnerSchrader Seite 4527.02.2007
04 Wie geht’s weiter?
» Aktuelle Arbeit an Version 4» Eintägiger Workshop „Commerce-Framework“» Committer werden
SinnerSchrader Seite 4627.02.2007
Aktuelle Arbeit an Version 4
Aufteilung des Commerce-Frameworks in Komponenten» 12 einzeln wählbare Komponenten» weniger Abhängigkeiten zu Drittkomponenten» weniger Abhängigkeiten innerhalb des Frameworks» Überarbeitung des Projekt-Wizards und der Projektvorlage
SinnerSchrader Seite 4727.02.2007
Workshop zum Commerce-Framework
Voraussichtlich gibt‘s demnächst einen eintägigen Workshop zum Commerce-Framework» 3 Gruppen à 2 Personen arbeiten zusammen an einem Projekt
» Pair-Programming und offene Diskussion» 3 Teilsysteme: Präsentation, Geschäftslogik, Warenwirtschaft» Intensives Kennenlernen der wichtigsten Framework-Funktionen
SinnerSchrader Seite 4827.02.2007
Committer werden
Jeder kann mitmachen!» Neue Lösungen umsetzen und ins Framework integrieren» Vorhandene Projektlösungen ans Framework übergeben, sofern
eindeutig Allgemeinnutzen» Mehr Infos zum Mitmachen:
» http://dev/Releasemanagement» [email protected]
SinnerSchraderNeueInformatik
SinnerSchrader
Thomas [email protected]. 49.40.80 81 69 - 832SinnerSchrader Deutschland GmbHVölckersstraße 38, 22765 Hamburg
Vielen Dank.