180 likes | 359 Views
Моделирование WORKFLOW с помощью WS-BPEL. Керівник. Відповідальний виконавець. П.І. Перконос. С.В. Суботін. Назначение и цели языка. интра- интеграция разнородных приложений. интеграция B2B приложений. обеспечение взаимодействия в гетерогенной среде.
E N D
Моделирование WORKFLOW с помощью WS-BPEL. Керівник Відповідальний виконавець П.І. Перконос С.В. Суботін
Назначение и цели языка • интра- интеграция разнородных приложений • интеграция B2B приложений • обеспечение взаимодействия в гетерогенной среде • поддержка сервис-ориентированной архитектуры
Концептуальные основы WS BPEL • основан на взаимодействии партнеров и процессов с помощью Web сервисов • Способность поддерживать длительные процессы с сохраняемым состоянием • управление последовательностью, определяемое данными • способность обработки исключений • транзакционность
Отношение к другим спецификациям XPATH,XSLT
Базовый словарь языка и средства его расширения WS-BPEL Синтаксическая основа ХМL • К базовым пространствам имен • xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" • xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" • xmlns:xsd="http://www.w3.org/2001/XMLSchema"> • xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/ • Могут быть добавлены проблемно ориентированные • xmlns:wsdl="http://science.org/wsdl/runge_kutt_method • ……………………………………….. пространства имен В спецификацию WS_BPEL могут включаться внешние спецификации <import namespace=«URI идентификатор пространства имен"? location=" URI адрес включаемой спецификации"? importType=" URI адрес xsd схемы включаемой спецификации" />*
Структура WS-BPEL документа • <wsdl:definitions …..> • Спецификация WEB сервисов которые используются в описываемом workflow и партнеров которые в нем участвуют • </wsdl:definitions > <process …> …….. …………. </process > <структурный подпроцесс::= sequence|if|while|repeatUntil|forEach|pick|flow|scope|compensate|.. > <variables> …… </variables> <assign> …XPATH,XSLT выражения… </assign> ……. ……… ……. </структурный подпроцесс> <activity::=receive|reply|invoke|assign|throw| rethrow| exit|wait|empty|validate..> </ activity> <activity> … </ activity> <activity> … </ activity> < структурный подпроцесс> … </ структурный подпроцесс>
Определение WEB сервисов и партнеров • <wsdl:definitions xmlns:wsdl="http://science.org/xsd/runge_kutt_method…..> • </wsdl:definitions > • <wsdl:types> • <xsd:schema> <xsd:import namespace=..., schemalocation=…/> </xsd:schema> • </wsdl:types> <wsdl:message name=..> <wsdl:part name =..,type= “ссылка на тип в wsdl”/> </wsdl:message> ….. <wsdl:porttype name=..> <wsdl:operation name=..> <wsdl:input message=…/> <wsdl:output message=…/> <wsdl:fault name=.,message=…/> </wsdl:operation> </wsdl:porttype> ….. <plnk:partnerLinkType name=..> <plnk:role name=..., portType=.., EPR=..> <plnk:role name=..., portType=..,EPR=> </plnk:partnerLinkType>
Переменные и манипулирование данными <wsdl:definitions > …….. </wsdl:definitions > XML schema EII of XML schema WSDL message <variables > <variable> name= .. messageType=.. |type=...| element </variable > …….. </variables > <process > xlmns:ext .. <validate> variablenames =“v1 v2 … ” </ validate > …….. <assign> <copy> <from >XPATh expression </from> <to> XPATh query</to> </copy></assign> <assign> <copy> <from >DoXslTransformation(«что»,«как») </from> <to> XPATh query</to> </copy></assign> </process>
Основная функциональность Ожидает определенное сообщение Возбуждает исключительную ситуацию Проталкивает исключительную ситуацию в вышестоящий структурный блок Отправляет ответное сообщение Инициирует выполнение сервиса Заверщает Workflow Манипулирование данными Ожидание указанного момента Откат транзакции Проверка данных на соответствие схемы Доопределенная функциональность Пустая операция
Выполнение сервиса <wsdl:definitions > …….. </wsdl:definitions > <process > <invoke partnerLink=… portType=.. operation=.. inputVariable=.. outputVariable=..> <catch faultName=..| faultVariable=.. faultMessageType=..| faultElement=..> activity </catch> <catchAll> activity </catchAll> <compensationHandler> activity </compensationHandler> <toParts> <toPart part=.. fromVariable=.. /> </toParts> <fromParts> <fromPart part=.. toVariable=.. /> </fromParts> </invoke> </process> <variables >……..</variables >
Обмен сообщениями <process > <receive partnerLink=… portType=.. operation=.. Variable=.. MessageExchange=.. > <fromParts> <fromPart part=.. toVariable=.. /> </fromParts> </ receive> <reply partnerLink=.. portType=.. operation=.. Variable=.. MessageExchange=.. > <toParts> <toPart part=.. toVariable=.. /> </toParts> </reply> </process>
Структурная функциональность Ожидание определенного события Параллельное выполнение входящих действий Последовательное выполнение входящих действий Циклическое выполнение цепочки действий Циклическое выполнение цепочки действий Условное выполнение действий Циклическое выполнение цепочки действий Структурирование контекста выполнения
Последовательность выполнения <if> <condition> expression </condition> activity <elseif> <condition> expression </condition> activity </elseif> <else> activity </else> </if> <sequence> activity ……. </sequence> <Flow> <links> <link name=../> .. </links> < activity> <source> linkName=.. <transitionCondition> expr </ transitionCondition> </source> <target> linkName=.. <joinCondition> expr </joinCondition> </ target> < /activity> ……. </Flow>
Циклы <While> <condition> expression </condition> activity </ While> <RepeatUntil> activity <condition> expression </condition> </ RepeatUntil> <Foreach counterName=.. Parallel=yes|no> <startCounterValue> expr</startCounterValue > <finalCounterValue> expr </finalCounterValue > <Completioncondition> <branches successfulBranchesOnly="yes|no"> expression </branches > </Completioncondition> <scope> ……. < / scope> </ Foreach>
Обработка исключений <scope isolated="yes|no” exitOnStandardFault="yes|no"?> …….. <scope> <variables> …. </ variables > <partnerLinks> …. </ partnerLinks > <EventHandlers> …. </ EventHandlers > <FaultHandlers> …. </FaultHandlers > <CompensationHandler> …. </CompensationHandler> <TerminationHandlers> …. </ TerminationHandlers > ACTIVITY <if> … <throw/> </if> </scope> …….. </scope> <FaultHandlers> <Catch faultName=.. Faultvariable=.. > ACTIVITY </Catch > <CatchAll > ACTIVITY </CatchAll > </FaultHandlers> Default faulthandler <CatchAll > <sequence> <compensate/> <rethrow/> </sequence> </CatchAll > <CompensationHandler> ACTIVITY </CompensationHandler> <EventHandlers> <Onevent PartnerLink=.. Operation=.. > <scope >…. </scope > </Onevent> <OnAlarm ><for> duration_expr </for> <Until> duration_expr </ Until > <repeatevery> duration_expr </ repeatevery > <scope >…. </scope > </OnAlarm> </EventHandlers>
Реинжениринг бизнеспроцессов 5 Портали В2В .NET Користувачі сервісів 4 Потоки бізнес-процесів 3 Сервіси (атомарні, композитні) 2 Компоненти 1 SAP Застосування Операційні системи Застосування Пакети застосувань Застосування замовника Платформи Сполучне ПО OS/390 DB2 MQ Unix Жизненный цикл WORKFLOW c использованием WS-BPEL в WEB AbstractWS-BPEL CASE проектирование ExecutableWS-BPEL UddI реестры UddI портал разработка Программные платформы WSDL WEB сервер Выполнение SOAP WSBPEL Engine
Реинжениринг бизнеспроцессов 5 Портали В2В .NET Користувачі сервісів 4 Потоки бізнес-процесів 3 Сервіси (атомарні, композитні) 2 Компоненти 1 SAP Застосування Операційні системи Застосування Пакети застосувань Застосування замовника Платформи Сполучне ПО OS/390 DB2 MQ Unix Жизненный цикл WORKFLOW c использованием WS-BPEL в WEB AbstractWS-BPEL CASE проектирование OWL ExecutableWS-BPEL RDF UddI реестры SPARQL engine разработка Программные платформы WSDL SPARQL engine WEB сервер Выполнение SOAP WSBPEL Engine