EAI mit Java und XML

Werbung
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
Herunterladen