1 / 17

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

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

joelle
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Жизненный цикл WORKFLOW c использованием WS-BPEL в WEB 5 Портали В2В .NET Користувачі сервісів 4 Потоки бізнес-процесів 3 Сервіси (атомарні, композитні) 2 Компоненти 1 SAP Застосування Операційні системи Застосування Пакети застосувань Застосування замовника Платформи Сполучне ПО OS/390 DB2 MQ Unix Реинжениринг бизнеспроцессов проектирование разработка Выполнение SOAP

  3. aX + bX +c = 0 2 Реинжениринг бизнеспроцесса Постановка задачи X1 = -b/2a+ (b*b-4ac)/4a*a Методика X2= -b/2a- (b*b-4ac)/4a*a Технологический цикл

  4. UDDI Реестр Проектирование Декомпозиция процесса Поиск готовых компонент Проектирование недостающих UML диаграммы

  5. Структура WS-BPEL документа • <wsdl:definitions …..> • Типы и структура сообщений , порты сервисов, типы связей между партнерами • </wsdl:definitions > <process …xlmns = пространства имен> </process > <variables> …… </variables> <partnerLinks> …… </ partnerLinks > <scope> </scope> <recieve> принять коэффициенты уравнения </recieve> <sequense расчет дискриминанта> <flow> расчет слагаемых </flow>… <if> fault| извлечение корня </if>… </sequence> <sequense расчет корней> ….. расчет знаменателя <flow> расчет слагаемых</flow>… <flow> расчет корней </flow> </sequence> <reply> вернуть решение </ reply> <FaultHandlers> нет корней!! </ FaultHandlers>

  6. WSDL определение сервисов • <wsdl:definitions xmlns:wsdl=“http://schemas.xmlsoap.org/wsdl/” xmlns:s="http://www.w3.org/2001/XMLSchema" • ……..> • </wsdl:definitions > <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>

  7. 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>>

  8. <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>

  9. Прием входящего сообщения. <wsdl:definitions > </wsdl:definitions > <wsdl:types> <s:schema elementFormDefault="qualified“targetNamespace"http://isofts.kiev.ua/ws/summator""> </wsdl:types>> <s:complexType name=“FlArray"> <s:sequence> <s:element minOccurs=“0" maxOccurs=“unbound" name=“k" type="s:float" /> </s:sequence></s:complexType> <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> <wsdl:message name=“List”> <wsdl:part name=“items” element=“tns: Array1D” /> </wsdl:message>> <wsdl:portType name=“solve”><wsdl:operation name=“solve”> <wsdl:input message= “List” /> <wsdl:output message=“List”/> </wsdl: operation> </wsdl: portType>> <plnk:PartnerLinkType name =“solveReqw”> <plnk:rolename=“executor” porttype=“solve”/> <plnk:PartnerLinkType> <scope> </scope> <partnerLink name=“scientist”> partnerLinkType=“solveReqw” myRole=“executor” </partnerLink> <variables ><variable> name=“koef” messageType =“List” </variable ></variables > <receive name=“Start" partnerLink=“scientist” operation="Solve“ variable=“koef“ createInstance="yes" />

  10. Расчетслагаемых дискриминанта <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> $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"/> <scope> </scope> <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> <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"/> <wsdl:definitions > </wsdl:definitions > <import namespace>=“http://isofts.kiev.ua/WS/Arihmetikadef” location= “http://isofts.kiev.ua/WS/Arihmetika.wsdl” importType="http://schemas.xmlsoap.org/wsdl/wsdl.xsd” /> <plnk:PartnerLinkType name =“directAr”><plnk:rolename=“executor” porttype=“Arihmetika”/> <plnk:PartnerLinkType> <scope> </scope> <partnerLink name=“M1” partnerLinkType=“directAr” PartnerRole=“executor” > <EndPointReference> <address>=“http://isofts.kiev.ua/WS/Aritm.asmx”</address><ServiceName>Arihmetika</SeviceName></EndP..> </partnerLink> <variables> <variable>name=“p1” messageType =“AddOut”</variable> <variable>name=“p2” messageType” =“AddOut </variable></variables > <flow> </flow>

  11. Расчетдискриминанта <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>- $p2.addresponce.AddResult</from> <to> $o1.operands.Add.b</to> </copy> </assign> <invoke name=“D" partnerLink=“M1" operation=“Add“inputVariable="o1" outputVariable=“p1"/> <wsdl:definitions > </wsdl:definitions > <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” /> <plnk:PartnerLinkType name =“inversAr”><plnk:rolename=“executor” porttype=“invers”/> <plnk:PartnerLinkType> <scope> </scope> <partnerLink name=“M2” partnerLinkType=“inversAr” PartnerRole=“executor” >.. </partnerLink> <variables> <variable>name=“p1” messageType =“AddOut”</variable> <variable>name=“p2” messageType =“AddOut”</variable></variables > <sequense > </sequence> <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>

  12. Расчеткорней <scope> </scope> <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> <sequense > </sequence> <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> <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> $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> -$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> <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>

  13. Отправка исходящего сообщения. <wsdl:definitions > </wsdl:definitions > <wsdl:types> </wsdl:types>> <wsdl:message name=“List”> <wsdl:part name=“items” element=“tns: Array1D” /> </wsdl:message>> <wsdl:portType name=“solve”><wsdl:operation name=“solve”> <wsdl:input message= “List” /> <wsdl:output message=“List”/></wsdl: operation> </wsdl: portType>> <plnk:PartnerLinkType name =“solveReqw”> <plnk:rolename=“executor” porttype=“solve”/><plnk:PartnerLinkType> <scope> </scope> <partnerLink name=“scientist”> partnerLinkType=“solveReqw” myRole=“executor” </partnerLink> <variables ><variable> name=“koef” messageType =“List” </variable ></variables > <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> <reply name=“Finish" partnerLink=“scientist” operation="Solve“ variable=“koef”/> <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>

  14. Подходы к построению распределѐнных корпоративных информационных систем. Подсистема Подсистема Подсистема EnterpriseServiceBus Взаимодействие всех приложений через единую точку, которая, при необходимости, обеспечивает транзакции, преобразование данных, сохранность обращений. Обеспечивается большая гибкость, простоа масштабирования. При замене одного приложения подключенного к шине нет необходимости перенастраивать остальные. NetWeaver XI/PI BizTalk WebSphere JBoss

  15. Пример интеграции разнотипных приложений. ФАРМАК IT предприятие BizTalk СФЕРА SAP

  16. Решения BIZTALK. Адаптерыдля основных протоколов: FILE, HTTP, SOAP, FTP, POP3, SMTP, SQL… Publish / subscribe Architecture Message broker.EAIB2BBPM. SOA WSBPEL

  17. Оркестровка и хореография. При хореографии бизнес-процессов не требуется центральный координатор, поскольку каждый веб-сервис "знает", когда выполнять свои операции и с каким другим веб-сервисом он взаимодействует.Языками моделирования для описания хореографии выступают WS-CDL (от W3C) и ebXML (от OASIS).... м Орекестровка предполагает наличие центрального процессора, который вызывает веб-сервисы. Веб-сервисы в этом случае "не знают", что они участвуют в более глобальном бизнес-процессе.Языками моделирования для описания оркестровки являются WS BPEL XPDL и др.

More Related