PR

BPELサーバとの関連付け

2006年9月7日(木)
高安 厚思

外部との関係

   BPELは外部から呼び出される、あるいは外部を呼び出すことによってプロセスを実行させる。そのため外部との関係をあらわすことが重要となる。また、外部との関係はインターフェースによって定義されるためWSDL(注1)と密接な関係がある。


※注1: WSDL(Wen Service Description Language)
XMLをベースとしたWebサービスを記述するための言語

   BPELとWSDLの関係は表3の手順で定義する。

  1. WSDLにBPEL拡張要素(partnerLinkType)を追加する
  2. BPELにpartnerLink要素を追加する
  3. アクティビティinvoke/receiveを利用してサービスの呼び出し、受け取りをおこなう
表3:WSDLとBPELの関係

   通常、WSDLはサービスの記述をおこなったもので、外部との関係をあらわすものではない。そのため、WSDLにBPEL拡張要素(partnerLinkType)を追加して外部関係をあらわす。

   もっと具体的に説明するため、次のWSDLを元に説明する。

WSDLのpartnerLinkType要素(WSDL)

<definitions targetNamespace="http://www.opst.co.jp/tcu/service1"
 xmlns:tns="http://www.opst.co.jp/tcu/service1"
 xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
 xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/">   

(中略)

<portType name="service1Port">
   <operation name="getOrder">
      <input message="orderRequest"/>
      <output message="orderInformation"/>
      <fault name="unableToHandleRequest" message="errorMessage"/>
   </operation>
</portType>

(中略)

<plnk:partnerLinkType name="Service1">   
   <plnk:role name="servicePartner">
      <plnk:portType name="tns:service1Port"/>   
   </plnk:role>
</plnk:partnerLinkType>

<bpws:property name="OrderId" type="xsd:string"/>   

</definitions>

   ここでは、元のWSDLにplinkで修飾された名前空間が追加され(1)、この名前空間で定義されたpartnerLinkType要素(2)で外部関係をあらわしている。

   どのPortTypeが外部と関係を持つのかを名前をつけて定義付け(3)をおこなう。この名前がBPELから参照されることとなる。

   BPELでは、このWSDLで定義されたpartnerLinkTypeを型として、partnerLink要素を定義する。例えば、BPELファイルからpartnerLink要素に関係する箇所だけを抜粋すると次のようになる。

BPELでのWSDLとの関連付け(BPEL)

<process name="Process1" suppressJoinFailure="yes"
 targetNamespace="http://www.opst.co.jp/tcu/process1"
 xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
 xmlns:wsdl1="http://www.opst.co.jp/tcu/service1">   

<partnerLink name="servicePartner1" partnerLinkType="wsdl1:Service1" partnerRole="servicePartner"/>   

   wsdl1で修飾された名前空間はWSDLで定義された名前空間と同じ(5)であり、このWSDLで定義されたplink要素の名前 Service1と関連をつけている(2、6)。3番目の属性であるpartnerRoleは「WSDLを呼び出す」関係にあることを意味している。 「BPELが呼び出される」関係にあるWSDLと関係付けする場合はpartnerRole属性ではなく、myRole属性を用いて定義する。この partnerRole、myRole属性にはWSDLのrole要素のname属性の値を設定する(6)。

   この2つの定義によって、BPELとWSDLの関係付けがおこなわれBPELのアクティビティとWSDLのオペレーションを結びつけることができる ようになる。上の2つの例では、BPELからWSDLのオペレーションを呼び出すことを意図した定義であり、外部呼出しのアクティビティである invokeを用いると次のように記述される。

invokeする場合(BPEL)

<invoke name="service1" partnerLink="servicePartner1" portType="wsdl1:service1Port" operation="getOrder" inputVariable="serviceRequest" outputVariable="serviceResponse" />

   この要素のpartnerLink属性がBPELのpartnerLinkの名前(6)をあらわしており、間接的にWSDLのpartnerLinkTypeをあらわし、どのサービスが呼び出されるのかが明確となる。

WSDLとBPELの関係
図2:WSDLとBPELの関係

   図2上は上記で説明したWSDLとBPELの関係をあらわしており、図2下は例示したコードを図示したものだ。

   これで、WSDLのpartnerLinkType要素とBPELのpartnerLink要素の関係が明確になったと思う。この関係は名前空間で 修飾された名前によって関係付けられ、物理的なWSDLファイルとは結び付けられていない。この物理的なWSDLとの結びつきは他の個所で行われており、 システムの構成を柔軟なものとしている。

株式会社オープンストリーム テクニカルコンピテンシーユニット 主管システムズアーキテクト

横浜国立大学経営学部卒。銀行系シンクタンクでオブジェクト指向技術の研究に携わった後、大手SIerにて アーキテクチャ構築、プロセス研究に携わった。現在株式会社オープンストリームにてSOAを中心とする研究開発およびアーキテクチャ構築に従事。最近は XMLのダイナミックさに魅了されている。

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています