17
Service Orientierte Architektur Integration heterogener verteilter Systeme mit WS-BPEL – ein Praxisbeispiel Dr. Wolf-Dieter Heinrichs

Vorlesung SOA - DIS AG.pptx

Embed Size (px)

DESCRIPTION

Die Ringvorlesung "Informatik in der Praxis: Wirtschaft und Industrie" 2012 bringt die regionale IT-Wirtschaft mit Masterstudenten der Informatik und Wirtschaftsinformatik durch Zusammenarbeit in konkreten Praxisprojekten direkt zusammen. Das Community Management ITmitte.de organisiert diese Veranstaltung und begleitet sie kommunikativ. Lassen Sie sich empfehlen zu über 100 IT, Informatik, Software - Jobs, Stellen, Praktika, Ausbildungen in Leipzig, Halle, Jena, Bitterfeld-Wolfen, Leuna, Zeitz, Gera, Zwickau, Plauen, Erfurt und Magdeburg.

Citation preview

Page 1: Vorlesung SOA - DIS AG.pptx

Service Orientierte Architektur

Integration heterogener verteilterSysteme mit WS-BPEL – ein

Praxisbeispiel

Dr. Wolf-Dieter Heinrichs

Page 2: Vorlesung SOA - DIS AG.pptx

NSN

Ticket-System

Einsatz-planung

Dokumentation

Auftragnehmer

Portal

Oracle SOA Suite

Praxisbeispiel

TelekomT-HOME Interface

NSN Services

SAP R3

Page 3: Vorlesung SOA - DIS AG.pptx

Ringvorlesung ITmitte.de 3

Service (Dienst)

Ein Service ist eine IT-Repräsentation einer fachlicher Funktionalität.

Ein Service ist in einem Netzwerk verfügbar.

Ein Service ist plattformunabhängig und die zugrunde liegende Implementierung ist transparent.

Page 4: Vorlesung SOA - DIS AG.pptx

4

Web-Service

Austausch von in XML serialisierten Nachrichten zwischen Services.

Transport-Protokoll ist in der Regel HTTP(S). Die Einbettung der Daten in die Transport-Schicht wird durch SOAP beschrieben.

Funktionale Servicebeschreibung durch WSDL (1.1 oder 2.0 – unterstützt semantische Erweiterungen).

Lose Kopplung von Services wird ermöglicht (sync./async., homog./heterog. Daten-typen, stat./dyn. Bindung, Transaktion/Kompensation).

Ringvorlesung ITmitte.de

Page 5: Vorlesung SOA - DIS AG.pptx

5

Ein Beispiel einer Web-Service Nachricht<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://xsd.pt4.service.pes.nsn.com"> <soapenv:Header> <xsd:headerInfo> <msgId>7D0631FC51DE4FC40195DABC886109745</msgId> <senderId>PT4</senderId> <receiverId>PES</receiverId> <version>1.0</version> <timeStampSent>2010-11-24T00:00:00.000+05:00</timeStampSent> </xsd:headerInfo> </soapenv:Header> <soapenv:Body> <xsd:createTask2TXB> <tskId>TSK-00000000066</tskId> <ticketId>TT-000000000001</ticketId> <originatingSystem>PT4</originatingSystem> <requestTitle>Infra BVG A3 - Prüfungen ortsveränderliche Betriebsmittel</requestTitle> <ticketPriority>P10</ticketPriority> <status>Assigned</status> <requestDate>2011-05-02T09:00:00.000</requestDate> <startTime>2011-05-08T09:00:00.000</startTime> <dueTime>2011-05-10T18:00:00.000</dueTime> <siteInfoA> <country>GERMANY</country> <postalCode>13129</postalCode> <city>BERLIN</city> <street>Kastanienallee 8</street> </siteInfoA> </xsd:createTask2TXB> </soapenv:Body></soapenv:Envelope>

Ringvorlesung ITmitte.de

Page 6: Vorlesung SOA - DIS AG.pptx

6

