付録D.2 サービスの概要インターフェースを検討する

ミドルレベル・ビジネスプロセスの検討が終わったら,サービスの概要インターフェースを検討し,検討した結果を基に概要WSDLを作成します。検討するサービスを次に示します。

<この項の構成>
(1) 概要インターフェースを検討する
(2) 概要WSDLを作成する

(1) 概要インターフェースを検討する

最初に,サービスの概要インターフェースを検討します。次の図のように,サービスリクエスタから見ると商品手配ビジネスプロセス自体もサービスになるため,概要インターフェースの検討対象になります。

図D-3 サービスのコンポーネント構成

[図データ]

商品手配サンプルプログラムでは,次の図および次の表のように概要インターフェースを決定したものとします。

図D-4 サービスの概要インターフェース

[図データ]

表D-3 概要インターフェースの詳細

項番サービス名提供オペレーション名
(オペレーションの内容)
要求メッセージ名応答メッセージ名
1在庫引当サービスreserveItem
(商品を在庫引当する)
reserveItemRequestreserveItemResponse
2配送手配サービスdeliverItem
(商品を配送する)
deliverItemRequestdeliverItemResponse
3商品手配ビジネスプロセスarrangeItem
(商品を手配し配送する)
arrangeItemRequestarrangeItemResponse

(2) 概要WSDLを作成する

概要インターフェースが決定したら,概要WSDLを作成します。商品手配サンプルプログラムでは,サービスごとに次の表に示す名前でWSDLファイルを作成します。

表D-4 サービスごとのWSDLファイルの名前

項番サービス名WSDLファイルの名前
1在庫引当サービスInventoryManagementService.wsdl
2配送手配サービスDeliveryService.wsdl
3商品手配ビジネスプロセスArrangementService.wsdl

概要WSDLを作成するときのポイントは次のとおりです。

概要WSDL作成のポイント
  • サービス名をwsdl:portのname属性に記述する。
  • 提供オペレーション名をwsdl:operationのname属性に記述する。
  • 要求メッセージ名をwsdl:inputのname属性に記述する。
  • 応答メッセージ名をwsdl:outputのname属性に記述する。
  • メッセージの構造は記述しない。
    (ルート要素だけを宣言し,型はxsd:stringなどの基本型にする。)

在庫引当サービスのWSDL(InventoryManagementService.wsdl)の例を次に示します。WSDL中の太字は「概要WSDL作成のポイント」で示した部分の記述を表します。

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
     targetNamespace="http://sample/InventoryManagementService"
     xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns:ims="http://sample/InventoryManagementService">

  <wsdl:types>
     <xsd:schema
           targetNamespace="http://sample/InventoryManagementService"
           elementFormDefault="qualified">
        <xsd:element name="reserveItem" type="xsd:string" />
        <xsd:element name="reserveItemResponse" type="xsd:string" />
     </xsd:schema>
  </wsdl:types>

  <wsdl:message name="reserveItemRequest">
     <wsdl:part name="parameters" element="ims:reserveItem" />
  </wsdl:message>

  <wsdl:message name="reserveItemResponse">
     <wsdl:part name="parameters" element="ims:reserveItemResponse" />
  </wsdl:message>

  <wsdl:portType name="InventoryManager">
     <wsdl:operation name="reserveItem">
        <wsdl:input message="ims:reserveItemRequest" name="reserveItemRequest" />
        <wsdl:output message="ims:reserveItemResponse" name="reserveItemResponse" />
     </wsdl:operation>
  </wsdl:portType>

  <wsdl:binding name="InventoryManagerSoapBinding" type="ims:InventoryManager">
     <soap:binding style="document"
           transport="http://schemas.xmlsoap.org/soap/http" />
     <wsdl:operation name="reserveItem">
        <soap:operation soapAction="" />
        <wsdl:input name="reserveItemRequest">
           <soap:body use="literal" />
        </wsdl:input>
        <wsdl:output name="reserveItemResponse">
           <soap:body use="literal" />
        </wsdl:output>
     </wsdl:operation>
  </wsdl:binding>

  <wsdl:service name="InventoryManagementService">
     <wsdl:port binding="ims:InventoryManagerSoapBinding" name="InventoryManager">
        <soap:address location="http://localhost/InventoryManagementServiceWeb/services/InventoryManager" />
     </wsdl:port>
  </wsdl:service>
</wsdl:definitions>