Интеграция приложений с помощью ws-bpel

17
Интеграция приложений с помощью Интеграция приложений с помощью WS-BPEL. WS-BPEL. Відповідальний виконавець Керівник П.І. Перконос С.В. Суботін

Upload: joelle

Post on 17-Jan-2016

72 views

Category:

Documents


2 download

DESCRIPTION

Интеграция приложений с помощью WS-BPEL. Керівник. Відповідальний виконавець. П.І. Перконос. С.В. Суботін. Жизненный цикл WORKFLOW c использованием WS-BPEL в WEB. 5. Портали. В2В. .NET. Користувачі сервісів. 4. Потоки бізнес-процесів. 3. Сервіси ( атомарні, композитні ). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Интеграция приложений  с помощью  WS-BPEL

Интеграция приложений с Интеграция приложений с помощью помощью WS-BPEL.WS-BPEL.

Відповідальний виконавецьКерівник

П.І. Перконос С.В. Суботін

Page 2: Интеграция приложений  с помощью  WS-BPEL

Выполнение

5

Застосування Застосування

Застосування замовника

SAP

Пакети застосувань

Компоненти

Сервіси (атомарні,

композитні)

Потоки бізнес-

процесів

Користувачі сервісів

В2ВПортали .NET

Платформи

UnixOS/390

Сполучне ПО

MQ DB2

1

2

3

4

Операційні системи

Жизненный цикл WORKFLOW c использованием WS-BPEL в WEB

Реинжениринг бизнеспроцессов

проектирование

разработка

Бизнес аналитик

Системный аналитик

Программист

Пользователь

SOAP

Page 3: Интеграция приложений  с помощью  WS-BPEL

Реинжениринг бизнеспроцесса

Постановка задачи

aX + bX +c = 02

МетодикаX1 = -b/2a+ (b*b-4ac)/4a*a

Технологический цикл

<<обращает>>

<<перемножает>>

<<извлекает корни>>

<<суммирует>>

<<получает>>

<<получает>>

<<запускает>>

[>=0]

[<0]

<<receive>>

получение коєффициенто

в

<<if>>

?>0

scientistsummator

multyplicator

invertor

extractor

<<sequence>>

расчет дискриминанта

<<sequence>>

расчет корней<<reply>>

решение

<<replyFault>>

нет корней

Бизнес аналитикX2 = -b/2a- (b*b-4ac)/4a*a

Page 4: Интеграция приложений  с помощью  WS-BPEL

Проектирование

Декомпозиция процесса Проекти

рован

ие н

ед

оста

ющ

их

<<обращает>>

<<перемножает>>

<<извлекает корни>>

<<суммирует>>

<<получает>>

<<получает>>

<<запускает>>

[>=0]

[<0]

<<receive>>

получение коєффициенто

в

<<if>>

?>0

scientistsummator

multyplicator

invertor

extractor

<<sequence>>

расчет дискриминанта

<<sequence>>

расчет корней<<reply>>

решение

<<replyFault>>

нет корней

Бизнес аналитик

Системный аналитик

[<0]

[>=0]

<<invoke>>SQRT(D)

<<invoke>>D

<<if>>

D?

<<throw>>d<0!!

<<assign>>assign_8

<<flow>>Слагаемые

summator

extractor<<paralel>>

Decision_2

<<assign>>assign_9

<<invoke>>b*b

<<assign>>assign_10

<<invoke>>4*a*c

multyplicator

<<paralel>>

Decision_2

<<assign>>assign_12

<<invoke>>-b+D

<<assign>>assign_13

<<invoke>>-b-D

summator

<<paralel>>

Decision_2

<<assign>>assign_14

<<invoke>>X1

<<assign>>assign_15

<<invoke>>X2

multyplicator

<<invoke>>1/2a

<<assign>>assign_11

invertor

<<flow>>-b+-D

<<flow>>X1,2

UDDIРеестр

Поиск

гото

вых

ком

понент

UML диаграмм

ы

Page 5: Интеграция приложений  с помощью  WS-BPEL

Структура WS-BPEL документа

<wsdl:definitions …..>Типы и структура сообщений , порты сервисов, типы связей между партнерами

</wsdl:definitions >