Ein Beispiel einer WSDL (Ausschnitt)<wsdl:message name="createTask2TXB"> <wsdl:part name="parameters" element="top:createTask2TXB"/></wsdl:message><wsdl:message name="createTask2TXBResponse"> <wsdl:part name="parameters" element="top:createTask2TXBResponse"/></wsdl:message><wsdl:message name="faultInfo"> <wsdl:part name="parameters" element="top:faultInfo"/></wsdl:message><!-- ... --><wsdl:portType name="PT42PES2TXBTaskPortType"> <wsdl:operation name="createTask2TXB"> <wsdl:input message="tns:createTask2TXB"/> <wsdl:output message="tns:createTask2TXBResponse"/> <wsdl:fault name="fault" message="tns:faultInfo"/> </wsdl:operation> <!-- ... --></wsdl:portType><wsdl:binding name="PT42PES2TXBTaskSoapBinding" type="tns:PT42PES2TXBTaskPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="createTask2TXB"> <soap:operation style="document" soapAction="http://pt4.service.pes.nsn.com/createTask2TXB"/> <wsdl:input> <soap:header message="tns:headerInfo" part="parameters" use="literal"/> <soap:body use="literal"/> </wsdl:input> <!-- ... --> </wsdl:operation> <!-- ... --> </soap:binding></wsdl:binding><wsdl:service name="PT42PES2TXBTaskService"> <wsdl:port name="PT42PES2TXBTaskSoap" binding="tns:PT42PES2TXBTaskSoapBinding"> <soap:address location="https://pes_node:4443/.../pt42pes2txbtask_client_ep"/> </wsdl:port></wsdl:service>

Ringvorlesung ITmitte.de

Page 7: Vorlesung SOA - DIS AG.pptx

7

Einführung in WSDL

Die Struktur eines WSDL Dokuments

<definitions>

<types>  data type definitions....</types>

<message>  definition of the data being communicated....</message>

<portType>  set of operations and the messages that are involved....</portType>

<binding>  protocol and data format specification for each port type....</binding>

</definitions>

Ringvorlesung ITmitte.de

Page 8: Vorlesung SOA - DIS AG.pptx

8

Das <portType>-Element

Ein One-Way Operation Beispiel

<message name="newTermValues">  <part name="term" type="xs:string"/> <part name="value" type="xs:string"/> </message>

<portType name="glossaryTerms">  <operation name="setTerm">    <input name="newTerm" message="newTermValues"/>  </operation></portType >

Ein Request-Response Operation Beispiel

<message name="getTermRequest">  <part name="term" type="xs:string"/></message>

<message name="getTermResponse">  <part name="value" type="xs:string"/></message>

<portType name="glossaryTerms">  <operation name="getTerm">    <input message="getTermRequest"/>    <output message="getTermResponse"/>  </operation></portType>

Ringvorlesung ITmitte.de

Page 9: Vorlesung SOA - DIS AG.pptx

9

Binding to SOAP

Ein Beispiel

<portType name="glossaryTerms">  <operation name="getTerm">    <input message="getTermRequest"/>    <output message="getTermResponse"/>  </operation></portType>

<binding type="glossaryTerms" name=„anyName">   <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>   <operation>     <soap:operation soapAction=„anyURI"/>     <input><soap:body use="literal"/></input>     <output><soap:body use="literal"/></output>  </operation></binding>

• Das style Attribut kann die Werte "rpc" oder "document“ besitzen.

• Als Transport Protokoll wird SOAP über HTTP verwendet.

• Für jede veröffentlichte Operation ist eine soapAction zu definieren. Diese wird im HTTP-Header verwendet.

• Der input / output ist als literal encoded

Ringvorlesung ITmitte.de

Page 10: Vorlesung SOA - DIS AG.pptx

10

Einführung in SOAP

Die Struktur einer SOAP Nachricht:

<?xml version="1.0"?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soapenv:Header> contains application-specific information like authentication, transaction, messageID .... </soapenv:Header>

<soapenv:Body> ....  <soapenv:Fault>  ....  </soapenv:Fault> </soapenv:Body>

</soapenv:Envelope>

Ringvorlesung ITmitte.de

Page 11: Vorlesung SOA - DIS AG.pptx

11

Einführung in SOAPEine Beispielnachricht, eingebettet in einen HTTP-Request:

POST http://www.example.de/soa-infra/services/default/terms_ep HTTP/1.1 Content-Type: text/xml; charset=utf-8 Content-Length: nnnn SOAPAction: "anyURI"

<soapenv:Envelope xmlns:soapenv=" http://www.w3.org/2001/12/soap-envelope"> <soapenv:Header/> <soapenv:Body> <M:getTerm xmlns:M="anyURI"> <term>SUN</term> </M:getTerm> </soapenv:Body></soapenv:Envelope>

und die darauf erfolgte mögliche Antwort:

HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: nnnn

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2001/12/soap-envelope"> <soapenv:Header/> <soapenv:Body> <M:getTerm xmlns:M="anyURI"> <value>107.0</value> </M:getTerm> </soapenv:Body> </soapenv:Envelope>

