




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SOAの中核技術としてのBPEL稚内北星学園大学丸山不二夫第一页,共一百九十二页。SOAにとってもっとも基本的な概念は、「ネットワーク上のサービス」という概念である。それが、歴史的には古い起源をもっていることを再発見したのが、Grid技術である。SOAに先行したもの第二页,共一百九十二页。1998年TheGrid:BlueprintforaNewComputingInfrastructureIanFoster第三页,共一百九十二页。「電力グリッド」とのアナロジー電気を使う時、我々は、電気がどこで作られたものなのかを意識する必要はない。正確に言えば、それを知ることは出来ない。大事なポイントは、我々は、電力会社に対して電気供給という「サービス」を要求しているということ。電力グリッドは、発電や送電の細部を利用者には隠しながら、同時に、簡単なインターフェースで、安定した電力サービスを提供することを可能にしている。第四页,共一百九十二页。携帯電話のサービス携帯の通話の相手が、物理的にどこの場所にいて、論理的にはどのネットワークに属しているのを知ることは、ネットワーク技術的には、本質的に重要な問題である。しかし、私たちは、相手がどこにいるのか分からなければつながらない携帯電話を使おうとは思わない。携帯電話会社に対して、我々は、「通話サービス」を、そしてそれのみを要求している。第五页,共一百九十二页。ネットワークとサービス電力・通信・放送(ラジオ、テレビ)といった昔からの「ネットワーク産業」で、サービス概念が発達していた。こうした古いタイプのネットワーク産業は、サービスを流通させるネーション・ワイド(あるいは地球規模)の巨大なネットワークを構築してきた。コンピュータでのサービス概念の発生も、歴史的には、コンピュータのネットワーク利用の展開と結びついていた。第六页,共一百九十二页。ネットワークが「サービス」を提供する
という考え方の歴史的な発展と成熟20世紀初頭の電力ネットワークに始まる、各種のLife-lineネットワーク産業の成立と発展。21世紀初頭のデジタル・ネットワークの高速化と機能拡大。ビジネスの世界でのネットワーク利用の拡大。ネットワーク上でのメディアの統合の進展、第七页,共一百九十二页。ネットワークのサービスの及ぶ範囲の
狭隘さを抜本的に変革・拡大する流れかってのサーバ・クライアント・モデルでのプログラミングは、基本的には、家族ないし狭い共同体の中で物々交換をしていたのと似ている今まで狭い範囲に押し込められていたネットワーク上のサービスの流通の世界を、一挙にグローバルな規模のサービスの自由市場に変えようという試み第八页,共一百九十二页。SOAの中心技術としてのWebサービスSOAには、多くの定義がある。ここでは、WebサービスがSOAの中心
技術であるという観点からSOAを定義
する。第九页,共一百九十二页。SOAとは?ネットワーク上のサービスすべての要素がサービスから構成されているようなアーキテクチャを、SOA(「サービス志向アーキテクチャ」)と呼ぶ。このアークテクチャ上では、サービスは基本的にはネットワークを通じて提供される。第十页,共一百九十二页。SOAとは?Webサービスの統合技術狭義では、SOAとはWebサービスの統合技術である。広義では?
(WSIFBindingを用いた、多様な「サービス」のWSDLを通じた記述。)第十一页,共一百九十二页。SOAPの改名SimpleObjectAccessProtocol
Services-OrientedArchitectureProtocol第十二页,共一百九十二页。オブジェクト志向とサービス志向オブジェクトサービス言語レベルで存在ネットワーク上に存在プリミティブ/抽象的構成物/具体的スタティックダイナミック構造重視構造+時間上の変化クラス図クラス図+フロー図第十三页,共一百九十二页。Webサービスの変化シンプルなSOAP-RPCとして出発したWebサービスは、様々な点で、大きな変化を遂げた。その変化は、現在も続いている。ここでは、その変化の方向を概観する。第十四页,共一百九十二页。統合技術としてのWebサービスアプリケーション間の汎用的な相互運用可用性を実現「疎結合」を使った統合モデル異機種混合環境を柔軟に統合B2C、B2B、企業のアプリケーションの統合第十五页,共一百九十二页。Webサービスの基本仕様SOAP:サービスの基本的な相互運用可用性のため、XMLのメッセージング・プロトコルを定義WSDL:サービスを記述する、共通の文法を導入するUDDI:サービスの公開と発見をシステマティックに行うための基盤を提供する第十六页,共一百九十二页。WebサービスのWSDL中心の定義
Webサービスは、よく知られたプロトコル(HTTP/SNMPetc)、よく知られたデータ形式(XML)の上に、コンポーネント化されたサービスの疎結合のインターフェースを定義(WSDL)して、さまざまのコンポーネントの間に相互運用可能な連携を作っていこうというもの。JAX-RPCWSIF
Binding第十七页,共一百九十二页。ビジネスの相互作用のモデルビジネスの相互作用のモデルは、状態を持ち、複数の相手を巻きこんで長い期間持続する、ピアトゥピアの一連のメッセージを想定しているVeryLongTimeRuningProcessASyncCallbackPartnerLinkModel第十八页,共一百九十二页。Webサービスでの「状態」の扱いWSDLが直接サポートしている相互作用のモデルは、同期型、あるいは、相関の機能を持たない非同期型の、本質的に状態を持たないモデルである。WS-AddressingCorrelationWS-ResourceFramework第十九页,共一百九十二页。BPELの登場BPELは、ヘテロな環境でもアプリケーションの統合が可能なWebサービスを利用して、ビジネス・プロセスを統合しようとするものである。BPELは、Webサービスのもっとも新しい技術を取り入れているWebサービスの最前線である。第二十页,共一百九十二页。Orchestration:BPEL4WS
BusinessProcessExecutionLanguageforWebServicesIBM,Microsoft,BEAが仕様策定Choreography:WSCI
WebServicesChoreographyInterfaceSun,SAP,Intalio,BEAが仕様策定OASISWebBPELTC
IBM,Microsoft,BEA,Oracle,Sun,SAP第二十一页,共一百九十二页。Webサービスの「統合」の技術的背景テクニカルには、Webサービス間の複雑な相互関係を記述する必要が生まれている。Webサービスのアーキテクチャが、単なるRPCを超えて発展しつつあることDocumentcentricな処理モデルが、信頼性の高い疎結合の「ビジネス統合」のメカニズムとして登場しつつあること第二十二页,共一百九十二页。第二十三页,共一百九十二页。第二十四页,共一百九十二页。BPELを支える新しい技術
DocumentCentric
WSDLMessageExchangePattern
WS-Addressing
WSIF第二十五页,共一百九十二页。DocumentCentric
Java-XMLマッピングの問題
RPCNo!
DocumentCentric第二十六页,共一百九十二页。RPCJava<->XMLマッピング引数のオブジェクトXMLクライアントでのメソッド呼び出しXML返り値のオブジェクトSerializationDeSerializationXMLXML引数のオブジェクト返り値のオブジェクトDeSerializationSerializationサーバでのメソッド呼び出しHTTPPOST第二十七页,共一百九十二页。RPCDocumentCentricXMLXMLXMLXMLInXMLOutXMLInside第二十八页,共一百九十二页。WSDL
Message
ExchangePatterns
Request-ResponseMEP
One-WayMEP
CallbackMEP第二十九页,共一百九十二页。One-WayMEPRequest-ResponseMEPWSDLMessageExchangePatterns第三十页,共一百九十二页。CallbackMEPWSDLMessageExchangePatterns第三十一页,共一百九十二页。WS-Addressing
MessageInformationHeaders
EndpointReference第三十二页,共一百九十二页。
[宛先](必須)
<wsa:To>xs:anyURI</wsa:To>
[送信元エンドポイント]
<wsa:From>エンドポイントリファレンス</wsa:From>
[応答先エンドポイント]
<wsa:ReplyTo>エンドポイントリファレンス</wsa:ReplyTo>
[障害報告エンドポイント]
<wsa:FaultTo>エンドポイントリファレンス</wsa:FaultTo>
[アクション](必須)
<wsa:Action>xs:anyURI</wsa:Action>
[メッセージID]
<wsa:MessageID>xs:anyURI</wsa:MessageID>[関係]<wsa:RelatesToRelationshipType="...">xs:anyURI</wsa:RelatesTo>MessageInformationHeaders第三十三页,共一百九十二页。EndpointReferenceの
SOAPメッセージへのマッピングエンドポイントリファレンスのwsa:Address情報は、SOAPメッセージの宛先wsa:Toにコピーされる。エンドポイントリファレンスのwsa:ReferenceProperties情報は、SOAPメッセージのヘッダブロックになる。wsa:ReferenceProperties内のそれぞれの要素が、直接、ヘッダーブロックに追加される。第三十四页,共一百九十二页。<wsa:EndpointReference><wsa:Address>
</wsa:Address><wsa:ReferenceProperties><tns:resourceID>C</tns:resourceID></wsa:ReferenceProperties></wsa:EndpointReference><soap:Envelope><soap:Header><wsa:To></wsa:To><tns:resourceID>C</tns:resourceID></soap:Header><soap:Body>…somemessage</soap:Body></soap:Envelope>AB第三十五页,共一百九十二页。BPELの概要第三十六页,共一百九十二页。BPELの概要(1)BPELは、プロセスとそのパートナーとの間の相互作用に基づいて、ビジネスプロセスの振る舞いを記述するためのモデルと文法を定義する。パートナーの相互作用は、Webサービスのインターフェースを通じておこなわれる。インターフェースレベルの関係の構造は、partnerlinkと呼ばれるものにカプセル化される。第三十七页,共一百九十二页。BPELの概要(2)BPELは、ビジネスの例外やフォールトを処理するシステマティックなメカニズムを導入している。
BPELでは、プロセス内の個別のあるいは組み合わされたアクティビティに、例外が起きた場合、あるいはパートナーが逆のリクエストを出した場合に、どのように補償されるべきかを定義するメカニズムが導入されている。第三十八页,共一百九十二页。BPELのActivityの例PrimitiveActivities
<receive>
パートナーからのメッセージを待つ
<invoke>
メッセージを発する
<reply>
パートナーにメッセージを返す……StructuredActivities
<sequence>
順番に実行する
<flow>
並行して実行する
<pick>
メッセージに応じて一つを実行する……..第三十九页,共一百九十二页。WebServiceWebServiceStep1Step2Step3AStep3B<Receive><Reply><invoke><Sequence><Flow>第四十页,共一百九十二页。<process>
<!–Definitionandrolesofprocessparticipants--><partnerlinks>...</partnerlinks>
<!-Data/stateusedwithintheprocess--><variables>...</variables>
<!-Propertiesthatenableconversations--><correlationSets>...</correlationSets>
<!-Exceptionhandling--><faultHandlers>...</faultHandlers>
<!-Errorrecovery–undoingactions--><compensationHandlers>...</compensationHandlers>
<!-Concurrenteventswithprocessitself--><eventHandlers>...</eventHandlers>
<!-Businessprocessflow-->(activities)*</process>BPELStructure第四十一页,共一百九十二页。BPELサンプル:LoanFlow第四十二页,共一百九十二页。登場人物Client信用評価機関ローン会社Aローン会社Bシナリオクライアントは、まずローンが借りられるかのチェックを受けて、ローン会社Aとローン会社Bにローンを申し込む。二つのローン会社で条件のいいほうを選択する。第四十三页,共一百九十二页。このシナリオの登場人物は、基本的には、ネットワーク上の独立したサービスとして登場する。BPELはそれらのサービスを結合するClient信用評価機関:CreditRatingServiceローン会社A:UnitedLoanServiceローン会社B:StarLoanServiceBPEL
ネットワーク上のサービスの結合第四十四页,共一百九十二页。BPELProcessClientCreditRatingServiceUnitedLoanServiceStarLoanService第四十五页,共一百九十二页。BPELサンプル:LoanFlow
基本的な処理の流れクライアントのSSN番号で、CreditRatingServiceに問い合わせをして、ローンが可能かをチェックする。銀行に残高が無ければ、その時点で終わり。
サービス呼出し・例外処理二つのローン会社に、ローンの申し込みをする。その際、二つのローン会社に同時に(並行して)申し込む。
サービス呼出し・並列実行第四十六页,共一百九十二页。BPELサンプル:LoanFlow
基本的な処理の流れ二つの会社のローンの条件が返ったら、それを比較して、条件のいいほうの会社を選ぶ。
比較・条件分岐
選んだローン会社とローンの条件を、クライアントに伝える。
クライアントへのcallback第四十七页,共一百九十二页。CreditRatingService問い合わせローン申し込み・並列実行条件比較クライアントへの通知(callback)第四十八页,共一百九十二页。第四十九页,共一百九十二页。疎結合されたサービス
留意すべきことBPELで結合されるサービスは、相互に独立したサービスであること。サービスの結合は、メッセージの交換によって行われること。サービス結合のインターフェースは、WSDLで与えられること。サービス実装のスタイルは、問わないこと。第五十页,共一百九十二页。BPELは、
サービスをどのように結合するか?複数のサービスを結合したBPELプロセスは、そのBPELを利用するクライアントに対しては、一つのサービスとして見える。第五十一页,共一百九十二页。ClientBPELProcessBPELの利用者には、BPELは、WSDLで定義された一つのWebサービスのように見える。第五十二页,共一百九十二页。ClientService
AService
BService
CBPELProcessBPELの利用者には、BPELは、WSDLで定義された一つのWebサービスのように見える。実際には、複数のサービスが統合されている第五十三页,共一百九十二页。ClientService
AService
BService
CBPELProcessBPELProcessServiceA1ServiceA2ServiceA3ServiceC2ServiceC1Service
AService
C呼出し側からは、一つのサービスに見えるものも、BPELで結合されたサービスかもしれない。第五十四页,共一百九十二页。ClientService
AService
BService
CBPELProcessBPELProcessBPELProcessServiceA1ServiceA2ServiceA3ServiceC2ServiceC1BPELで結合されたサービスも、一つのサービスだから、BPELからよびだすことが出来る。第五十五页,共一百九十二页。コンポーネント化されたサービスで
形成されたサービスの疎結合の網の目一つのWSDLで、二つのサービス間の結合を記述できるが、複数のWSDLがあっても、二点間のサービスの結合を複数記述できるだけである。複数のWSDL+BPELは、BPELが複数のサービスの結節点の役割を果たして、複数のサービスから構成されたサービスを記述できる。こうして構成されたサービスも、リカーシブに、サービス・アーキテクチャの構成要素となる。第五十六页,共一百九十二页。
同期型と非同期型の
メッセージ交換BPELでのサービスの結合は、サービス同士がメッセージ交換をすることによって行われる。BPELでは、メッセージ交換には、同期型と非同期型の二つのスタイルが用いられる。第五十七页,共一百九十二页。サービスを結合する
メッセージ交換の二つのスタイルServiceAServiceBServiceAServiceB同期型非同期型BPELには、メッセージのやり取りを通じて二つのサービスを結合する、二つのスタイルが用意されている第五十八页,共一百九十二页。メッセージ交換の二つのスタイル
同期型と非同期型同期型:通常のWebサービスのスタイル。
リクエストに対してレスポンスを返す。その
間、クライアントの動作はブロックされる。非同期型:メッセージングのスタイル。
One-wayメッセージを送出後、同じく
One-wayメッセージであるCallbackを
待つ。第五十九页,共一百九十二页。同期型のメッセージ交換
Webサービス型のRequestとResponseABRequesterProviderRequestResponseAの処理は、responseがあるまでブロックされる第六十页,共一百九十二页。同期型のportType定義
<portTypename=“SyncHelloWorld"><operationname="process"><inputmessage="tns:SyncHelloWorldRequestMessage"/><outputmessage="tns:SyncHelloWorldResponseMessage"/></operation></portType>第六十一页,共一百九十二页。ABSenderReceiverAの処理は、ブロックされないMessage非同期型のOne-waymessaging第六十二页,共一百九十二页。ABCallbackOne-wayMessage非同期型のメッセージ交換
One-waymessagingとCallbackBAOne-wayMessage第六十三页,共一百九十二页。非同期型のportType定義<portTypename=“ASyncHelloWorld"><operationname="initiate"><inputmessage="tns:ASyncHelloWorldRequestMessage"/></operation></portType><portTypename=“ASyncHelloWorldCallback"><operationname="onResult"><inputmessage="tns:ASyncHelloWorldResultMessage"/></operation></portType>第六十四页,共一百九十二页。PartnerとPartnerLinkBPELでは、BPELProcessがメッセージを交換する相手をPartnerと呼び、PartnerとBPELと交換されるメッセージをあわせたものをPartnerLinkと呼ぶ。第六十五页,共一百九十二页。ClientcreditRatingServiceUnitedLoanServiceStarloanServiceBPELProcessBPELProcessは、複数のサービスとメッセージの交換を通じて結びついている。第六十六页,共一百九十二页。PartnercreditRatingServiceUnitedLoanServiceStarloanServiceClientBPELProcessBPELProcessとメッセージの交換を通じて関係を持つサービスを、BPELProcessのPartnerと呼ぶ第六十七页,共一百九十二页。PartnerLinkClientBPELProcessBPELProcessBPELProcessBPELProcesscreditRatingServiceUnitedLoanServiceStarloanService#1#2#3#4PartnerとBPELProcessのペアをPartnerLinkと呼ぶ。先の例は、4つのPartnerLinkからなることになる。第六十八页,共一百九十二页。PartnerLinkを分類するBPELProcessとメッセージを交換するサービスの関係を表現するPartnerLinkは、BPELが呼び出されるのかBPELが呼び出すのかという区別と、メッセージ交換が同期型か非同期型かという区別に応じて、都合、四つのパターンに分かれる。第六十九页,共一百九十二页。PartnerLinkの4つの種類(1)ServiceBPELProcessBPELProcessBPELProcessBPELProcessServiceServiceService同期呼出し非同期呼出し同期呼出し非同期呼出しServiceがBPELを呼び出すBPELがServiceを呼び出す第七十页,共一百九十二页。PartnerLinkの4つの種類(2)ServiceBPELProcessBPELProcessBPELProcessBPELProcessServiceServiceService非同期呼出し同期呼出し同期呼出し非同期呼出し第七十一页,共一百九十二页。PartnerLinkとPartnerLinkTypeAmazonやGoogleのような、よく知られたネット上のサービスがBPELのPartnerとなる場合のPartnerLinkを考えてみれば、基本的には同じタイプのPartnerLinkが、別々のPartnerLinkとして存在することが分かる。こうした同一の型をPartnerLinkTypeと呼ぶ。第七十二页,共一百九十二页。BPELProcessBPELProcessBPELProcessBPELProcessBPELProcessclientclientclientclientclient同一サービスプロバイダとの間の同一タイプのPartnerLinkAmazon,Google,.....第七十三页,共一百九十二页。BPELからのAmazonWebサービスの利用第七十四页,共一百九十二页。AmazonWebサービスへのRequest第七十五页,共一百九十二页。第七十六页,共一百九十二页。第七十七页,共一百九十二页。BPELからのGoogleSearchの利用第七十八页,共一百九十二页。第七十九页,共一百九十二页。第八十页,共一百九十二页。BPELProcessBPELProcessBPELProcessBPELProcessBPELProcessclientclientclientclientclient同一サービスプロバイダとの間の同一タイプのPartnerLinkAmazon,Google,.....第八十一页,共一百九十二页。BPELProcessclientPartnerLinkTypeの定義はサービスのWSDL定義でPartnerLinkの定義はそれぞれのBPEL定義でPartnerLinkTypeとPartnerLinkPartnerLink第八十二页,共一百九十二页。partnerLinkType
portTypeとRole名のマッピングpartnerLink
partnerLinkType
Role名とpartnerRoleあるいは
Role名とmyRoleとのマッピングpartnerLinkTypeとpartnerLinkWSDLに記述BPELに記述第八十三页,共一百九十二页。partnerLinkTypeの区別同期型:Role(=portType)が一つ非同期型:Role(=portType)が二つ
<plnk:partnerLinkTypename="SyncHello"><plnk:rolename="SyncHelloProvider"><plnk:portTypename="tns:SyncHello"/></plnk:role></plnk:partnerLinkType><plnk:partnerLinkTypename="ASyncHelloWorld"><plnk:rolename="ASyncHelloWorldProvider"><plnk:portTypename="tns:ASyncHelloWorld"/></plnk:role><plnk:rolename="ASyncHelloWorldRequester"><plnk:portTypename="tns:ASyncHelloWorldCallback"/></plnk:role></plnk:partnerLinkType>第八十四页,共一百九十二页。
<portTypename="SyncHello"><operationname="process"><inputmessage="tns:SyncHelloRequestMessage"/><outputmessage="tns:SyncHelloResponseMessage"/></operation></portType>
<plnk:partnerLinkTypename="SyncHello"><plnk:rolename="SyncHelloProvider"><plnk:portTypename="tns:SyncHello"/></plnk:role></plnk:partnerLinkType>partnerLinkType定義:同期型第八十五页,共一百九十二页。<plnk:partnerLinkTypename="SyncHelloWorld"><plnk:rolename="SyncHelloWorldProvider"><plnk:portTypename="tns:SyncHelloWorld
"/></plnk:role>
</plnk:partnerLinkType><partnerLinks><partnerLinkname="client"
partnerLinkType="tns:SyncHelloWorld"
myRole="SyncHelloWorldProvider"/></partnerLinks>同期型:WSDLでのpartnerLinkTypeの定義同期型:BPELでのpartnerLinkの定義第八十六页,共一百九十二页。<portTypename="ASyncHelloWorld"><operationname="initiate">
<inputmessage="tns:ASyncHelloWorldRequestMessage"/></operation></portType><portTypename="ASyncHelloWorldCallback"><operationname="onResult"><inputmessage="tns:ASyncHelloWorldResponseMessage"/></operation></portType><plnk:partnerLinkTypename="ASyncHelloWorld"><plnk:rolename="ASyncHelloWorldProvider"><plnk:portTypename="tns:ASyncHelloWorld"/></plnk:role><plnk:rolename="ASyncHelloWorldRequester"><plnk:portTypename="tns:ASyncHelloWorldCallback"/></plnk:role></plnk:partnerLinkType>partnerLinkType定義:非同期型第八十七页,共一百九十二页。
<plnk:partnerLinkTypename=“ASyncHelloWorld"><plnk:rolename=“ASyncHelloWorldProvider"><plnk:portTypename="tns:ASyncHelloWorld"/></plnk:role><plnk:rolename=“ASyncHelloWorldRequester"><plnk:portTypename="tns:ASyncHelloWorldCallback"/></plnk:role></plnk:partnerLinkType><partnerLinks><partnerLinkname="client"
partnerLinkType="tns:ASyncHelloWorld"
myRole=“ASyncHelloWorldProvider"
partnerRole=“ASyncHelloWorldRequester"/></partnerLinks>非同期型:WSDLでのpartnerLinkTypeの定義非同期型:BPELでのpartnerLinkの定義第八十八页,共一百九十二页。PartnerLinkでのRoleの記述PartnerとBPELが相対したとき、BPELProcessの側に属するEndPointが、myRoleの側になり、反対側がpartnerRoleの側となる。第八十九页,共一百九十二页。PartnerLinkBPELProcessPartnerLinkPartnerLinkPartnerLink第九十页,共一百九十二页。PartnerLinkclient<partnerLinkname="client"partnerLinkType="tns:LoanFlow"partnerRole="LoanFlowRequester"myRole="LoanFlowProvider"/>第九十一页,共一百九十二页。
PartnerLinkcreditRatingService
<partnerLinkname="creditRatingService"partnerLinkType="services:CreditRatingService"partnerRole="CreditRatingServiceProvider"/>第九十二页,共一百九十二页。PartnerLinkUnitedLoanService<partnerLinkname="UnitedLoanService"partnerLinkType="services:LoanService"myRole="LoanServiceRequester"partnerRole="LoanServiceProvider"/>第九十三页,共一百九十二页。<partnerLinkname="StarLoanService"partnerLinkType="services:LoanService"myRole="LoanServiceRequester"partnerRole="LoanServiceProvider"/>PartnerLinkStarLoanService第九十四页,共一百九十二页。<partnerLinks><partnerLinkname="client"
partnerLinkType="tns:SyncHelloWorld"
myRole="SyncHelloWorldProvider"/></partnerLinks>第九十五页,共一百九十二页。<partnerLinks><partnerLinkname="client"
partnerLinkType="tns:ASyncHelloWorld"
myRole=“ASyncHelloWorldProvider"
partnerRole=“ASyncHelloWorldRequester"/></partnerLinks>PartnerLinkClient第九十六页,共一百九十二页。BPELProcessmyRolepartnerRole第九十七页,共一百九十二页。BPELProcessBPELProcessmyRole第九十八页,共一百九十二页。PartnerLinkの記述とRoleServiceBPELProcessBPELProcessBPELProcessBPELProcessServiceServiceService同期呼出し非同期呼出し同期呼出し非同期呼出しmyRole=BPELmyRole=BPELpartnerRole=servicepartnerRole=servicemyRole=BPELpartnerRole=service第九十九页,共一百九十二页。
<partnerLinks><partnerLinkname="client"partnerLinkType="tns:LoanFlow"partnerRole="LoanFlowRequester"myRole="LoanFlowProvider"/><partnerLinkname="creditRatingService"partnerLinkType="services:CreditRatingService"partnerRole="CreditRatingServiceProvider"/><partnerLinkname="UnitedLoanService"partnerLinkType="services:LoanService"myRole="LoanServiceRequester"partnerRole="LoanServiceProvider"/><partnerLinkname="StarLoanService"partnerLinkType="services:LoanService"myRole="LoanServiceRequester"partnerRole="LoanServiceProvider"/></partnerLinks>第一百页,共一百九十二页。同期型と非同期型の
サービスの呼び出しBPELあるいはPartnerでのサービスの呼出しには、BPELのアクティビティreceive/reply/invokeが用いられる。呼出しが同期型か非同期型かに応じて、これらの使い方が異なることを見る。第一百零一页,共一百九十二页。BPELProcess同期型のBPELの呼び出し第一百零二页,共一百九十二页。receivereplyRequestResponse同期型のBPELの呼び出し第一百零三页,共一百九十二页。BPELProcess非同期型のBPELの呼び出し第一百零四页,共一百九十二页。receiveCallbackinvokeOne-wayMessage非同期型のBPELの呼び出し第一百零五页,共一百九十二页。BPELProcess同期型のサービスの呼び出し第一百零六页,共一百九十二页。RequestResponseinvoke同期型のサービスの呼び出し第一百零七页,共一百九十二页。BPELProcess非同期型のサービスの呼び出し第一百零八页,共一百九十二页。receiveinvoke非同期型のサービスの呼び出し第一百零九页,共一百九十二页。receive/reply/invokeReceive,reply,invokeでのサービスの呼出しには、partnerlink,portType,operationの三つ組が利用される。同時に、メッセージが受け渡しされる変数名も指定される。第一百一十页,共一百九十二页。BPELProcessreceiveinvoke第一百一十一页,共一百九十二页。receive/reply
<receivename="receiveInput"partnerLink="client"portType="tns:SyncHello"operation="process"variable="input"createInstance="yes"/>
<replyname="replyOutput"
partnerLink="client"
portType="tns:SyncHello"
operation="process"variable="output"/>第一百一十二页,共一百九十二页。invoke
<invokename="invokeCR"
partnerLink="creditRatingService"
portType="services:CreditRatingService"
operation="process"inputVariable="crInput"
outputVariable="crOutput"/>
<invokename="invokeUnitedLoan"
partnerLink="UnitedLoanService"
portType="services:LoanService"
operation="initiate"
inputVariable="loanApplication"/>第一百一十三页,共一百九十二页。BPELの変数と代入第一百一十四页,共一百九十二页。PPEL変数第一百一十五页,共一百九十二页。
<variables><!--inputofthisprocess--><variablename="input"messageType="tns:LoanFlowRequestMessage"/><variablename="crInput"messageType="services:CreditRatingServiceRequestMessage"/><variablename="crOutput"messageType="services:CreditRatingServiceResponseMessage"/><variablename="crError"messageType="services:CreditRatingServiceFaultMessage"/><!--inputofunitedloanandstarloan--><variablename="loanApplication"messageType="services:LoanServiceRequestMessage"/><!--outputofunitedloan--><variablename="loanOffer1"messageType="services:LoanServiceResultMessage"/>…….</variables>第一百一十六页,共一百九十二页。BPEL変数の定義BPELでの変数は、基本的にはMessageTypeを通じて宣言される。MessageTypeは、WSDLのmessage節のname属性によって宣言され、その型はWSDLのtypes節で定義されることになる。その意味では、BPELの変数は、単純なものだけではなく、内部に構造を持つことが出来る。第一百一十七页,共一百九十二页。変数の宣言(messageTypeの利用)<variables>
<variablename="input“messageType="tns:LoanFlowRequestMessage"/><variablename="crInput"messageType="services:CreditRatingServiceRequestMessage"/><variablename="crOutput"messageType="services:CreditRatingServiceResponseMessage"/>
………</variables>第一百一十八页,共一百九十二页。
<messagename="LoanFlowRequestMessage"><partname="payload"
element="s1:loanApplication"/></message><variablename="input“messageType="tns:LoanFlowRequestMessage"/>WSDLmessage節BPELvariable定義BPEL変数定義とWSDLmessage節第一百一十九页,共一百九十二页。
<elementname="loanApplication"type="s1:LoanApplicationType"/>
<complexTypename="LoanApplicationType"><sequence><elementname="SSN"type="string"/><elementname="email"type="string"/><elementname="customerName"type="string"/><elementname="loanAmount"type="double"/><elementname="carModel"type="string"/><elementname="carYear"type="string"/><elementname="creditRating"type="int"/></sequence></complexType>
<messagename="LoanFlowRequestMessage"><partname="payload"element="s1:loanApplication"/></message>WSDLtypes節の一部WSDLtypes節での型定義第一百二十页,共一百九十二页。
<soapenv:Body>
<initiate><auto:loanApplication><auto:SSN>123456789</auto:SSN><auto:email></auto:email><auto:customerName>maruyama</auto:customerName><auto:loanAmount>9999</auto:loanAmount><auto:carModel>CIMA</auto:carModel><auto:carYear>1999</auto:carYear><auto:creditRating>88</auto:creditRating></auto:loanApplication></initiate></soapenv:Body>変数inputの値ワイア上のメッセージの形第一百二十一页,共一百九十二页。
<auto:loanApplication><auto:SSN>123456789</auto:SSN><auto:email></auto:email><auto:customerName>maruyama</auto:customerName><auto:loanAmount>9999</auto:loanAmount><auto:carModel>CIMA</auto:carModel><auto:carYear>1999</auto:carYear><auto:creditRating>88</auto:creditRating></auto:loanApplication>変数inputの値の例第一百二十二页,共一百九十二页。Assign:変数への値の代入BPELでの変数への値の代入は、Assignアクティビティを利用する。Assignには、いくつかの基本的な利用パターンがある。第一百二十三页,共一百九十二页。<assign><copy><fromvariable="input"part="payload"query="/auto:loanApplication/auto:SSN"/><tovariable="crInput"part="payload"query="/services:ssn"/></copy></assign>assignの例(1):変数から変数へXPATHの利用変数inputの値から変数crInputの一部に第一百二十四页,共一百九十二页。
<auto:loanApplication><auto:SSN>123456789</auto:SSN><auto:email></auto:email><auto:customerName>maruyama</auto:customerName><auto:loanAmount>9999</auto:loanAmount><auto:carModel>CIMA</auto:carModel><auto:carYear>1999</auto:carYear><auto:creditRating>88</auto:creditRating></auto:loanApplication>/auto:loanApplication/auto:SSN123456789/auto:loanApplication/auto:email/auto:loanApplication/auto:carModelCIMA/auto:loanApplication/auto:carYear1999XPATHの利用XPATHを利用した変数値へのアクセス例変数inputの値第一百二十五页,共一百九十二页。<assign><copy><fromvariable="crOutput"part="payload"query="/services:rating"/><tovariable="input"part="payload"query="/auto:loanApplication/auto:creditRating"/></copy></assign>assignの例(2):変数から変数へ第一百二十六页,共一百九十二页。<assign>
<copy><from><resultxmlns=""><name/><symbol/><price>12.3</price><quantity>0</quantity><approved/><message/></result></from><tovariable="output"part="payload"/></copy>assignの例(3):
XMLリテラルから変数へのコピー第一百二十七页,共一百九十二页。<!--文字式から変数へのコピー--><copy><fromexpression=“‘GE’”
/><tovariable="output"part="payload“query="/tns:result/tns:symbol"/></copy><!--整数式から変数へのコピー
--><copy><fromexpression="100“
/><tovariable="output"part="payload"query="/tns:result/tns:quantity"/></copy>assignの例(4):
BPELの式から変数へのコピー第一百二十八页,共一百九十二页。<!--boolean値関数から変数へのコピー--><copy><fromexpression="true()“
/><tovariable="output"part="payload"query="/tns:result/tns:approved"/></copy>assignの例(5):
BPELの式から変数へのコピー第一百二十九页,共一百九十二页。Document-StyleとRPC-StyleBPELは、基本的には、RPC-Styleではなく、Document-Styleを用いるが、両者でのpartの扱いには違いがあるので注意が必要である。第一百三十页,共一百九十二页。Document-StyleとRPC-StyleDocument-Style<messagename="LoanFlowRequestMessage"><partname=“payload”element="s1:loanApplication"/></message>RPC-Style<messagename="LoanFlowRequestMessage"><partname="payload"type="s1:LoanApplicationType"/></message>第一百三十一页,共一百九十二页。
<soapenv:Body><initiate><auto:loanApplication><auto:SSN>123456789</auto:SSN><auto:email></auto:email><auto:customerName>maruyama</auto:customerName><auto:loanAmount>9999</auto:loanAmount><auto:carModel>CIMA</auto:carModel><auto:carYear>1999</auto:carYear><auto:creditRating>88</auto:creditRating></auto:loanApplication></initiate></soapenv:Body>
<messagename="LoanFlowRequestMessage"><partname="payload"element=“s1:loanApplication"/></message>Document-Style
ワイア上のメッセージの形式第一百三十二页,共一百九十二页。
<soapenv:Body><initiate><auto:payload><auto:SSN>123456789</auto:SSN><auto:email></auto:email><auto:customerName>maruyama</auto:customerName><auto:loanAmount>9999</auto:loanAmount><auto:carModel>CIMA</auto:carModel><auto:carYear>1999</auto:carYear><auto:creditRating>88</auto:creditRating></auto:payload></initiate></soapenv:Body>
<messagename="LoanFlowRequestMessage"><partname="payload"type="s1:LoanApplicationType
"/></message>RPC-Style
ワイア上のメッセージの形式第一百三十三页,共一百九十二页。Correlation第一百三十四页,共一百九十二页。メッセージ・プロパティBPELは、メッセージの中に埋め込まれたプロトコル関連のデータを同定するために、メッセージ・プロパティという概念を利用する。プロパティは、publicな面に関連した“透過的な”データと考えられ、それに対して、内部的/privateな諸機能が使うのは、“不透明な”データと考えることができる。この“透過的な”データが、correlationを定義するの利用される。第一百三十五页,共一百九十二页。CorrelationSetsの宣言<correlationSets><correlationSetname="PurchaseOrder"properties="cor:customerIDcor:orderNumber"/><correlationSetname="Invoice"properties="cor:vendorIDcor:invoiceNumber"/></correlationSets>correlationSetは名前を持ち、複数のpropertyから構成される。BPELファイル第一百三十六页,共一百九十二页。
Propertyの型の定義<!--definecorrelationproperties--><bpws:propertyname="customerID"type="xsd:string"/><bpws:propertyname="orderNumber"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年集成电路用化学品项目申请报告
- 2025年碳硫分析仪项目提案报告模板
- 2025年表面改性金属材料项目提案报告模范
- 第8课《时间的脚印》教学设计2024-2025学年统编版语文八年级下册
- 第1章 第2节 人口(新教学设计)2023-2024学年八年级上册地理(人教版)
- 小学数学游戏化教学的策略研究
- 2025年床上用织物制品项目发展计划
- 2024河北唐山人才发展集团为唐山市正元名饮商贸有限公司发布招聘业务员笔试参考题库附带答案详解
- 2024江西省建科工程技术有限公司工作人员招聘19人笔试参考题库附带答案详解
- 2024江苏金灌投资发展集团有限公司国家统计局灌南调查队招聘和江苏金灌投资发展集团有限公司第二次招聘及总公笔试参考题库附带答案详解
- 污水管网计算说明书
- 原子杂化轨道理论
- 充填开采之 矸石充填术
- 医院医疗设备采购流程图
- 文化产业园项目建议书范文
- 互联网销售卷烟(烟草)案件的分析
- 公务员考察政审表样本
- 白菜花生长过程记录
- 各类许可证允许使用的放射性药品目录
- 给水管道通水试验及冲洗记录填写范本
- 唐纳森焊烟除尘器(共22页)
评论
0/150
提交评论