<process …xlmns = пространства имен>

</process >

<scope>

</scope>

<variables> …… </variables><partnerLinks> …… </ partnerLinks >

<<обращает>>

<<перемножает>>

<<извлекает корни>>

<<суммирует>>

<<получает>>

<<получает>>

<<запускает>>

[>=0]

[<0]

<<receive>>

получение коєффициенто

в

<<if>>

?>0

scientistsummator

multyplicator

invertor

extractor

<<sequence>>

расчет дискриминанта

<<sequence>>

расчет корней<<reply>>

решение

<<replyFault>>

нет корней

<recieve> принять коэффициенты уравнения

</recieve >

<reply> вернуть решение </ reply >

<FaultHandlers> нет корней!! </ FaultHandlers >

<sequense расчет дискриминанта> <flow> расчет слагаемых </flow>…

<if> fault | извлечение корня </if>…</sequence>

<sequense расчет корней> ….. расчет знаменателя <flow> расчет слагаемых </flow>…

<flow> расчет корней </flow></sequence>

[<0]

[>=0]

<<invoke>>SQRT(D)

<<invoke>>D

<<if>>

D?

<<throw>>d<0!!

<<assign>>assign_8

<<flow>>Слагаемые

summator

extractor

<<invoke>>1/2a

<<assign>>assign_11

invertor

<<flow>>-b+-D

<<flow>>X1,2

<<paralel>>

Decision_2

<<assign>>assign_9

<<invoke>>b*b

<<assign>>assign_10

<<invoke>>4*a*c

multyplicator

<<paralel>>

Decision_2

<<assign>>assign_12

<<invoke>>-b+D

<<assign>>assign_13

<<invoke>>-b-D

summator

<<paralel>>

Decision_2

<<assign>>assign_14

<<invoke>>X1

<<assign>>assign_15

<<invoke>>X2

multyplicator

Page 6: Интеграция приложений  с помощью  WS-BPEL

<wsdl:definitions xmlns:wsdl=“http://schemas.xmlsoap.org/wsdl/” xmlns:s="http://www.w3.org/2001/XMLSchema"

…….. >

</wsdl:definitions >

WSDL определение сервисов

<wsdl:types> …… </ wsdl:types >

<wsdl:message> …… </ wsdl:message>

<wsdl:portType> …… <wsdl:operation> </ wsdl:operation> <wsdl:operation> </ wsdl:operation> ……</ wsdl:portType>

<wsdl:service> …… <wsdl:port> </ wsdl:port> <wsdl:port> </ wsdl:port> ……</ wsdl:service>

Page 7: Интеграция приложений  с помощью  WS-BPEL

WSDL определение типов даных

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:ms ="http://isofts.kiev.ua/ws/summator" >

</wsdl:definitions >

…..

…..

<wsdl:types> <s:schema elementFormDefault="qualified“ targetNamespace"http://isofts.kiev.ua/ws/summator"">

</wsdl:types>>

<s:element name="Add"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="message" type="tns:AddMessage" /> </s:sequence> </s:complexType> </s:element> <s:complexType name="AddMessage"> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="a" type="s:float" /> <s:element minOccurs="1" maxOccurs="1" name="b" type="s:float" /> </s:sequence></s:complexType><s:element name="AddResponse"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="AddResult" type="s:float" /> </s:sequence> </s:complexType> </s:element>>

Page 8: Интеграция приложений  с помощью  WS-BPEL

<wsdl:definitions xmlns:wsdl="http://isofts.kiev.ua/ws/summator>

</wsdl:definitions >

<wsdl:types> <s:element name="Add"> … s:element name="AddResponse” …</wsdl:types>>

<wsdl:message name=AddIn> <wsdl:part name=“operands” element=“tns: Add” /> </wsdl:message>>

<wsdl:message name=AddOut> <wsdl:part name=“result” element=“tns: AddResponce”/> </wsdl:message>>

Определение структуры сообщений

Определение типов портов

<wsdl:portType name=“Arihmetika”> <wsdl:operation name=“ADD” > <wsdl:input message= “tns:AddIn” /> <wsdl:output message=“tns:AddOut”/> </wsdl: operation>