Ringvorlesung ITmitte.de

Page 12: Vorlesung SOA - DIS AG.pptx

12

Web Services Business Process Execution Language (WS-BPEL)

BPEL ist eine XML-basierte Sprache zur Beschreibung von Geschäftsprozessen als Workflows.

BPEL ist eine Sprache zur Serviceorchestrierung (Programmieren „im Großen“ - das Spezifizieren der Geschäftslogik im Gegensatz zum Programmieren „im Kleinen“ - die Implementierung der Geschäftsfunktionen).

Prozesse in BPEL importieren und exportieren Informationen über Webservices.

Konzeptionell ein Enterprise Service Bus (ESB).

Ringvorlesung ITmitte.de

Page 13: Vorlesung SOA - DIS AG.pptx

13Ringvorlesung ITmitte.de

Page 14: Vorlesung SOA - DIS AG.pptx

14Ringvorlesung ITmitte.de

Page 15: Vorlesung SOA - DIS AG.pptx

15

Ein WS-BPEL -Beispiel<assign name="AssignResponse2SiteA"> <copy> <from variable="InvokeGetAddressGeocode_GetAddressGeocode_OutputVariable" part="parameters" query="/ns4:GetAddressGeocodeResult/ns4:Result/ns4:Locations/ns4:Location/ns4:Latitude"/> <to variable="Latitude"/> </copy> <copy> <from variable="InvokeGetAddressGeocode_GetAddressGeocode_OutputVariable" part="parameters" query="/ns4:GetAddressGeocodeResult/ns4:Result/ns4:Locations/ns4:Location/ns4:Longitude"/> <to variable="Longitude"/> </copy></assign>

<invoke name="InvokeTaskTitle" inputVariable="InvokeTaskTitle_task_titleSelect_InputVariable" outputVariable="InvokeTaskTitle_task_titleSelect_OutputVariable" partnerLink="task_title" portType="ns8:task_title_ptt" operation="task_titleSelect"/>

<switch name="SwitchTaskTitleOK"> <case condition="string(bpws:getVariableData('InvokeTaskTitle_task_titleSelect_OutputVariable', 'TxbTaskTitleTableCollection', '/ns9:TxbTaskTitleTableCollection/ns9:TxbTaskTitleTable/ns9:txbTaskType')) != &quot;&quot;"> <bpelx:annotation> <bpelx:general> <bpelx:property name="userLabel">response ok</bpelx:property> </bpelx:general> </bpelx:annotation> <empty name="Empty"/> </case> <otherwise> <!-- ... --> </otherwise></switch>

Ringvorlesung ITmitte.de

Page 16: Vorlesung SOA - DIS AG.pptx

16

Einführung in WS-BPEL<process name="aBpelProc">

<partnerLinks> <!–- describes the in- and outbound web services of the process --> <partnerLink name="inboundPl" partnerLinkType="inPlTypeWsdl" myRole="..."/> <partnerLink name="outboundPl" partnerLinkType="outPlTypeWsdl" myRole="..."/> ... </partnerLinks>

<variables> definition of variables ... </variables>

<!–- describes the details of the workflow --> <sequence name="main"> <receive name="receiveInput" partnerLink="inboundPl" portType="..." operation="..." variable="..." createInstance="yes"/> ... <assign ... /> ... <switch ...> <case condition="..."> ... <invoke name=„invokeOutput" partnerLink="outboundPl" portType="..." operation="..." inputVariable="..."/> ... </case> ... </switch> ... </sequence></process>

Ringvorlesung ITmitte.de

Page 17: Vorlesung SOA - DIS AG.pptx

17

Aktivitäten in BPEL (1.1 / 2.0)Services• Invoke (invoke other web services)• Receive (receive data and begin a new process)• Reply (respond to an invocation)

Activities• Assign (assign values to varaibles)• Compensate (compensate for tasks already executed)• Empty• Terminate / Exit (terminate the process)• Throw (throw an exception)• Validate (validate variables, only 2.0) • Wait (stop process execution and wait)

Structured Activities• Flow (parallel processing)• ForEach (repeat, only 2.0)• Pick (pick the branch to execute based on a signal)• RepeatUntil (conditionally repeat, only 2.0)•Scope (hide complex activities)• Sequence (sequence of activities)• Switch / If (make decisions)• While (conditionally repeat)

Ringvorlesung ITmitte.de