e-Procurement mit JBoss EJB Server und Apache Cocoon 2 1 e-Procurement mit JBoss EJB Server und Apache Cocoon 2 eProcurement System KUNDE Geschäftsidee Realisierung eProcurement Multivendor Prozesse Katalog nach BMECat Stammdaten Produktdatenaustausch e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 2 1 Verwendete Technologien • • • • • • • • Servlet JSP EJB JMS JDBC JavaMail JNDI ... Æ Fast gesamter Umfang der J2EE-Technologien + zusätzlich XML Technologien (XSP, XSLT, ...) J2EE + XML e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 3 © 2001-2002 Orientation in Objects GmbH 4 Überblick • • • • • • • • Software Entwicklungsumgebung Application Server XML based Web Development Cocoon 2.0 Systemarchitektur Aspekte der Client Architektur Aspekte der Server Architektur Fazit e-Procurement mit JBoss EJB Server und Apache Cocoon 2 2 SEU • • • • • • Xemacs (Code-Generatoren mit Perl ??Live-Demo Æ EB coden aus vorgefertigtem Data mit Deployment??) Ant (Projekttemplate) J2EE Deployment JUnit CVS (evtl. Auswertungstools, Online Browsing) Bugzilla (auch hier Auswertung Æ Entwicklung gefixter Bugs) © 2001-2002 Orientation in Objects GmbH e-Procurement mit JBoss EJB Server und Apache Cocoon 2 5 Wechsel von make zu Ant make Ant Build-Dauer > 20 min < 2 min Multithreading nein ja Platform (Portabilität) OS-spezifisch Java Batch Integriert: CVS, JUnit, Reports; Validierbar; Erweiterbar (eigene Tasks) Flexibilität e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 6 3 Jakarta Ant als Build-Tool - Standard Targets • • • • • • • usage compile package javadoc test clean deploy • dist - zeigt an welche Targets verfügbar sind - übersetzen der Java Quell Dateien - Java Archive erstellen - Dokumentation erstellen - mögliche JUnit Tests starten - löscht alle erzeugten Dateien (außer JavaDoc) - kopiert das Java Archive in die korrekten Verzeichnisse - erstellt eine auslieferbare Version mit allen benötigten Verzeichnissen e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 7 Enterprise Project Template Kann über CVS bezogen werden : • • • • • bin docs libs src web - ausführbare Dateien, Skripte - Dokumentation und JavaDoc - benötigte Java Archive (JAR‘s) - Java Quellen und Deployment Deskriptoren - Quell- bzw. Konfigurationsdateien für Web Front End Befindet sich nicht im CVS : • • build dist - erzeugte Dateien, jederzeit neu herstellbar - Zielverzeichnis für Distribution e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 8 4 J2EE Packaging + related files (Image-Dateien, Server-Utilities, ...) + deployment descriptor (XML) ............. Enterprise Bean Component (JAR) Web Component (WAR) Application Client Component (JAR) ............. J2EE component J2EE component J2EE Application (Module) J2EE Application Final Enterprise Solution (EAR) e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 9 JUnit als Test-Framework für EJBs • Integration mit Ant (XML-Report Generierung und Transformation durch XSL) • Suiten-Bildung (Create-, Ops-, Remove-Testsuiten) • Automatisierte Repository Checks iVm. Nightly Builds • Wichtig für Portierung auf anderen Application Server • Anzahl Test Cases: ~ 170 e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 10 5 JUnit Reportgenerierung bei Ant TEST-...TestClassificationSystem.xml TEST-...TestClassificationSystem.xml TEST-....xml TESTS-TestSuites.xml e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 11 © 2001-2002 Orientation in Objects GmbH 12 JUnit Reportgenerierung bei Ant TESTS-TestSuites.xml + ANT XSL Stylesheets e-Procurement mit JBoss EJB Server und Apache Cocoon 2 6 Bugzilla • • • • Bug-Reporting Tool Open Source Bekannt durch Mozilla (Netscape Browser Grundstock) Kunde testet mit Æ Minimierung Test-Aufwand Entwickler – Kostensenkung – Bessere Fehlerbeschreibungen – Prioritäten durch Kunde bestimmt • Auswertungen für Projektleitung/Management • Verwaltung mehrerer Projekte möglich – Sichtbarkeit einschränkbar e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 13 © 2001-2002 Orientation in Objects GmbH 14 Überblick • • • • • • • • Software Entwicklungsumgebung Application Server XML based Web Development Cocoon 2.0 Systemarchitektur Aspekte der Client Architektur Aspekte der Server Architektur Fazit e-Procurement mit JBoss EJB Server und Apache Cocoon 2 7 Migration zu JBoss • Warum – Bisher: Kommerzieller Application Server für Portal – Jetzt: Umwandlung von Portal zur Massenlösung -> Lizenzkosten++ • -> JBoss – Aktuelle Version: JBoss 2.4.3 – Persistenz • Nutzung server-spezifisches Feature (Nested Fields) • Java-JDBC-SQL Type Mapping • Was mußte getan werden? – Server-spezifische Deskriptoren • Finder • DB-Mapping • Resource Manager Connection Factories • Vorteile: – Verwaltung der Runtime des Komplett-Systems durch eigenes CVS ÆMinimierung Installationsaufwand © 2001-2002 Orientation in Objects GmbH e-Procurement mit JBoss EJB Server und Apache Cocoon 2 15 JBoss Application Server • • e-Procurement mit JBoss EJB Server und Apache Cocoon 2 • Open Source Vollständiger J2EE Stack Quelle: www.jboss.org • • • • • • • • • • • • JBossServer JBossMQ JBossCMP JBossCX JBossTX JBossSX JBossMX JBossSOAP JBossTest JBossMail JBossDoc JBossMGT © 2001-2002 Orientation in Objects GmbH 16 8 Problem: grosse Attributmenge Unternehmen unternehmerID name vorname strasse unternehmenID name plz vorname strasse ... ort ... © 2001-2002 Orientation in Objects GmbH e-Procurement mit JBoss EJB Server und Apache Cocoon 2 17 Nested Fields Feature <<Entity Bean>> Unternehmen unternehmenData <<ValueObject>> UnternehmenData unternehmenID lieferAdresse rechnungsAdresse ... unternehmenID name unternehmenID name e-Procurement mit JBoss EJB Server und Apache Cocoon 2 Adresse name vorname strasse plz ort vorname vorname strasse strasse ... ... © 2001-2002 Orientation in Objects GmbH 18 9 Auszug aus Deployment Descriptor • EJB Standard-Deskriptor <entity> <ejb-name>Unternehmen</ejb-name> <home>de.oio...UnternehmenHome</home> <remote>de.oio...Unternehmen</remote> <ejb-class> de.oio...UnternehmenBean </ejb-class> <persistence-type>Container</persistence-type> <cmp-field> <field-name>unternehmenID</field-name> </cmp-field> <cmp-field> <field-name>data</field-name> </cmp-field> </entity> • Server-spezifischer Deskriptor <entity> <ejb-name>Unternehmen</ejb-name> <cmp-field> <field-name>data.firma</field-name> </cmp-field> <cmp-field> <field-name>data.adresse.strasse</field-name> </cmp-field> <cmp-field> <field-name>data.adresse.plz</field-name> </cmp-field> <cmp-field> <field-name>data.adresse.ort</field-name> </cmp-field> <cmp-field> <field-name>data.website</field-name> </cmp-field> ... </entity> e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 19 © 2001-2002 Orientation in Objects GmbH 20 Überblick • • • • • • • • Software Entwicklungsumgebung Application Server XML based Web Development Cocoon 2.0 Systemarchitektur Aspekte der Client Architektur Aspekte der Server Architektur Fazit e-Procurement mit JBoss EJB Server und Apache Cocoon 2 10 Transformation mit XSLT ... <ARTIKEL> <ARTIKEL_ID>10021</ARTIKEL_ID> <NAME>Bananenkarton</NAME> <ORDER_UNIT>Stück</ORDER_UNIT> </ARTIKEL> ... XML-Quelle ... <xsl:template match=“ARTIKEL"> <b><xsl:value-of select="NAME"/></b>, OrderUnit: <xsl:value-of select=„ORDER_UNIT"/><br/> </xsl:template> XSL-Stylesheet ... <b>Bananenkarton</b>, OrderUnit: Stück<br/> Output © 2001-2002 Orientation in Objects GmbH e-Procurement mit JBoss EJB Server und Apache Cocoon 2 21 XSLT Prozessor csv.xsl html.xsl txt.xsl news.html docbook.xsl news.txt news.xml XSLT Prozessor news.csv docbook.xml e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 22 11 Idee: XSLT im Servlet Web Server Servlet Engine XSLT Prozessor XML XSL XSL Dokument Sheets Sheets e-Procurement mit JBoss EJB Server und Apache Cocoon 2 XSL XSL XSL Sheets Sheets Sheets © 2001-2002 Orientation in Objects GmbH 23 © 2001-2002 Orientation in Objects GmbH 24 Überblick • • • • • • • • Software Entwicklungsumgebung Application Server XML based Web Development Cocoon 2.0 Systemarchitektur Aspekte der Client Architektur Aspekte der Server Architektur Fazit e-Procurement mit JBoss EJB Server und Apache Cocoon 2 12 Cocoon - Pipeline Model HTML-Serialiser global2html.xsl article-standard.xsl article.xsp Generator Transformer Transformer Serialiser Serialiser Transformer Transformer Generator © 2001-2002 Orientation in Objects GmbH e-Procurement mit JBoss EJB Server und Apache Cocoon 2 25 Ablauf XSP mit SQL Query Page Filter Global XSP Generator XSLT Transformator XSLT Transformator XML Dokument Content View XML Dokument XML Dokument Filter View Daten Serializer Serializer Serializer XML Dokument XML Dokument HTML Dokument e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 26 13 Screenshot 1. ContentView e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 27 © 2001-2002 Orientation in Objects GmbH 28 Screenshot 2. Debug Pipe - FilterView e-Procurement mit JBoss EJB Server und Apache Cocoon 2 14 Screenshot HTML-Seite e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 29 Cocoon Views Client Client request ?cocoon-view= debug Cocoon e-Procurement mit JBoss EJB Server und Apache Cocoon 2 <map:view name="debug" from-label="debug"> <map:serialize type="xml"/> </map:view> <map:match pattern=".../*.xsp"> <map:act set="outpark"/> <map:act set="bkk"/> <map:generate type="serverpages" src=".../pages/{1}.xsp"/> <map:transform src=".../filter/ {1}-standard.xsl"/> <map:label name=„debug"/> <map:transform src=".../style/ global2html.xsl"/> <map:serialize type="html"/> </map:match> © 2001-2002 Orientation in Objects GmbH 30 15 Integration JSP / XSP: Ziel B2B-Lösung Catalog-Lösung Apache Webserver JSP JSP Tomcat Servlet-Engine JSP JSP MS-SQL-Server e-Procurement mit JBoss EJB Server und Apache Cocoon 2 XSP XSP Cocoon XSP XSP MS-SQL-Server © 2001-2002 Orientation in Objects GmbH 31 © 2001-2002 Orientation in Objects GmbH 32 Überblick • • • • • • • • Software Entwicklungsumgebung Application Server XML based Web Development Cocoon 2.0 Systemarchitektur Aspekte der Client Architektur Aspekte der Server Architektur Fazit e-Procurement mit JBoss EJB Server und Apache Cocoon 2 16 Kombinierte Architektur Web Client XSP XSP Kommandozeile XSP XSP Cocoon Cocoon XSP XSP Fremdsystem GUI Client XSP XSP EJB Taglib Actions EJB /Taglib Application Server articel.xsp Kunde ParserBean ParserBean Bestellung Bestellung Bestellung ESQL Taglib Datenbank e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 33 Trennung von Lese- und Schreibzugriffen XSP editarticle Action Änderungen / Schreibzugriffe (transaktional) Anzeige in der View per eSQL TagLib SB ArticleService EB Article Artikel Tabelle e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 34 17 Aufgabenverteilung Enterprise JavaBeans • Geschäftsobjekte • Transaktionen • Umwandlung zwischen XML und Objekten Cocoon • Präsentation • Reine Abfragen • Abfrage von Massendaten (mit SQL) • XML Dokumente erzeugen (z.B. BMECat Katalog) © 2001-2002 Orientation in Objects GmbH e-Procurement mit JBoss EJB Server und Apache Cocoon 2 35 Logische Architektur Client 2. Generation Client 1. Generation JSP XSP Bean SB BestellService Client 3. Generation Action Präsenation bzw. Präsentationslogik HelperBean Prozesse über mehrere Geschäftsobjekte SB EinkaeuferService SB BestellungService SB PositionService Geschäftsobjekte Funktionen EB Einkäufer EB Bestellung EB Position Geschäftsobjekte Daten Einkaeufer Tabelle Bestellung Tabelle e-Procurement mit JBoss EJB Server und Apache Cocoon 2 Position Tabelle Datenbank © 2001-2002 Orientation in Objects GmbH 36 18 Überblick • • • • • • • • Software Entwicklungsumgebung Application Server XML based Web Development Cocoon 2.0 Systemarchitektur Aspekte der Client Architektur Aspekte der Server Architektur Fazit © 2001-2002 Orientation in Objects GmbH e-Procurement mit JBoss EJB Server und Apache Cocoon 2 37 Erweiterte Drei-Schichten-Architektur Logik Content Businesslogik Daten e-Procurement mit JBoss EJB Server und Apache Cocoon 2 Style Präsentationsschicht z.B. Cocoon mit XML,XSL und XSP Anwendungsschicht z.B. EJB oder CORBA Persistenzschicht z.B. RDBMS od. ODBMS © 2001-2002 Orientation in Objects GmbH 38 19 Cocoon-Actions Front Controller Client Client request ?cocoon-action= warenkorb-bestellen Application Server Warenkorb Warenkorb Cocoon JBoss get delegate <map:action name="warenkorbbestellen" src="de.oio.outpark. cocoon.actions.Waren KorbBestellenAction" /> Bestellung Bestellung Position Position WarenKorb BestellenAction Command / Action e-Procurement mit JBoss EJB Server und Apache Cocoon 2 create create MS SQL Server © 2001-2002 Orientation in Objects GmbH 39 © 2001-2002 Orientation in Objects GmbH 40 Sequenzdiagramm für MVC e-Procurement mit JBoss EJB Server und Apache Cocoon 2 20 XSP-Frac Includer - Beispiel JSP XSP XSP-Frac e-Procurement mit JBoss EJB Server und Apache Cocoon 2 XSP-Frac © 2001-2002 Orientation in Objects GmbH 41 © 2001-2002 Orientation in Objects GmbH 42 Screenshot für einen Include e-Procurement mit JBoss EJB Server und Apache Cocoon 2 21 Custom Tag Cocoon Client Client request <xsp:page language="java" Custom TagLib xmlns:catalog="http://www.oio.de/ catalog"> </catalog:get-warenkorb> SQLTransformer Catalog lib </xsp:page> e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 43 © 2001-2002 Orientation in Objects GmbH 44 Überblick • • • • • • • • Software Entwicklungsumgebung Application Server XML based Web Development Cocoon 2.0 Systemarchitektur Aspekte der Client Architektur Aspekte der Server Architektur Fazit e-Procurement mit JBoss EJB Server und Apache Cocoon 2 22 J2EE Patterns • • • • • • • Composite View View Helper (mit Java Beans als Helper Klassen) Value Objects Service Locator Session Facade Value List Handler (Katalog-Suche mit je 10 Treffern) Service Activator (Æ MDB) © 2001-2002 Orientation in Objects GmbH e-Procurement mit JBoss EJB Server und Apache Cocoon 2 45 Value Objects Cocoon XSP PersonData (JavaBean) JBoss (EJB Server) PersonBean (EntityBean) PERSON DB e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 46 23 Zugriff ohne Value Objects e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 47 © 2001-2002 Orientation in Objects GmbH 48 Zugriff mit Value Objects e-Procurement mit JBoss EJB Server und Apache Cocoon 2 24 Mailtext-Generierung mit XSLT ... <xsl:output method="text"/> <xsl:template match="parameters"> Sehr geehrter <xsl:value-of select="parameter[@name='anrede']"/> <xsl:value-of select="parameter[@name='name']"/> für Sie wurde wie folgt ein Account eingerichtet: Username: <xsl:value-of select="parameter[@name='username']"/> Passwort: <xsl:value-of select="parameter[@name='passwort']"/> </xsl:template> <<Session Bean>> MailGenerator XSL XSL <parameters> <parameter name="anrede"> Herr </parameter> <parameter name="name"> Müller </parameter> <parameter name="username"> hmueller </parameter> <parameter name="passwort"> jdB3J21b </parameter> </parameters> buildParameterList() XSL getStyleSheet() getMailData() EJB © 2001-2002 Orientation in Objects GmbH e-Procurement mit JBoss EJB Server und Apache Cocoon 2 49 Ersatz für Batchprozesse JBoss Application Server sendLocalDataToWebmiles() WebmilesEJB getLocalData WebmilesTimer e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 50 25 Szenario für asynchrone Benachrichtigung • • Beispiel: Information von Lieferanten über neue Bestellung Problem: – Bei grossen Bestellungen (Sammelbestellungen) müssen evtl. viele Lieferanten benachrichtigt werden – Blockierung des Clients – Benachrichtigung stellt sich für den User des Systems als autonomen Prozess dar. • Lösung: – Externer JMS Client (bei Application Servern ohne Unterstützung für MessageDrivenBeans) – MDB © 2001-2002 Orientation in Objects GmbH e-Procurement mit JBoss EJB Server und Apache Cocoon 2 51 Szenario mit integriertem MDB Client BestellungServiceBean BestellungServiceBean BestellungMailBean (MDB) MailServer Bestellung Lieferant1 Lieferant1 Position Position Lieferant2 JMS- Provider e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 52 26 Vergleich Vorher – Nachher e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 53 Entstandener zusätzlicher Aufwand • Implementierung onMessage() – kein zusätzlicher Aufwand aufgrund • des bereits implementierten MessageListener Interface • eines sowohl Client- als auch Server-seitig genutzten SessionBean Creators • des J2EE Patterns Service Locator • Deployment MessageDrivenBean – Erzeugung eines Deployment Descriptors – Konfiguration des Application Servers für den Zugriff auf das neue Topic Fazit: Gesamtaufwand < 1h e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 54 27 Versenden von PDF-Dokumenten Brief Versender EJB Server Container AusschreibungService Topic JMS Client Ausschreibung2fo.xsl JMS Client Xalan FOP FOP GIFs JavaMail © 2001-2002 Orientation in Objects GmbH e-Procurement mit JBoss EJB Server und Apache Cocoon 2 55 Transaktionsklammern beim BMECat Import • Problem: zu importierender Katalog kann sehr gross sein • Lösungsansatz: – nicht um kompletten Katalog eine Transaktion legen, sondern um einzelne logische Bestandteile des Kataloges <?xml version="1.0" encoding="ISO-8859-1"?> <!-- DOCTYPE BMECAT SYSTEM "bmecat_new_catalog.dtd" --> <BMECAT version="1.01"> <HEADER> <CATALOG> <CATALOG_ID>eClass40</CATALOG_ID> ... </CATALOG> <BUYER> ... </BUYER> <SUPPLIER> ... </SUPPLIER> </HEADER> <T_NEW_CATALOG> <CATALOG_GROUP_SYSTEM> <GROUP_ID>23170204</GROUP_ID> </CATALOG_GROUP_SYSTEM> e-Procurement mit JBoss EJB Server und Apache Cocoon 2 <ARTICLE mode="new"> <SUPPLIER_AID>6ES7031-0AA00-8AB0</SUPPLIER_AID> <ARTICLE_DETAILS> ... </ARTICLE_DETAILS> <ARTICLE_PRICE_DETAILS> <ARTICLE_PRICE> ... </ARTICLE_PRICE> ... </ARTICLE_PRICE_DETAILS> </ARTICLE> <ARTICLE_TO_CATALOGGROUP_MAP> <ART_ID>6ES7031-0AA00-8AB0</ART_ID> <CATALOG_GROUP_ID> 23170204</CATALOG_GROUP_ID> </ARTICLE_TO_CATALOGGROUP_MAP> </T_NEW_CATALOG> </BMECAT> © 2001-2002 Orientation in Objects GmbH 56 28 Überblick • • • • • • • • Software Entwicklungsumgebung Application Server XML based Web Development Cocoon 2.0 Systemarchitektur Aspekte der Client Architektur Aspekte der Server Architektur Fazit e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 57 © 2001-2002 Orientation in Objects GmbH 58 Fragen e-Procurement mit JBoss EJB Server und Apache Cocoon 2 29 Generischer BAPI Aufruf mit Cocoon Formular XML Dokument BAPI Name BAPI Meta Daten Formular BAPI ausführen SAPSystem BAPI Rückgabe XML Dokument Formular e-Procurement mit JBoss EJB Server und Apache Cocoon 2 © 2001-2002 Orientation in Objects GmbH 59 Vielen Dank für Ihre Aufmerksamkeit! Torben Jäger Kristian Köhler [email protected] [email protected] e-Procurement mit JBoss EJB Server und Apache Cocoon 2 http://www.oio.de © 2001-2002 Orientation in Objects GmbH 60 30