<wsdl:operation name=“MULT” > <wsdl:input message= “tns:AddIn” /> <wsdl:output message=“tns:AddOut”/> </wsdl: operation> </wsdl: portType>> Определение сервиса

<wsdl:binding name=“ArihmetikaSoap” type= “tns:Aritmetika”> <soap:binding transport=“http://schemas.xmlsoap.org/soap/http” /> <wsdl:operation name=Add><soap:operation SoapAction=“http://isofts.kiev.ua/WS/Add” style=“document”/ > <wsdl:input ><soap:body use literal/> </wsdl:input> <wsdl:output> <soap:body use literal/> </wsdl:output> </wsdl: operation>

<wsdl:operation name=“MULT” > ……. </wsdl: operation> </wsdl: binding>> <wsdl:service name=“Arihmetika”> <wsdl:port name =“Arihmetika” binding= “tns:ArihmetikaSoap”> <soap:location= =“http://isofts.kiev.ua/WS/Aritm.asmx” />

</wsdl:port> </wsdl: service>

Page 9: Интеграция приложений  с помощью  WS-BPEL

Прием входящего сообщения.

<wsdl:definitions >

</wsdl:definitions >

<plnk:PartnerLinkType name =“solveReqw”> <plnk:role name=“executor” porttype=“solve”/> <plnk:PartnerLinkType>

<scope>

</scope>

<receive name=“Start" partnerLink=“scientist” operation="Solve“ variable=“koef“ createInstance="yes" />

<partnerLink name=“scientist”> partnerLinkType=“solveReqw” myRole=“executor” </partnerLink> <variables > <variable> name=“koef” messageType =“List” </variable > </variables >

<wsdl:portType name=“solve”><wsdl:operation name=“solve”> <wsdl:input message= “List” /> <wsdl:output message=“List”/></wsdl: operation> </wsdl: portType>>

<wsdl:types> <s:schema elementFormDefault="qualified“ targetNamespace"http://isofts.kiev.ua/ws/summator"">

</wsdl:types>>

<s:element name="Array1D"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name=“K" type="tns:FlArray" /> </s:sequence> </s:complexType> </s:element>

<s:complexType name=“FlArray"> <s:sequence> <s:element minOccurs=“0" maxOccurs=“unbound" name=“k" type="s:float" /> </s:sequence> </s:complexType>

<wsdl:message name=“List”> <wsdl:part name=“items” element=“tns: Array1D” /> </wsdl:message>>

<<обращает>>

<<перемножает>>

<<извлекает корни>>

<<суммирует>>

<<получает>>

<<получает>>

<<запускает>>

[>=0]

[<0]

<<receive>>

получение коєффициенто

в

<<if>>

?>0

scientistsummator

multyplicator

invertor

extractor

<<sequence>>

расчет дискриминанта

<<sequence>>

расчет корней<<reply>>

решение

<<replyFault>>

нет корней

Page 10: Интеграция приложений  с помощью  WS-BPEL

<scope>

</scope>

Расчет слагаемых дискриминанта

<wsdl:definitions >

</wsdl:definitions >

<flow>

</flow>

<plnk:PartnerLinkType name =“directAr”><plnk:role name=“executor” porttype=“Arihmetika”/> <plnk:PartnerLinkType>

<scope>

</scope>

<assign> <copy> <from> $koef.items.k[2] </from> <to> $o1.operands.Add.b</to> </copy> </assign> <invoke name=“b*b" partnerLink=“M1" operation=“Mult“ inputVariable="o1" outputVariable=“p1"/>

<variables><variable> name=“o1” messageType =“AddIn”</variable ></variables ><assign> <copy> <from> $koef.items.k[2] </from> <to> $o1.operands.Add.a</to> </copy> </assign>

<scope>

</scope>

<assign> <copy> <from> $koef.items.k[3] </from> <to> $o1.operands.Add.b</to> </copy> </assign> <invoke name=“4*a*c" partnerLink=“M1" operation=“Mult“ inputVariable="o1"

outputVariable=“p2"/>

<variables><variable> name=“o1” messageType =“AddIn”</variable ></variables ><assign> <copy> <from> $koef.items.k[1]*4 </from> <to> $o1.operands.Add.a</to> </copy> </assign>

