EAI mit Java und XML Christian Dedek / Andreas Spall Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de 1 Was ist EAI XML und Java als Lösungsansatz 2 1 What is EAI • „EAI involves sharing information between disparate applications that never were designed to work together“ Christopher Curry (http://www.diku.dk/teaching/2001e/e01.718/Lectures/EAIandXML-1.pdf) 3 EAI mit Java und XML © 2004 Orientation in Objects GmbH Anforderungen für globale Prozesse Kommunikation über Internet standardisiert spontan einfach sicher Web Interface EAI mit Java und XML 4 © 2004 Orientation in Objects GmbH 2 Daten Integration System B System A Daten B Daten Daten Kopie Daten B Daten B •Userdaten •Redundanz •Konflikte •Replikation •Master/Slave •Datenabgleich EAI mit Java und XML 5 © 2004 Orientation in Objects GmbH Funktionale Integration System B System A Anfrage nach Daten Antwort Bitte um Änderung Daten Daten Antwort Daten B Just in Time! 6 EAI mit Java und XML © 2004 Orientation in Objects GmbH 3 Transaktionale Integration System B System A Anfrage nach Daten Antwort Bitte um Änderung Daten Daten Antwort Daten B Transaktions Koordinator 7 EAI mit Java und XML © 2004 Orientation in Objects GmbH Datenrepräsentation mit XML 8 4 XML • • • • Ursprung in SGML, quasi eine Art SGML light ! HTML wurde zeitlich vor XML entwickelt ! Eine Markupsprache mit <tags> Besteht aus Textzeichen (Zeichensatz bestimmbar, z.B. Unicode) • Hierarchisch aufgebaut • Elemente, Attribute, Entitäten bilden die Hierarchie 9 EAI mit Java und XML © 2004 Orientation in Objects GmbH 3 Teilung von XML Aufsplittung von Dokumenten Dokument z.B. Brief, Webpage, Datenbank Inhalt XML Struktur DTD Schema Präsentation CSS XSL XSLT 10 EAI mit Java und XML © 2004 Orientation in Objects GmbH 5 Der XML Laden openTRANS XLink Namespaces XForms XQuery BMECat XML DTD 1.0 Schema XSLT XPath SOAP XSL-FO XHTML ebXML 11 EAI mit Java und XML © 2004 Orientation in Objects GmbH Beispiel für eine DTD <!ELEMENT slideshow EMPTY> <!ATTLIST slideshow sources ENTITIES #REQUIRED> <!NOTATION gif SYSTEM "image/gif"> <!ENTITY pic1 SYSTEM "bild1.gif" NDATA gif > <!ENTITY pic2 SYSTEM "bild2.gif" NDATA gif > <!ENTITY pic3 SYSTEM "bild3.gif" NDATA gif > ... 12 EAI mit Java und XML © 2004 Orientation in Objects GmbH 6 Eigenschaften von W3C Schema • • • • • • • Syntax: XML Verarbeitung mit Standardmethoden (XSLT, …) Verwendung von Namespaces Viele Grunddatentypen (String, Integer, Float, Date, …) Strukturierung durch Vererbung und Gruppen Ableitung einfacher und komplexer Datentypen „Uniqueness“ für komplexe Werte Schlüssel und Referenzen 13 EAI mit Java und XML © 2004 Orientation in Objects GmbH Gemeinsames Datenmodell? System A System B System C 14 EAI mit Java und XML © 2004 Orientation in Objects GmbH 7 XSLT Prozessor csv.xsl html.xsl txt.xsl news.html docbook.xsl news.txt XSLT Prozessor news.xml news.cvs docbook.xml 15 EAI mit Java und XML © 2004 Orientation in Objects GmbH XSLT Prozessor (mit Bäumen) Stylesheet Datei Stylesheet XSLT Prozessor XML Datei Quelle Output Datei Output 16 EAI mit Java und XML © 2004 Orientation in Objects GmbH 8 XPath • • • Sprache für das Addressieren von Teilen eines XML Dokumentes Wurde entworfen für XSLT und XPointer Enthält Funktionen für die Manipulation von Strings, Zahlen und Booleans 17 EAI mit Java und XML © 2004 Orientation in Objects GmbH Beispiel: child cdliste cd titel interpret cd hersteller cd titel interpret hersteller Kindknoten des Context Node werden adressiert 18 EAI mit Java und XML © 2004 Orientation in Objects GmbH 9 XSLT Prozessor opentrans2po.xsl XSLT Prozessor openTrans Bestellung . PurchaseOrder CreateFromData (Xalan, Saxon, ..) 19 EAI mit Java und XML © 2004 Orientation in Objects GmbH <?xml version = "1.0" encoding = "UTF-8"?> <!DOCTYPE ORDER SYSTEM "openTRANS_ORDER_1_0.dtd"> <ORDER version = "1.0" type = "standard"> <ORDER_HEADER> <ORDER_INFO> <ORDER_ID>PO1001</ORDER_ID> <ORDER_DATE>2002-05-13</ORDER_DATE> <ORDER_PARTIES> <BUYER_PARTY> <PARTY><PARTY_ID type = "buyer_specific">2030</PARTY_ID></PARTY> </BUYER_PARTY> <SUPPLIER_PARTY> <PARTY><PARTY_ID type = "buyer_specific">S517</PARTY_ID></PARTY> </SUPPLIER_PARTY> </ORDER_PARTIES> </ORDER_INFO> </ORDER_HEADER> <ORDER_ITEM_LIST> <ORDER_ITEM> <LINE_ITEM_ID>1</LINE_ITEM_ID> <ARTICLE_ID><SUPPLIER_AID>SK-500-SW</SUPPLIER_AID></ARTICLE_ID> <QUANTITY>10</QUANTITY> <ORDER_UNIT>C62</ORDER_UNIT> <ARTICLE_PRICE type = "net_list"> <PRICE_AMOUNT>5.80</PRICE_AMOUNT> <PRICE_LINE_AMOUNT>58.00</PRICE_LINE_AMOUNT> </ARTICLE_PRICE> </ORDER_ITEM> </ORDER_ITEM_LIST> <ORDER_SUMMARY> <TOTAL_ITEM_NUM>2</TOTAL_ITEM_NUM> <TOTAL_AMOUNT>378.00</TOTAL_AMOUNT> </ORDER_SUMMARY> </ORDER> 20 EAI mit Java und XML © 2004 Orientation in Objects GmbH 10 <?xml version="1.0" encoding="UTF-16"?> <sap:PurchaseOrder.CreateFromData xsi:schemaLocation="urn:sap-com:document:sap:business S:\Drafts\XML\eai-mit-xml\beispiele\sap-purc xmlns:sap="urn:sap-com:document:sap:business" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <PoHeader> <DOC_DATE>2002-05-13</DOC_DATE> <PURCH_ORG>2030</PURCH_ORG> <VENDOR>S517</VENDOR> <PO_NUMBER>PO1001</PO_NUMBER> </PoHeader> <PoItems> <item> <PO_ITEM>1</PO_ITEM> <MATERIAL>SK-500-SW</MATERIAL> <UNIT>C62</UNIT> <NET_PRICE>5.80</NET_PRICE> </item> <item> <PO_ITEM>2</PO_ITEM> <MATERIAL>SK-601-RO</MATERIAL> <UNIT>C62</UNIT> <NET_PRICE>320.00</NET_PRICE> </item> </PoItems> <PoItemSchedules> <item> <PO_ITEM>1</PO_ITEM> <QUANTITY>10</QUANTITY> </item> <item> <PO_ITEM>2</PO_ITEM> <QUANTITY>1</QUANTITY> </item> </PoItemSchedules> 21 </sap:PurchaseOrder.CreateFromData> EAI mit Java und XML © 2004 Orientation in Objects GmbH Mapping <ORDER_ITEM> <LINE_ITEM_ID>1</LINE_ITEM_ID> <ARTICLE_ID><SUPPLIER_AID>SK-500-SW</SUPPLIER_AID></ARTICLE_ID> <QUANTITY>10</QUANTITY> <ORDER_UNIT>C62</ORDER_UNIT> <ARTICLE_PRICE type = "net_list"> <PRICE_AMOUNT>5.80</PRICE_AMOUNT> <PRICE_LINE_AMOUNT>58.00</PRICE_LINE_AMOUNT> </ARTICLE_PRICE> </ORDER_ITEM> <PoItems> <item> <PO_ITEM>1</PO_ITEM> <MATERIAL>SK-500-SW</MATERIAL> <UNIT>C62</UNIT> <NET_PRICE>5.80</NET_PRICE> </item> </PoItems> <PoItemSchedules> <item> <PO_ITEM>1</PO_ITEM> <QUANTITY>10</QUANTITY> </item> </PoItemSchedules> 22 EAI mit Java und XML © 2004 Orientation in Objects GmbH 11 Regelbasierte Konvertierung <xsl:template match="ORDER_ITEM_LIST"> <PoItems> <xsl:apply-templates mode="item"/> </PoItems> <PoItemSchedules> <xsl:apply-templates mode="shedules"/> </PoItemSchedules> </xsl:template> openTRANS SAP <xsl:template match="ORDER_ITEM" mode="item"> <item> <PO_ITEM><xsl:value-of select="LINE_ITEM_ID"/></PO_ITEM> <MATERIAL><xsl:value-of select="ARTICLE_ID/SUPPLIER_AID"/></MATERIAL> <UNIT><xsl:value-of select="ORDER_UNIT"/></UNIT> <xsl:apply-templates/> </item> </xsl:template> <xsl:template match="ORDER_ITEM" mode="shedules"> <item> <PO_ITEM><xsl:value-of select="LINE_ITEM_ID"/></PO_ITEM> <QUANTITY><xsl:value-of select="QUANTITY"/></QUANTITY> </item> </xsl:template> <xsl:template match="ARTICLE_PRICE[@type='net_list']"> <NET_PRICE><xsl:value-of select="PRICE_AMOUNT"/></NET_PRICE> EAI mit Java und XML © 2004 Orientation in Objects GmbH </xsl:template> 23 XSL • Besteht aus zwei Teilen: – Der Transformationssprache XSLT • Ändern der Struktur • Hinzufügen von Formatierungsanweisungen – XML Vokabular für Formatierungen • Darstellungsform XSL Transformation XSL Formatierer PDF ... Quellbaum Zielbaum 24 EAI mit Java und XML © 2004 Orientation in Objects GmbH 12 Document Object Model 25 EAI mit Java und XML © 2004 Orientation in Objects GmbH Simple API for XML startElement( „kunde“) <warenkorb> <kunde>5873</kunde> <position nr="1“> <artikel nr="4501"> <beschreibung>Ltscher</beschreibung> </artikel> </position> <position nr="2" menge="2"> <artikel nr="5860"> <beschreibung>Earl Grey</beschreibung> </artikel> </position> </warenkorb> Handler endElement( „kunde“) 26 EAI mit Java und XML © 2004 Orientation in Objects GmbH 13 Konvertierung aufwendig X XML Einfach XML X 27 EAI mit Java und XML © 2004 Orientation in Objects GmbH Konvertierung nach XML stylesheet Quelle non XML Konverter -> XML (DOM/SAX) XSLT Prozessor generisches XML Zielformat XML 28 EAI mit Java und XML © 2004 Orientation in Objects GmbH 14 Comma Separated Values CSV CSV Export Nr;Bezeichnung;Menge;Preis 1;Dauerlutscher;10;1,99 2;Kaffee;2;3,8 3;Kuli;100;0,8 29 EAI mit Java und XML © 2004 Orientation in Objects GmbH EAI mit Java und XML © 2004 Orientation in Objects GmbH Konverter (XMLSpy) 30 15 Transformation großer Dokumente • Saxon verwenden • Inhalte indizieren (xsl:key) • Problem vom Hauptspeicher zur Rechenzeit und umgekehrt verschieben • Extreme Gruppierungen in Java durchführen • for:each anstatt apply-templates (Vorsicht schlechtes Design) • Erst für die Transformation nicht benötigte Elemente und Attribute ausfiltern • Struktur der Dokumente betrachten • Mehrstufige Verarbeitung 31 EAI mit Java und XML © 2004 Orientation in Objects GmbH EAI mit Java und XML © 2004 Orientation in Objects GmbH 32 16 33 EAI mit Java und XML © 2004 Orientation in Objects GmbH EAI mit Java und XML © 2004 Orientation in Objects GmbH 34 17 Validierung <?xml version="1.0" encoding="ISO-8859-1"?> <sap:PurchaseOrder.CreateFromData xmlns:sap="urn:sap-com:document:sap:business" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:sap-com:document:sap:business S:\Drafts\XML\eai-mit-xml\beispiele\sap-purchase-order\query.xml"> <PoHeader></PoHeader> <PoItems></PoItems> <PoItemSchedules></PoItemSchedules> </sap:PurchaseOrder.CreateFromData> query.xml Schema mit 115 KByte! 35 EAI mit Java und XML © 2004 Orientation in Objects GmbH XML Relational Mapping 1 1 1 n Parser 1 n 1 n XML 36 EAI mit Java und XML © 2004 Orientation in Objects GmbH 18 Interorganisationaler Datentransfer mit XML XML-Struktur DTD DTD XML-Struktur validieren validieren Da ten ex po rt validieren DBMS DTD-Austausch XML XML DBMS o xp ne e t Da output TRANSFORMATOR Datenimport XML rt XSL 37 EAI mit Java und XML © 2004 Orientation in Objects GmbH Grundidee Code Generation DTD XML Schema Code Generation Klasse valid gemäß Instanz von Marshall XML Dokument Objekt Unmarshall 38 EAI mit Java und XML © 2004 Orientation in Objects GmbH 19 Kunde A HTTP Beispielarchitektur I Integration System HTTP Kunde B FTP HHTT MMLL Format Format XX FTP Integrations Lösung Java Server Kunde C FTP L XXMML 39 EAI mit Java und XML © 2004 Orientation in Objects GmbH Beispielarchitektur II Internet Intranet Kunde Lieferant Integrationsserver Entwicklung Kommunikation Sicherheit Validierung Routing Prozesswissen Backendintegration Transformation Management Host CRM DB ERP 40 EAI mit Java und XML © 2004 Orientation in Objects GmbH 20 Java als Integrationsplattform 41 JAVA • Wird von Sun Microsystems entwickelt. • C bzw. C++ ähnliche Programmiersprache. • Geeignet für: – – – – – Internet Network Computer Server PDAs und auch wieder Toaster.... 42 EAI mit Java und XML © 2004 Orientation in Objects GmbH 21 Geschichte von Java • • • • • • • • • • • • • • 23.01.1996 16.10.1996 18.02.1997 04.03.1997 10.03.1997 02.04.1997 01.03.1998 20.04.1998 06.12.1998 04.03.1999 27.03.1999 02.06.1999 08.12.1999 08.05.2000 JDK 1.0 JavaBeans JDK 1.1 Java Servlet Development Kit JNDI API vorgestellt EJB angekündigt JFC/Swing wird fertig Java Plug-in Java 2 Plattform XML-Unterstützung HotSpot 1.0 JavaServer Pages J2EE fertig und J2SE auf Linux J2SE v. 1.3 43 EAI mit Java und XML © 2004 Orientation in Objects GmbH Compilieren und Ausführen Application HelloApplication.java Compiler HelloApplication.class Interpreter (Application wird ausgeführt) 44 EAI mit Java und XML © 2004 Orientation in Objects GmbH 22 J2SE (SDK + JRE) • JDK wurde umbenannt in SDK (Software DK) – Heutige Hürde: zu J2SE gehört SDK 1.3 (Software Development kit) und JRE 1.3 (Java Runtime Environment) • Kann kostenlos von SUN bezogen werden. • SDK Besteht aus Compiler, Interpreter, Debugger, Appletviewer + Klassenbibliotheken • dient als Entwicklungsumgebung 45 EAI mit Java und XML © 2004 Orientation in Objects GmbH Sicherheitskonzepte in Java 2 • • Feiner konfigurierbares Sicherheitsmodell Einrichtung von „Protection Domains“ – – – • Jede Domain besitzt Sicherheitsvorgaben (Security Policies) Laufzeitobjekte sind einer bestimmten Domain zugeteilt Zuteilung hängt ab von Herkunft des Codes und vom Unterzeichner Lokaler und entfernter Code wird transparent behandelt Lokaler oder Netzwerk Code Unbeschränkter Ressourcenzugriff Domain Domain Domain Eingeschränkter Zugriff (Sandbox) Security Manager Systemressourcen (Dateien, Netzwerkverbindungen, ...) 46 EAI mit Java und XML © 2004 Orientation in Objects GmbH 23 GetProperty.main() java.lang.System.getProperty() java.lang.SecurityManager.checkPropertyAccess() java.security.AccessController.checkPermission() checkPermission() testen Aufrufhierarchie Threadprüfung 47 EAI mit Java und XML © 2004 Orientation in Objects GmbH JAVA Plattform 2 XML-Architektur JAXP TrAX DOM SAX Implementierung (Crimson, Xerces, Xalan, ...) 48 EAI mit Java und XML © 2004 Orientation in Objects GmbH 24 J2EE - Architektur-Landschaft Client EIS EJB Server Web Server JSP Servlet HTML XML RDBMS Legacy ERP OODBMS? EJB EJB Client EJB Client Enterprise Java Services JNDI, JDBC, JTA, JavaMail, JMS, RMI/IIOP 49 EAI mit Java und XML Webclient Client Tier Web Browser Web Pages, Applets, and Optional JavaBeans Components Webserver Anwendungsserver JavaBeans Components (Optional) Application Client and Optional JavaBeans Components Datenbankserver Business Tier EIS* Tier Entity Beans Session Beans MessageDriven Beans Database and Legacy Systems Web Tier JavaServer Pages Servlets © 2004 Orientation in Objects GmbH J2EE Server * EAI mit Java und XML Enterprise Information System 50 © 2004 Orientation in Objects GmbH 25 Komponenten Client Webserver Request Servlet-Engine Context Context Context Servlet Servlet Servlet Response 51 EAI mit Java und XML © 2004 Orientation in Objects GmbH Servlets & JSP HTML java java HTML Servlets JSP 52 EAI mit Java und XML © 2004 Orientation in Objects GmbH 26 Enterprise Java Beans EJB • Komponenten auf der Serverseite • Definition: Die Enterprise JavaBeans Architektur ist eine Komponentenarchitektur, für die Entwicklung und Verteilung von objektorientierten verteilten Unternehmensanwendungen. Anwendungen, die auf der Enterprise JavaBeans Architektur aufbauen sind skalierbar, transaktional und multi-User sicher. Solche Anwendungen können auf jeder Server Plattform ausgeführt werden, die die Enterprise JavaBeans Architektur unterstützt. 53 EAI mit Java und XML © 2004 Orientation in Objects GmbH EAI mit Java und XML © 2004 Orientation in Objects GmbH EJB Architektur 54 27 Enterprise Beans EJB Session Bean Stateless Message Driven EntityBean Statefull CMP BMP 55 EAI mit Java und XML © 2004 Orientation in Objects GmbH JCA Verträge Application Server EIS EJB Container Vertrag Common Client Interface Bestellung Bean Kunde System Contracts Ressource Adapter Backend API 56 EAI mit Java und XML © 2004 Orientation in Objects GmbH 28 J2 Connector Architecture • Standardisiert die Verbindung von J2EE zu heterogenen EIS • Basiert im Gegensatz zu JDBC nicht auf Tabellen • Abstrahiert das native API eines EIS • Sicher, Skalierbar und Transaktionale • Common Client Interface (CCI) = Client API für Zugriff aus EIS 57 EAI mit Java und XML © 2004 Orientation in Objects GmbH System Level Pluggability between Application Servers and EISs aus “J2EE™ Connector Architecture Specification“, Seite 7 EAI mit Java und XML 58 © 2004 Orientation in Objects GmbH 29 Managed Application scenario aus “J2EE™ Connector Architecture Specification“, Seite 20 EAI mit Java und XML 59 © 2004 Orientation in Objects GmbH JMX Architektur Aufbau Java Virtual Machine Protocol Adaptor Connector Management Client MBeanServer Browser Agent Service (as MBeans) Proxy Application Resource MBeans Distributed Services Level Agent Level EAI mit Java und XML Instrumentation Level 60 © 2004 Orientation in Objects GmbH 30 Management Console MC4J 61 EAI mit Java und XML © 2004 Orientation in Objects GmbH JMX Administration HTML Interface 62 EAI mit Java und XML © 2004 Orientation in Objects GmbH 31 “It’s not a trick, it’s Open Source” • Vorteile durch Open Source Code – Debugging – Profiling – Erweiterbar – Hoher Qualitätsstandard – Kein Marketing Druck 63 EAI mit Java und XML © 2004 Orientation in Objects GmbH JMX und J2EE als Open Source ? • • • • • • • J2EE konformer Open Source Application Server Große Zahl aktiver Entwickler Hoher Verbreitungsgrad Veröffentlicht unter LGPL Lizenz Ernst zu nehmende Alternative zu kommerziellen Produkten Modularer Aufbau mit Microkernel “ohne“ eigene Funktionalität Realisiert mittels Java Management Extensions (JMX) 64 EAI mit Java und XML © 2004 Orientation in Objects GmbH 32 Verwaltung Alternative „Marktführer“ ca. 1000 GUI Clients € 10.000,-€ 10.000,-Premium Server Hardware Application Server $ Premium Server Hardware Entwicklung Application Server $ € 35.000,-- € 4.000,-- € 35.000,-- 65 EAI mit Java und XML © 2004 Orientation in Objects GmbH Verwaltung Alternative „Open Source“ ca. 1000 GUI Clients Server Hardware Server Hardware Server Hardware Server Hardware € 0,-- € 4000,-- 66 EAI mit Java und XML © 2004 Orientation in Objects GmbH 33 Was ist im IBM Websphere? Apache HTTPD, Xalan, Xerces, WSIF Jakarta BSF, Commons, Logging, ORO, Struts, Tomcat JDOM Mozilla Rhino Jython WebSphere ... 67 EAI mit Java und XML © 2004 Orientation in Objects GmbH EAI mit „XML Application Server“ Applet/Standalone Fremdanwendung / ERP Browser XSL:FO ... XML Dokumente „XML Application Server“ Web Server XML Framework ( Cocoon, AxKit, Castor, ...) Application Server 68 EAI mit Java und XML © 2004 Orientation in Objects GmbH 34 Web Services 69 Heutige Herausforderungen • Integration heterogener verteilter Systeme – zahlreiche inkompatible Hersteller und Protokolle – keine einheitliche Technologie • Java, C#, C++, CORBA, RMI etc. • Bestehende „Altsysteme“ verbinden (lose Kopplung) – Firmenzukauf, Migration, etc. • Einfache Anbindung neuer Kunden – Unterstützung von Webclients, mobilen Clients, etc. • Firewalls müssen überwunden werden – meist nur Port 80 (HTTP) geöffnet 70 EAI mit Java und XML © 2004 Orientation in Objects GmbH 35 Lösungen • XML – Reine Textdateien mit Standardcodierung (nicht binär) – offener Standard (W3C) – jedes System kann XML verstehen! • HTTP – weit verbreitetes Protokoll – fast jede Firewall ist HTTP durchlässig 71 EAI mit Java und XML © 2004 Orientation in Objects GmbH Defacto Standards • XML based messages SOAP • internet-based protocols HTTP 72 EAI mit Java und XML © 2004 Orientation in Objects GmbH 36 HTTP Kommunikation Client Server Anfrage + Parameter HTML-Seite Ergebnis Anfrage + Parameter HTML-Seite Ergebnis 73 EAI mit Java und XML © 2004 Orientation in Objects GmbH Beispiele für Web Services • • • • • • • • Übersetzungsservice Wetter Verkehrinformationen Kreditkarten Überprüfung Börsenkurse Beschaffungslösungen Routenplanung ... • siehe www.xmethods.org 74 EAI mit Java und XML © 2004 Orientation in Objects GmbH 37 www.xmethods.org 75 EAI mit Java und XML © 2004 Orientation in Objects GmbH EAI mit Java und XML © 2004 Orientation in Objects GmbH FedEx Tracker 76 38 Überlegungen gegen WebServices • Einheitliche Technologie – keine heterogene Server- und Client-Technologie • Keine „Internetnutzung“ – Anwendung muss keine Firewall überwinden • Intranet • XML Verarbeitung unter Umständen zu aufwendig – in den meisten Anwendungsfällen unkritisch! • Sicherheit 77 EAI mit Java und XML © 2004 Orientation in Objects GmbH Sicherheit • Übertragung – SSL ( keine Probleme bei bekannten Kommunikationspartnern) – XML Encryption, XML Signature, XML Key Management • XML Security Page – http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/xml_security.html 78 EAI mit Java und XML © 2004 Orientation in Objects GmbH 39 Vorteile durch WebServices • XML basiert – jedes System kann Textdateien verarbeiten • Firewalls können bei Nutzung von HTTP als Übertragungsprotokoll überwunden werden – Firewalls oft mit offenem HTTP Port konfiguriert • Niedrige Einstiegsschwelle – Einfache Technik, kostenlose Toolkits, Automatische COM und EJB Anbindung • Mehr Clients können angesprochen werden – nicht nur auf eine Plattform bzw. Technologie beschränkt 79 EAI mit Java und XML © 2004 Orientation in Objects GmbH Was WebServices anders macht • Basiert auf „echten“, weitverbreiteten Standards – TCP/IP, HTTP, XML, ... • Führende Softwarehersteller unterstützen den Standard – Microsoft, IBM, SUN, ... • Lose gekoppelt, einfach und ergebnisorientiert • Bestehende Infrastruktur läßt sich weiternutzen – Internet, Routers, Firewalls, Web Server ... 80 EAI mit Java und XML © 2004 Orientation in Objects GmbH 40 Beispielarchitektur I WebServer Client Application Server JAX-RPC Servlet Endpoint XML XML Firewall Firewall EJB Connector Connector EIS EIS 81 EAI mit Java und XML © 2004 Orientation in Objects GmbH Beispielarchitektur II Web Browser Mobile Devices 3rd party apps / exchange infrastructure STMP RFC HTTP(S) SOAP/XML SAP GUI Connectivity Internet Communication Manager Web Dynpro J2EE / ABAP Web Service Infrastructure Persistence Database Abstraction SAP Web Application Server 82 EAI mit Java und XML © 2004 Orientation in Objects GmbH 41 Client muß Services kennen WebService WebService WebService WebService WebService WebService ? ? ?? ? ? ? WebService Client 83 EAI mit Java und XML © 2004 Orientation in Objects GmbH WSDL im Publish-Discover-Bind Model Registry 1 Service Requester Veröffentlichen Service Provider 84 EAI mit Java und XML © 2004 Orientation in Objects GmbH 42 Web Service Description Language WSDL • Sprache um Dienste zu beschreiben • Vergleichbar mit IDL bei CORBA • Wurde von Ariba, IBM und Microsoft entwickelt • Beschreibt Dienste als eine Menge von Endpunkten, die Nachrichten verarbeiten – Die Nachrichten können entweder Dokument- oder Aufruf-orientiert sein • Zugriff über eMail, Website oder UDDI 85 EAI mit Java und XML © 2004 Orientation in Objects GmbH Web Service Description Language WSDL WSDL WSDL Datei Datei Code Code Generator Generator Service Proxy Service Service Proxy Proxy Implementierung Implementierung Client Servlet Engine 86 EAI mit Java und XML © 2004 Orientation in Objects GmbH 43 Entwickeln mit JAX-RPC (Serverseitig) Konfigurationsdatei Proxy (Tie) xrpcc (-server) WSDL Datei ServerKonfigurationsdatei (.properties) 87 EAI mit Java und XML © 2004 Orientation in Objects GmbH WebService veröffentlichen WAR Archiv Handlers/ Serializer Generierte Klassen JAX-RPC Servlet ServerKonfigurationsdatei (.properties) WSDL Datei 88 EAI mit Java und XML © 2004 Orientation in Objects GmbH 44 Einbindung von Clients Client Integrationsumgebung WSDL WSDL Code Generator Service Proxy WSDL Generator bestelle(‘10‘, ‘SK-001-SW‘) Server Objekt int bestelle( anzahl, artikel) 89 EAI mit Java und XML © 2004 Orientation in Objects GmbH Clients entwickeln WSDL Datei oder xrpcc Proxy (Stub) (-client) 90 EAI mit Java und XML © 2004 Orientation in Objects GmbH 45 JAX-RPC auf WSDL gemappt JAX-RPC WSDL Service Interface Service Remote Interface Ports/ PortTypes Methoden Operations Value Types Complex Types (Schemas) Exceptions Faults 91 EAI mit Java und XML © 2004 Orientation in Objects GmbH WebServices mit Axis • Projekt der Apache Group • Entsanden aus IBM SOAP4J und Apache SOAP • Framework zum Erstellen von „SOAP Verarbeitern“ – Clients, Servers, Gateways, ... • Einfach zu bedienen 92 EAI mit Java und XML © 2004 Orientation in Objects GmbH 46 UDDI im Publish-Discover-Bind Model Registry 2 Finden Service Requester Service Provider 93 EAI mit Java und XML © 2004 Orientation in Objects GmbH XML Registries • Electronic Business using eXtensible Markup Language (ebXML) – von OASIS und U.N./CEFACT • Universal Description, Discovery and Integration (UDDI) – von einer Konsortium aus Unternehmen • IBM, SAP, Microsoft 94 EAI mit Java und XML © 2004 Orientation in Objects GmbH 47 Universal Description, Discovery and Integration • Projekt zur Beschleunigung der Interoperabilität und Annahme von WebServices – Veröffentlichen von Services – Schnelles Finden von WebServices – Legt fest, wie Handel mit dem gefundenen Unternehmen ausgeführt werden kann (mittels WSDL) • Registries vorhanden – IBM, SAP, Microsoft • Replikationsmechanismus 95 EAI mit Java und XML © 2004 Orientation in Objects GmbH SOAP im Publish-Discover-Bind Model Registry Service Requester 3 Verbinden Service Provider 96 EAI mit Java und XML © 2004 Orientation in Objects GmbH 48 Ablauf der Kommunikation SOAP Request Client Server SOAP Response 97 EAI mit Java und XML © 2004 Orientation in Objects GmbH Simple Object Access Protocol (SOAP) • Definiert ein XML basiertes Nachrichtenformat • SOAP ist kein Übertragungsprotokoll – SOAP ist eine Spezifikation für die Nutzlast! – Siehe http://www.w3.org/TR/SOAP/ • Standard vom W3C – Sprachneutral • Kann über verschiedene Protokolle übertragen werden – HTTP, SMTP, CORBA, RMI, DCOM, FTP, ... 98 EAI mit Java und XML © 2004 Orientation in Objects GmbH 49 Eigenschaften von SOAP • Zustandslos – „one-way“ Übertragung – Anwendung kann komplexere Interaktionsmodelle abbilden • Request/ Response • Request/ Multiple Responses • Entkopplung der Implementierung – Endpunkte kennen keine Implementierungsdetails • dadurch Technologieunabhängigkeit 99 EAI mit Java und XML © 2004 Orientation in Objects GmbH Aufbau einer SOAP Message SOAP Message SOAP Envelope SOAP Header Primary MIME Part (text/xml) Header Entry ... Header Entry Attachement SOAP Body Attachement Body Entry ... ... Body Entry Attachement 100 EAI mit Java und XML © 2004 Orientation in Objects GmbH 50 Publish-Discover-Bind Model Registry 2 1 Finden 3 Service Requester Veröffentlichen Service Provider Verbinden 101 EAI mit Java und XML © 2004 Orientation in Objects GmbH Beispielarchitektur Application Server Clients der Kunden Zugriff über SOAP oder HTTP Java Perl PHP SAP ... Testclient mit JUnit Mainframe APPC LU 6.2 Web Anwendung CICS Servlet Fremdsystem Servlet HTTP HTTP 102 EAI mit Java und XML © 2004 Orientation in Objects GmbH 51 Routing/Processing 103 Message Routing Kunde X ERP RPC Konverter Kunde Y CRM Router Lieferant X System X Lieferant Y 104 EAI mit Java und XML © 2004 Orientation in Objects GmbH 52 Routing / Kunde X in archiv a Backend System X Validieren Routen Transformation Verarbeiten a‘ fehler bestellung anfrage rechnung bestellung EAI mit Java und XML anfrage rechnung 105 © 2004 Orientation in Objects GmbH Native XML Datenbanken • Unterscheidung: native DB ⇔ XML enabled DB • Speziell zum Speichern von XML Dokumenten entworfen (besonders für document-centric XML Dokumente) • Unterstützung von: – – – – – Transaktionen Sicherheit Mehrbenutzerzugriffe APIs für den Zugriff aus einer Programmiersprache Abfragesprachen 106 EAI mit Java und XML © 2004 Orientation in Objects GmbH 53 XQuery Language • Kleine einfache Abfrage Sprache • Abgeleitet von vorherigen Vorschlägen, wie XML-QL,YATL, Lorel und Quilt, aber noch keine “recommendation“ • „Navigationssyntax“ wurde von XPath übernommen • Kein XML - die XML Version heisst XQueryX • Teile der SQL-Syntax (SELECT, FROM, WHERE) und von OQL wurden übernommen 107 EAI mit Java und XML © 2004 Orientation in Objects GmbH Routing mit XML Datenbank / Kunde X in archiv a Backend System X Validieren Routen Transformation Verarbeiten a‘ fehler bestellung anfrage rechnung bestellung EAI mit Java und XML anfrage rechnung 108 © 2004 Orientation in Objects GmbH 54 Warum Ant verwenden ? • XML basiertes Buildtool für Java Anwendungen • Portabel, erweiterbar, schnell • Hilfsfunktionalität (copy, delete, ftp, mail, style, ...) • Eigene Funktionalität in Java (CSV2XML, run_my_logic, ...) • Zuvor gezeigte Anforderungen können mit geringem Aufwand erfüllt werden 109 EAI mit Java und XML © 2004 Orientation in Objects GmbH Ant Features • Open Source unter der Lizenz der ASF • Buildfiles in XML – Tool Unterstützung – Einheitliche und portable Syntax • Vollständig Java basiert – Verwendbar auf jeder Java fähigen Plattform – Performant durch Java Multithreading • Erweiterbar – Neue Funktionalität durch Java Code hinzufügbar • Integrationsfähig – Unterstützt zahlreiche Standard-Tools (CVS, JUnit, ...) – Selbst in viele IDEs integriert (Eclipse, Forte, ...) EAI mit Java und XML 110 © 2004 Orientation in Objects GmbH 55 Hello Ant <?xml version="1.0" encoding="iso-8859-1"?> <project default="run" name="HelloAnt"> <target name="compile"> <javac srcdir="."/> </target> <target name="run" depends="compile"> <java fork="yes" classname="de.oio.fant.Hello"/> </target> <target name="clean"> <delete file="de/oio/fant/Hello.class"/> </target> </project> 111 EAI mit Java und XML © 2004 Orientation in Objects GmbH Passende Ant Tasks • Archivierung – Jar, Tar, ZIP, Cab, SignJar,.. • Dateien – CheckSum, Conat, Copy, Delete, FixCRLF • Connectoren – Mail,SQL, FTP, telnet, SetProxy • Übersetzung – Tanslate, XSLT • XML – XMLValidate • Diverse – TStamp 112 EAI mit Java und XML © 2004 Orientation in Objects GmbH 56 Prinzipielle Realisierung über Ant • Ant steuert Transformationen und den Aufruf von Business-Logik, um Kundendaten dem Integration System zuzuführen und umgekehrt • Jeder Kunde besitzt eigenen Verzeichnisbereich – Automatisiert über Ant Task anlegbar (Custom Task) – Dort (Zwischen-) Ablage von Dateien, Stylesheets, Konfigurationen, ... • Ant Skripte führen nach Aufruf (Cronjob) folgendes durch – – – – – • Neue Daten per FTP, SOAP o.ä. sammeln (Standard / Custom Tasks) Nicht XML-Daten aufbereiten (z.B. CSV2XML) (Custom Tasks) XML-Daten nach Bedarf XSLT transformieren (Standard Task) Ergebnis Daten per Integration API in Server übernehmen (Custom Task) RPC Aufrufe beim Kunde über RPC Umsetzer Task Im Fehlerfall Abbruch und Mailbenachrichtigung, Fehlerlog, o.ä. 113 EAI mit Java und XML © 2004 Orientation in Objects GmbH Auszug aus Ant Buildfile (Pseudo-Syntax) <project name="Integration Integration Server" default="all" basedir="."> <property name="ftp.incoming" value="/ftp/in"/> <target name= "all" depends= "Customer1, Customer2, Customer3"/> <target name="Customer1" depends="init"> <!-- Daten von Kunde1 holen und vorverarbeiten --> <ftp action="get" server="some_server" dir="${ftp.incoming}"/> <Integration_csv2xml indir=“${ftp.incoming}" outdir=“${xml.output}"/> <!-- XSLT transformieren und Business-Logik ausführen --> <style basedir="${xml.output}" style="${customer1.stylesheet}" dest="${xml.result}" /> <Integration_apply_backend_logic input="${xml.result}"/> Standard Tasks Integration Tasks ... 114 EAI mit Java und XML © 2004 Orientation in Objects GmbH 57 Scheduler 115 EAI mit Java und XML © 2004 Orientation in Objects GmbH Beispielarchitektur I Integrationsserver PO P/IMAP Mail abhole n (eigene r Task) XML XML CSV XML XML BMECat XML XML XML Mail versenden (mail Task ) SMTP XML nach BMECat Konverter (sty le Task) CSV nach XML Konverter (eigener Ta sk) 116 EAI mit Java und XML © 2004 Orientation in Objects GmbH 58 Beispielarchitektur II Fremdsystem oder SAP-System Fremdsystem oder SAP-System J2SE (Java-Standalone mit XI2.0 add-on) InboundAdapter SAP Web AS OutboundAdapter (mit XI2.0 add-on) ABAP J2EE Anwendungslogik Anwendungslogik Anwendungslogik Outbound-Proxy (synchron) ABAPProxy Java ProxyBean ABAPProxy Laufzeit Java Proxy Java Proxy Laufzeit Logisches Routing Technisches Routing Mapping Integration Server Java Proxy Laufzeit Quelle: http://help.sap.com 117 EAI mit Java und XML © 2004 Orientation in Objects GmbH Beispielarchitektur IIa Sender System Anwendung Aktual-Parameter der Interfaces: An das Interface übergebene Parameter (entspricht Request Message) Sender System Anwendung Empfänger-Verarbeitung Interface A Request Message (Senderformat) Proxy Laufzeit Response Message Integration Server Von dem Interface zurückgegebene Parameter (entspricht Response Message) Interface B Request Message (Empfängerformat) Proxy Laufzeit Response Message Quelle: http://help.sap.com 118 EAI mit Java und XML © 2004 Orientation in Objects GmbH 59 Prozessbeschreibung in XML <?xml version="1.0"?> <processes> <process dest="de.oio.jax.process.demo.BestellungVerarbeitenProcess"> <event src="de.oio.jax.process.demo.BestellungEmpfangenEvent"/> <action src="de.oio.jax.process.demo.HoleLagerbestandAction"/> <action src="de.oio.jax.process.action.SendDebugAction"> <param name="mail-addr" value="bayer@porty"/> </action> <action src="de.oio.jax.process.demo.SendeBestandsmeldungAction"/> <action src="de.oio.jax.process.action.GenerateEventAction"> <param name="event-class" value="de.oio.jax.process.demo.BestellungVerarbeite </action> </process> <process dest="de.oio.jax.process.demo.BestellungVerbuchenProcess"> <event src="de.oio.jax.process.demo.BestellungVerarbeitetEvent"/> <action src="de.oio.jax.process.demo.VerbucheBestellungImERPAction"/> </process> </processes> 119 EAI mit Java und XML © 2004 Orientation in Objects GmbH Gesamte Anwendung Client processes2initializer.xsl ProcessInitializer processess.xml processes2java.xsl Process ProcessManager Event BestellungVerarbeitenProcess generierter Code Anwendungs Code Framework Code SendDebugAction Action GenerateEvent BestellungEmpfangenEvent BestellungVerarbeitetEvent HoleLagerbestandAction 120 EAI mit Java und XML © 2004 Orientation in Objects GmbH 60 BPEL4WS • Die Business Process Execution Language for Web Services ermöglicht es, eine Menge von Web Services zu einem neuen Web Service zusammenzusetzen • Ziel: • – Prozesse zu beschreiben – diese Prozesse falls benötigt auch zu instanziieren Konzepte – Container speichern Nachrichen und Statusinformationen – fault handling ähnlich zu Java – Mittels compensation handler können jene Aktivitäten definiert werden, die in jenen Fällen duchgeführt werden sollen – Mittels Service Link Types (SLINK) wird die Interaktion zwischen Diensten beschrieben und welche Dienste diese anbieten. Dafür wird das Konzept von Roles (Rollen) verwendet. 121 EAI mit Java und XML © 2004 Orientation in Objects GmbH Beispiel <process name=„purchaseOrderProcess“> <partners> <partner name=„customer“ serviceLinkType=„purchaseLT“ myRole=„purchaseService“/> </partners> <containers> <container name=„PO“ messageType=„POMessage“/> </containers> <sequence> <receive partner=„customer“ portType=„purchaseOrderPT“ operation=„sendPurchaseOrder“ container=„PO“/> <flow> ... </flow> <reply partner=„customer“ portType=„purchaseOrderPT“ operation=„sendPurchaseOrder“ container=„Invoice“/> </sequence> </process> EAI mit Java und XML 122 © 2004 Orientation in Objects GmbH 61 Beispiel <flow> <links> <link name=„ship-to-invoice“/> <link name=„ship-to-scheduling“/> </links> <sequence> <invoke partner=„shippingProvider“ portType=„shippingPT“ operation=„requestShipping“ inputContainer=„shippingRequest“ outputContainer=„shippingInfo“> <source linkName=„ship-to-invoice“ /> </invoke> <receive partner=„shippingProvider“ portType=„shippingCallbackPT“ operation=„sendSchedule“ container=„shippingSchedule“> <source linkName=„ship-to-scheduling“ /> </receive> </sequence> </flow> 123 EAI mit Java und XML © 2004 Orientation in Objects GmbH Connectoren bzw. Adaptoren 124 62 Kommunikationsmodelle • Synchrone Kommunikation – meist Remote Procedure Calls • z. B. Kreditkartenüberprüfung • Asynchrone Kommunikation – Messaging (meist Dokumentversand) • z. B. Routenplanung, Faxversand 125 EAI mit Java und XML © 2004 Orientation in Objects GmbH Synchrone Kommunikation Client Server Request Response 126 EAI mit Java und XML © 2004 Orientation in Objects GmbH 63 Asynchrone Kommunikation Client Server Nachricht 127 EAI mit Java und XML © 2004 Orientation in Objects GmbH Point to Point I ERP Host B2B DMS CMS CRM Anzahl Schnittstellen = n * ( n - 1) = n² - n EAI mit Java und XML 128 © 2004 Orientation in Objects GmbH 64 Point to Point II Schnittstellen Systeme •Kombinatorische Explosion •Keine Wiederverwendung •Know-How ist auf die einzelnen Schnittstellen verteilt EAI mit Java und XML 129 © 2004 Orientation in Objects GmbH Hub and Spoke Host SAP B2B DMS Middleware XX CRM Konnektoren = Anzahl Systeme Anzahl Schnittstellen = 2n 130 EAI mit Java und XML © 2004 Orientation in Objects GmbH 65 RPC Umsetzer RPC Umsetzer EJB server <order id=“3“> ... </order> VO <order id=“4“> ... </order> <order id=“5“> ... </order> VO VO VO VO VO SB OrderService order( orderVO) 131 EAI mit Java und XML © 2004 Orientation in Objects GmbH Web Service Connector ERP HTTP HTTP SOAP Kunde A SOAP Integrations Lösung oder FTP RPC Umsetzer Web Service 132 EAI mit Java und XML © 2004 Orientation in Objects GmbH 66 Anbindung an JMS Order Office MDB MDB Integrations Lösung Ca lls JMS Sender JMS Client OrderService SetupOffice SBBean Entity Order Topic Lagerbestand Topic 133 EAI mit Java und XML © 2004 Orientation in Objects GmbH PopTask public class PopTask { ... public void execute() throws BuildException { store = Session.getInstance(getProperties()).getStore("pop3"); store.connect(getPop3Host(), getUserName(), getPassword()); folder store.getFolder(INBOX_FOLDER_NAME); folder.open(Folder.READ_WRITE); Message[] messages = folder.getMessages(); for (int i = 0; i < messages.length; i++) { writeMessage(messages[i]); messages[i].setFlag(Flags.Flag.DELETED, deleteMessages); } } public String getPop3Host() { .. } public void setPop3Host(String pop3Host) { ... } Achtung Pseudocode! public File getOutDir() { ... } public void setOutDir(File outDir) { ... } } EAI mit Java und XML 134 © 2004 Orientation in Objects GmbH 67 Erweiterbarkeit durch eigene Tasks • Kommerzieller Anbieter: – „Falls nötig, kann der Adapter auch spezifisch entwickelt werden“ • Fehlende Tasks: – pop, csv2xml 135 EAI mit Java und XML © 2004 Orientation in Objects GmbH Enterprise Information System SAP SAP R/3 136 68 SAP Dreischichtmodell DB-Server (RDBMS) SAP Application Server SAPGUI RFC, BAPI, IDoc 137 EAI mit Java und XML © 2004 Orientation in Objects GmbH A simplified Depiction of some inbound SAP Interfaces NON SAP XML Business Connector DCOM Connector Java Connector EDI ITS RFC Lib GUI Lib File I/O ABAP Direct Input Batch Input CTU RFC DIAG Dynpros BAPIs RFMs IDoc RFM ABAP Application Code Database 138 EAI mit Java und XML © 2004 Orientation in Objects GmbH 69 SAP BAPI und SAP JCo BAPI Business BAPI Object BAPI R/3 Business BAPI Business Component BAPI Object BAPI BAPI Business BAPI Object BAPI 139 EAI mit Java und XML © 2004 Orientation in Objects GmbH R/3 Aufruf von Java Java Anwendung Proxy-Klassen JNI JCo RFC RFC RFC Module BAPI ABAP ABAP R/3 Database 140 EAI mit Java und XML © 2004 Orientation in Objects GmbH 70 Features • Supports Remote Function Call (RFC) completely • BAPIs, other RFC-enabled Function Modules (RFMs), and IDocs are completely supported. • Supports SAP 3.1H and higher • JCo 2.x requires JDK 1.3 or later • Supports desktop and (Web) Application Server applications • High-performance, JNI-based implementation • Download from http://service.sap.com/connectors • Used by the SAP Business Connector, SAP Enterprise Portal • Multi-platform – Windows NT and 2000, Linux (Intel), zLinux (IBM S/390 and zSeries), Solaris, IBM AIX, HP-UX, OSF1 (Alpha), IBM OS/400 141 EAI mit Java und XML © 2004 Orientation in Objects GmbH EAI mit Java und XML © 2004 Orientation in Objects GmbH Java Connectivity Builder 142 71 Kommunikation über SAP Business Connector Interface Repository blättern Schema download publish BAPI/RPC Business Connector XML Nachricht Fremdsystem SAP 143 EAI mit Java und XML © 2004 Orientation in Objects GmbH SAP Business Connector Inside SAP R3 RFCs tRFCs IDocs RFCs IDocs BAPIs SAP Business Connector RFC Client SAP BC Services 2. Create client that invokes service 1. Select SAP Component and the RFC to execute RFC IDocs IDocs tRFC Requests mapped to server RFC Server (Listener) Message Store Requests NOT mapped to server tRFC FTP to a location Send via Email HTTP post via URL Partner Manager Rule Rule Rule Rule 144 EAI mit Java und XML © 2004 Orientation in Objects GmbH 72 Fragen? ? ? ? ? ? 145 EAI mit Java und XML © 2004 Orientation in Objects GmbH Literatur • Freier Austausch - „Integrationsserver mit Open SourceSoftware XML & Web Services“ magazin Ausgabe 2/2003 • CSV Konverter – http://www.oio.de/public/konverter/csv2xml.htm • CSV Ant Task – http://www.oio.de/csvtask.htm • Ant – http://jakarta.apache.org/ant/ • JMX Homepage – http://java.sun.com/products/JavaManagement/ • JBoss – http://www.jboss.org • MC4C Management Console – http://mc4j.sourceforge.net/ 146 EAI mit Java und XML © 2004 Orientation in Objects GmbH 73 Vielen Dank für Ihre Aufmerksamkeit! Christian Dedek [email protected] Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de http://www.oio.de 147 EAI mit Java und XML © 2004 Orientation in Objects GmbH XSP mit SAP Taglib ... <page> <gosap:checkLogon> <gosap:executeBAPI> <BAPIName>BAPI_SFLIGHT_GETLIST</BAPIName> <request><xsp:expr>request</xsp:expr></request> </gosap:executeBAPI> </gosap:checkLogon> </page> ... 148 EAI mit Java und XML © 2004 Orientation in Objects GmbH 74 XML Output der XSP <?xml version="1.0" encoding="UTF-8"?> <page> <result> <tables> <table name="FLIGHTLIST"> <row> <field desc="Kurzbez. der Fluggesellschaft“>LH</field> <field desc="Code der Flugverbindung">2407</field> <field desc="Flugdatum">2001-10-07</field> ... </row> ... </table> </tables> <export> ... </export> </result> </page> 149 EAI mit Java und XML © 2004 Orientation in Objects GmbH EAI mit Java und XML © 2004 Orientation in Objects GmbH HTML und WML Output 150 75 Generischer BAPI Aufruf mit Cocoon 151 EAI mit Java und XML © 2004 Orientation in Objects GmbH Generischer BAPI Aufruf mit Cocoon <?xml version="1.0" encoding="UTF-8"?> <page xmlns:xsp="http://apache.org/xsp" xmlns:gosap="http://www.gosap.de/taglib" xmlns:log="http://apache.org/xsp/log"> <bapi name="BAPI_SFLIGHT_GETLIST"> <tables name="BAPI_SFLIGHT_GETLIST"> <table type="TABLE" desc="Liste von Flügen" name="FLIGHTLIST" offset="0" length="10" optional="false"> <field type="CHAR" desc="Kurzbezeichnung der Fluggesellschaft" name="CARRID" offset="0" length="3" optional="false"/> <field type="NUM" desc="Code der Flugverbindung" name="CONNID" offset="3" length="4" optional="false">0000</field> ... </table> </tables> <import> <param type="CHAR" desc="Nachmittags starten (Einschränkung)" name="AFTERNOON" offset="0" length="1" optional="true"/> <param type="CHAR" desc="Fluggesellschaft (Einschränkung)" name="AIRLINECARRIER" offset="1" length="3" optional="true"/> ... </import> <export> <param type="STRUCTURE" desc="Fehlermeldungen" name="RETURN" offset="0" length="6" optional="false"> <structure name="RETURN"> <param type="CHAR" desc="Meldungstyp: S Success, E Error, W Warning, I Info, A Abort" name="TYPE" offset="0" length="1" optional="false"/> <param type="CHAR" desc="Nachrichten, Nachrichtenklasse" name="ID" offset="1" length="20" optional="false"/> ... </structure> </param> </export> </bapi> </page> 152 EAI mit Java und XML © 2004 Orientation in Objects GmbH 76 Generischer BAPI Aufruf mit Cocoon 153 EAI mit Java und XML © 2004 Orientation in Objects GmbH Generischer BAPI Aufruf mit Cocoon 154 EAI mit Java und XML © 2004 Orientation in Objects GmbH 77