Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Gerd Lehmann Geändert vor über 10 Jahren
1
SinnerSchraderNeueInformatik SinnerSchrader Hamburg, 27.02.2007 Autor: Thomas Jacob TECH-TALK Commerce-Framework, Projektvorlage, Projekt-Wizard, dev-Site
2
SinnerSchrader 27.02.2007 Seite 2 » Agenda 01 Commerce-Framework 02 Projektvorlage und Projekt-Wizard 03dev-Site 04Wie geht’s weiter?
3
SinnerSchrader 27.02.2007 Seite 3 01 Commerce-Framework » Was ist das Commerce-Framework? » Komponenten des Frameworks » Ein bisschen Statistik
4
SinnerSchrader 27.02.2007 Seite 4 Was ist das Commerce-Framework? ? ? ? ? ? ? ? ? ? ? ? ? » Welche Vorstellung habt ihr? » Was habt ihr gehört? » Was erwartet ihr? Was befürchtet ihr? Commerce Framework buh!
5
SinnerSchrader 27.02.2007 Seite 5 Was ist das Commerce-Framework? Das Commerce-Framework ist ein Baukasten wiederverwendbarer Java-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).
6
SinnerSchrader 27.02.2007 Seite 6 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
7
SinnerSchrader 27.02.2007 Seite 7 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
8
SinnerSchrader 27.02.2007 Seite 8 Überblick über die Komponenten des Commerce-Frameworks Formularprozesse Struts on RailsRewrite-Engine Formularvalidierung Präsentation Mailversand Dateitransfer Excel und CSV Web-Services www Schnittstellen ProdukteBenutzerBestellungen Shop-Logik Administration Administrationsoberfläche
9
SinnerSchrader 27.02.2007 Seite 9 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: Es wird eine Klasse und Tabelle namens Media generiert Produkte können bestellt werden Das Framework bietet verschiedene Attributtypen Die Einstellungen sorgen für Konsistenz zwischen dem Datenbankmodell und der Validierung
10
SinnerSchrader 27.02.2007 Seite 10 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 { } <column name="ean" not-null="false" length="32" index="Media_ean"/> <key column="media" foreign-key="MediaKeyword_media"/> [...]
11
SinnerSchrader 27.02.2007 Seite 11 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)
12
SinnerSchrader 27.02.2007 Seite 12 Shop-Komponenten: Benutzer- und Bestellmanagement Benutzermanagement » 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
13
SinnerSchrader 27.02.2007 Seite 13 Schnittstellenkomponenten: Dateitransfer Die 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
14
SinnerSchrader 27.02.2007 Seite 14 Schnittstellenkomponenten: Excel- und CSV-Import und -Export Import 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
15
SinnerSchrader 27.02.2007 Seite 15 Schnittstellenkomponenten: Mailversand Versand 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
16
SinnerSchrader 27.02.2007 Seite 16 Präsentationskomponenten: Formularprozesse Die 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)
17
SinnerSchrader 27.02.2007 Seite 17 Präsentationskomponenten: Suchmaschinenoptimierung Technische URLs werden automatisch in gut lesbare und 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
18
SinnerSchrader 27.02.2007 Seite 18 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
19
SinnerSchrader 27.02.2007 Seite 19 Präsentationskomponenten: Struts on Rails (2) Action-Klasse ohne RailsAction-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 Klasse angesprochen, JSPs über den Pfad. Eine Konfiguration entfällt! Genertics übermitteln in der Methode bereits die richtige Formklasse
20
SinnerSchrader 27.02.2007 Seite 20 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-Wizard Technologie: JavaServer Faces
21
SinnerSchrader 27.02.2007 Seite 21 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.
22
SinnerSchrader 27.02.2007 Seite 22 02 Projektvorlage und Wizard » Was ist die Projektvorlage? » Probleme der Projektvorlage » Der Projekt-Wizard
23
SinnerSchrader 27.02.2007 Seite 23 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 Upgrade Man 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.
24
SinnerSchrader 27.02.2007 Seite 24 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
25
SinnerSchrader 27.02.2007 Seite 25 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
26
SinnerSchrader 27.02.2007 Seite 26 Was ist der Projekt-Wizard? Der Wizard ist ein Eclipse-Plugin zum Anlegen eines neuen SinnerSchrader-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 aufgesetzt Mehr Information zum Wizard gibt es hier: » http://dev/Projekt-Wizard
27
SinnerSchrader 27.02.2007 Seite 27 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
28
SinnerSchrader 27.02.2007 Seite 28 Screenshots: Namen und Pfade (1) Namen » Projektfamilienkürzel » Projektfamilie » Projektnummer » Projektname » Technischer Name » Package-Name Pfade » Lokaler Pfad » RepositoryTyp und -Pfad
29
SinnerSchrader 27.02.2007 Seite 29 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
30
SinnerSchrader 27.02.2007 Seite 30 Screenshots: Features Einfaches Hinzuwählen kompletter Funktionen » Komponenten werden hinzugefügt » Konfigurationen werden angepasst » Der Build-File wird angepasst » Beispiel-Sourcen und Kommentare werden hinzugefügt
31
SinnerSchrader 27.02.2007 Seite 31 Screenshots: Distributionen (1) Der Wizard unterstützt drei Distributionstypen » One-Click-Deployment » Binary-Distribution » Source-Distrbution Dies deckt nahezu alle Praxisfälle ab Unterstützung von: » Web-, App- und DB- Clustern » Verschiedenen Automatisierungsstufen
32
SinnerSchrader 27.02.2007 Seite 32 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
33
SinnerSchrader 27.02.2007 Seite 33 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
34
SinnerSchrader 27.02.2007 Seite 34 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://dev Qualitätssicherung macht Nils. ;-)
35
SinnerSchrader 27.02.2007 Seite 35
36
SinnerSchrader 27.02.2007 Seite 36 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.
37
SinnerSchrader 27.02.2007 Seite 37
38
SinnerSchrader 27.02.2007 Seite 38
39
SinnerSchrader 27.02.2007 Seite 39 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-Materie Druckversion » Das gesamte Handbuch kann in linearisierter Form gedruckt werden
40
SinnerSchrader 27.02.2007 Seite 40 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
41
SinnerSchrader 27.02.2007 Seite 41 Glossar technischer Begriffe bei SinnerSchrader Alle 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.
42
SinnerSchrader 27.02.2007 Seite 42 Standardisierung und Entwurfsmuster Das 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.
43
SinnerSchrader 27.02.2007 Seite 43 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 Download Die Site enthält eine Eclipse-Update-Site für den Wizard Sie ist Schema-Location für diverse Konfigurationsfiles » Prozesskomponente, Typisierung, Rollen und Rechte, etc. Sie ist Server für die umfangreiche Framework-API-Dokumentation
44
SinnerSchrader 27.02.2007 Seite 44 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 Konventionen und 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
45
SinnerSchrader 27.02.2007 Seite 45 04 Wie geht’s weiter? » Aktuelle Arbeit an Version 4 » Eintägiger Workshop „Commerce-Framework“ » Committer werden
46
SinnerSchrader 27.02.2007 Seite 46 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
47
SinnerSchrader 27.02.2007 Seite 47 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
48
SinnerSchrader 27.02.2007 Seite 48 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 » t.jacob@sinnerschrader.de
49
SinnerSchraderNeueInformatik SinnerSchrader Thomas Jacob t.jacob@sinnerschrader.de T. 49.40.80 81 69 - 832 SinnerSchrader Deutschland GmbH Völckersstraße 38, 22765 Hamburg Vielen Dank.
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.