<<paralel>>

Decision_2

<<assign>>assign_9

<<invoke>>b*b

<<assign>>assign_10

<<invoke>>4*a*c

multyplicator

<import namespace>=“http://isofts.kiev.ua/WS/Arihmetikadef” location= “http://isofts.kiev.ua/WS/Arihmetika.wsdl” importType="http://schemas.xmlsoap.org/wsdl/wsdl.xsd” />

<variables> <variable>name=“p1” messageType =“AddOut”</variable> <variable>name=“p2” messageType” =“AddOut </variable> </variables >

<partnerLink name=“M1” partnerLinkType=“directAr” PartnerRole=“executor” > <EndPointReference> <address>=“http://isofts.kiev.ua/WS/Aritm.asmx”</address><ServiceName>Arihmetika</SeviceName></EndP..> </partnerLink>

Page 11: Интеграция приложений  с помощью  WS-BPEL

<scope>

</scope>

Расчет дискриминанта

<wsdl:definitions >

</wsdl:definitions >

<sequense >

</sequence>

<plnk:PartnerLinkType name =“inversAr”><plnk:role name=“executor” porttype=“invers”/> <plnk:PartnerLinkType>

<partnerLink name=“M2” partnerLinkType=“inversAr” PartnerRole=“executor” >.. </partnerLink>

<if name=“Dless0”> <condition> $p1.addresponce.addResult < 0 </condition>

<trow> faultname=“D_is_negative” </throw>

<else><sequence>

<invoke name=“sqrtD" partnerLink=“M2" operation=“Sqrt“ inputVariable=“p1" outputVariable=“p2"/>

</sequence> </else></if>

<variables> <variable>name=“p1” messageType =“AddOut”</variable> <variable>name=“p2” messageType =“AddOut”</variable> </variables >

<import namespace>=“http://itf.kiev.ua/WS/InversArihm.def” location= “http://itf.kiev.ua/WS/inversArihm.wsdl” importType="http://schemas.xmlsoap.org/wsdl/wsdl.xsd” />

<scope>

</scope>

<invoke name=“D" partnerLink=“M1" operation=“Add“ inputVariable="o1" outputVariable=“p1"/>

<variables><variable> name=“o1” messageType =“AddIn”</variable ></variables >

<assign> <copy> <from> $p1.addresponce.AddResult</from> <to> $o1.operands.Add.a</to> </copy> </assign> <assign> <copy> <from>- $p2.addresponce.AddResult</from> <to> $o1.operands.Add.b</to> </copy> </assign>

Page 12: Интеграция приложений  с помощью  WS-BPEL

<scope>

</scope>

Расчет корней

<sequense >

</sequence>

<variables><variable>name=“p1” ..”AddOut”</variable> .. “p2” .. “p3” “AddOut”…</variables ><partnerLink name=“M1” partnerLinkType=“directAr” PartnerRole=“executor” </partnerLink><partnerLink name=“M2” partnerLinkType=“inversAr” PartnerRole=“executor” >.. </partnerLink><assign> <copy> <from> $koef.items.k[1]*2 </from> <to> $p1.addresponce.addResult </to> </copy>

</assign> <invoke name=“1/2а" partnerLink=“M2" operation=“Invrs“ inputVariable=“p1" outputVariable=“p1"/> <flow>

</flow>

<scope> <variables><variable> name=“o1” messageType =“AddIn”</variable ></variables > <assign> <copy> <from> -$koef.items.k[2] </from> <to> $o1.operands.Add.a</to> </copy> </assign> <assign> <copy> <from> $p2.addresponce.AddResult </from> <to> $o1.operands.Add.b</to> </copy> </assign> <invoke name=“x1p" partnerLink=“M1" operation=“Add“ inputVariable="o1" outputVariable=“p3"/> </scope>

<scope> <variables><variable> name=“o1” messageType =“AddIn”</variable ></variables > <assign> <copy> <from> -$koef.items.k[2] </from> <to> $o1.operands.Add.a</to> </copy> </assign> <assign> <copy> <from> -$p2.addresponce.AddResult</from> <to> $o1.operands.Add.b</to> </copy> </assign> <invoke name=“x2p" partnerLink=“M1" operation=“Add“ inputVariable="o1" outputVariable=“p2"/> </scope> <flow>

