付録D.5 サービスの詳細インターフェースを検討する

これまでに検討した仕様を踏まえて,各サービスのオペレーションのメッセージ構造を決定します。具体的には,「付録D.2(2) 概要WSDLを作成する」で作成した概要WSDLにメッセージ構造の宣言を追加します。

各サービスの要求メッセージと応答メッセージには,次の表に示す情報が必要になるため,これを概要WSDLのメッセージ宣言に反映(ルート要素の下に宣言を追加)します。

表D-8 サービスの要求/応答メッセージに必要な情報

項番サービス名メッセージ必要な情報
名前説明
1在庫引当サービスreserveItemRequestItemNamexsd:string在庫引当する商品の名前
Quantityxsd:int在庫引当する個数
reserveItemResponseReservationNumberxsd:string引当番号
2配送手配サービスdeliverItemRequestReservationNumberxsd:string配送手配する引当番号
deliverItemResponseDeliveryNumberxsd:string配送番号
3商品手配ビジネスプロセスarrangeItemRequestItemNamexsd:string手配する商品の名前
Quantityxsd:int手配する商品の個数
arrangeItemResponseDeliveryNumberxsd:string配送番号

在庫引当サービスを例にWSDL(InventoryManagementService.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">
           <xsd:complexType>
              <xsd:sequence>
                 <xsd:element name="ItemName" type="xsd:string" />
                 <xsd:element name="Quantity" type="xsd:int" />
              </xsd:sequence>
           </xsd:complexType>
        </xsd:element>
        <xsd:element name="reserveItemResponse">
           <xsd:complexType>
              <xsd:sequence>
                 <xsd:element name="ReservationNumber" type="xsd:string" />
              </xsd:sequence>
           </xsd:complexType>
        </xsd:element>
     </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>

詳細インターフェースを記載したWSDLは,サンプルプログラムに同梱されています。サンプルプログラムの格納場所については,マニュアル「Cosminexus サービスプラットフォーム サンプルプログラムガイド」の「付録A サンプルプログラムのファイルの構成」を参照してください。