</flow>

<scope> <variables><variable> name=“o1” messageType =“AddIn”</variable ></variables > <assign> <copy> <from> $p1.addresponce.AddResult </from> <to> $o1.operands.Add.a</to> </copy> </assign> <assign> <copy> <from> $p2.addresponce.AddResult </from> <to> $o1.operands.Add.b</to> </copy> </assign> <invoke name=“x1p" partnerLink=“M1" operation=“Add“ inputVariable="o1" outputVariable=“p2"/> </scope>

<scope> <variables><variable> name=“o1” messageType =“AddIn”</variable ></variables > <assign> <copy> <from> $p1.addresponce.AddResult </from> <to> $o1.operands.Add.a</to> </copy> </assign> <assign> <copy> <from> $p3.addresponce.AddResult] </from> <to> $o1.operands.Add.b</to> </copy> </assign> <invoke name=“x2p" partnerLink=“M1" operation=“Add“ inputVariable="o1" outputVariable=“p3"/> </scope>

Page 13: Интеграция приложений  с помощью  WS-BPEL

Отправка исходящего сообщения.

<wsdl:definitions >

</wsdl:definitions >

<plnk:PartnerLinkType name =“solveReqw”> <plnk:role name=“executor” porttype=“solve”/><plnk:PartnerLinkType>

<scope>

</scope>

<reply name=“Finish" partnerLink=“scientist” operation="Solve“ variable=“koef”/>

<partnerLink name=“scientist”> partnerLinkType=“solveReqw” myRole=“executor” </partnerLink> <variables > <variable> name=“koef” messageType =“List” </variable > </variables >

<wsdl:portType name=“solve”><wsdl:operation name=“solve”> <wsdl:input message= “List” /> <wsdl:output message=“List”/> </wsdl: operation> </wsdl: portType>>

<wsdl:types>

</wsdl:types>>

<wsdl:message name=“List”> <wsdl:part name=“items” element=“tns: Array1D” /> </wsdl:message>>

<scope> <variables><variable> name=“o1” messageType =“AddIn”</variable ></variables > <assign> <copy> <from> $p3.addresponce.AddResult </from> <to>$koef.items.k[1] </to> </copy> </assign> <assign> <copy> <from> $p2.addresponce.AddResult </from> <to> >$koef.items.k[2] </to> </copy> </assign>

<Faulthandlers> <Catch faultname=“D_is_negative”>

<Reply name=“Finish" partnerLink=“scientist” operation="Solve“ variable=“koef” faultName=" D_is_negative " />

</Catch>

<CatchAll> <rethrow> </rethrow> </CatchAll></Faulthandlers>

Page 14: Интеграция приложений  с помощью  WS-BPEL

Подходы к построению распределѐнных корпоративных информационных систем.

Enterprise

Service Bus

Подсистема

Подсистема

Подсистема

Взаимодействие всех приложений через единую точку, которая, при необходимости, обеспечивает транзакции, преобразование данных, сохранность обращений. Обеспечивается большая гибкость, простоа масштабирования. При замене одного приложения подключенного к

шине нет необходимости перенастраивать остальные.

BizTalkNetWeaver

XI/PI WebSphere JBoss

Page 15: Интеграция приложений  с помощью  WS-BPEL

Пример интеграции разнотипных приложений.

СФЕРА

SAP

IT предприят

ие

ФАРМАК

BizTalk

Page 17: Интеграция приложений  с помощью  WS-BPEL

Оркестровка и хореография.

Орекестровка предполагает наличие центрального процессора,

который вызывает веб-сервисы. Веб-сервисы в этом случае "не

знают", что они участвуют в более глобальном бизнес-процессе.Языками моделирования для

описания оркестровки являются WS BPEL XPDL и др.

При хореографии бизнес-процессов не требуется

центральный координатор, поскольку каждый веб-сервис "знает", когда выполнять свои

операции и с каким другим веб-сервисом он взаимодействует.Языками моделирования для

описания хореографии выступают WS-CDL (от W3C) и ebXML (от

OASIS).... м