Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 受付・アダプタ定義編
サービス部品の呼び出しでフォルトが発生したあと,サービスリクエスタにフォルト電文を返す場合を例に,WSDLファイルの作成方法について説明します。
WSDLの作成の例として使用するビジネスプロセスを次の図に示します。
図2-9 WSDLの作成の例として使用するビジネスプロセス
「図2-9 WSDLの作成の例として使用するビジネスプロセス」に示すビジネスプロセスで利用する電文フォーマットの例を次に示します。
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace="http://www.example.org/request" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="Request1" type="xsd:string" /> </xsd:schema> |
<Request1>Sample request message</Request1> |
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace="http://www.example.org/response" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="Response1" type="xsd:boolean" /> </xsd:schema> |
<Response1>true</Response1> |
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace="http://www.example.org/service" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:svc="http://www.example.org/service"> <xsd:element name="Fault1" type="svc:SampleData"/> <xsd:complexType name="SampleData"> <xsd:sequence> <xsd:element name="param1" type="xsd:int"/> </xsd:sequence> </xsd:complexType> </xsd:schema> |
<Fault1> <param1>123</param1> </Fault1> |
ここでは,SOAP1.1を利用する場合を想定して,「(1) ビジネスプロセスの例」に示すビジネスプロセスに合わせたWSDLの作成例を示します。
WSDLの形式に関する条件や注意事項については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「2.6.1 Webサービスを利用したサービス部品の適用範囲」およびこのマニュアルの「2.8.3 SOAP受付のWSDL作成時の注意事項」を参照してください。
WSDLの作成例は「Sample_Reception.wsdl」とします。Sample_Reception.wsdlの概要を次に示します。
WSDLの作成例「Sample_Reception.wsdl」を次に示します。
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://www.example.org/service" xmlns:svc="http://www.example.org/service" xmlns:req="http://www.example.org/request" xmlns:res="http://www.example.org/response" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xsd:schema targetNamespace="http://www.example.org/request"> <xsd:element name="Request1" type="xsd:string" /> </xsd:schema> <xsd:schema targetNamespace="http://www.example.org/response"> <xsd:element name="Response1" type="xsd:boolean" /> </xsd:schema> <xsd:schema targetNamespace="http://www.example.org/service"> <xsd:element name="Fault1" type="svc:SampleData"/> <xsd:complexType name="SampleData"> <xsd:sequence> <xsd:element name="param1" type="xsd:int"/> </xsd:sequence> </xsd:complexType> </xsd:schema> </wsdl:types> <wsdl:message name="ReqMsg1"> <wsdl:part element="req:Request1" name="reqParam"/> </wsdl:message> <wsdl:message name="ResMsg1"> <wsdl:part element="res:Response1" name="resParam"/> </wsdl:message> <wsdl:message name="FltMsg1"> <wsdl:part element="svc:Fault1" name="fltParam"/> </wsdl:message> <wsdl:portType name="SamplePortType"> <wsdl:operation name="operation1"> <wsdl:input message="svc:ReqMsg1"/> <wsdl:output message="svc:ResMsg1"/> <wsdl:fault message="svc:FltMsg1" name="Fault1"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="SampleBinding" type="svc:SamplePortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="operation1"> <soap:operation soapAction=""/> <wsdl:input> <soap:body/> </wsdl:input> <wsdl:output> <soap:body/> </wsdl:output> <wsdl:fault name="Fault1"> <soap:fault name="Fault1"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="SampleService"> <wsdl:port binding="svc:SampleBinding" name="UserInfo"> <soap:address location="http://localhost:80/SampleService/services/UserInfo" /> </wsdl:port> </wsdl:service> </wsdl:definitions> |
この作成例「Sample_Reception.wsdl」は,次の作業を行って作成します。
ビジネスプロセスの受付アクティビティ,および応答アクティビティで定義されている同期のオペレーションをリストアップします。また,フォルト名が定義されている応答アクティビティがある場合は,フォルト名もリストアップします。
作成例ではオペレーションは「operation1」が該当します。また,フォルト名は「Fault1」が該当します。
受付アクティビティ,および応答アクティビティが使用している割当変数の電文フォーマット定義ファイルをリストアップします。
作成例では,「Request.xsd」,「Response.xsd」,および「Fault.xsd」が該当します。
WSDLファイルのひな形として,XML宣言およびwsdl:definitions要素を定義します。wsdl:definitions要素には,次の表に示す属性を追加します。
表2-29 wsdl:definitions要素に追加する属性
属性 | 意味 | 値 | 個数 |
---|---|---|---|
targetNamespace | サービス部品の名前空間URI | 任意のURIを定義できます。ただし,フォルト電文がある場合には,フォルト電文の電文フォーマット定義ファイルのxsd:schema要素が持つtargetNamespace属性値と同じURIを定義します。 | 1 |
xmlns:svc | サービス部品のプリフィックス宣言 | targetNamespace属性と同じ値を定義します。 | 1 |
xmlns:req | 要求電文の電文フォーマットプリフィックス宣言 | 要求電文の電文フォーマット定義ファイルのxsd:schema要素が持つtargetNamespace属性値と同じURIを定義します。 | 1 |
xmlns:res | 応答電文の電文フォーマットプリフィックス宣言 | 応答電文の電文フォーマット定義ファイルのxsd:schema要素が持つtargetNamespace属性値と同じURIを定義します。 | 1 |
xmlns:soap | SOAPのプリフィックス宣言 | 既定の値「http://schemas.xmlsoap.org/wsdl/soap/」を定義します。 | 1 |
xmlns:wsdl | WSDLのプリフィックス宣言 | 既定の値「http://schemas.xmlsoap.org/wsdl/」を定義します。 | 1 |
xmlns:xsd | XMLスキーマのプリフィックス宣言 | 既定の値「http://www.w3.org/2001/XMLSchema」を定義します。 | 1 |
wsdl:definitions要素の定義例を次の図に示します。
図2-10 wsdl:definitions要素の定義例
表2-30 wsdl:definitions要素に追加する属性(複数のオペレーションを使用する場合)
属性 | 意味 | 値 |
---|---|---|
xmlns:reqN(N>0) | 要求電文が複数の名前空間に分かれる場合のプリフィックス宣言 | 要求電文の電文フォーマット定義ファイルのxsd:schema要素が持つtargetNamespace属性値と同じURIを定義します。
|
xmlns:resN(N>0) | 応答電文が複数の名前空間に分かれる場合のプリフィックス宣言 | 応答電文の電文フォーマット定義ファイルのxsd:schema要素が持つtargetNamespace属性値と同じURIを定義します。
|
図2-11 wsdl:definitions要素の定義例(複数のオペレーションを使用する場合)
wsdl:types要素とその下位要素,および属性を定義します。
wsdl:types要素以下に定義する要素と属性を次の表に示します。
表2-31 wsdl:types要素以下に定義する要素と属性
要素 | 属性 | 意味 | 値 | 個数 | ||
---|---|---|---|---|---|---|
wsdl:types | − | 型定義要素 | − | 1 | ||
xsd:schema | − | スキーマ要素 | − | 1〜電文フォーマット定義ファイルが使う名前空間の数 | ||
targetNamespace | 名前空間属性 | 電文のtargetNamespaceと同じ値を定義します。 | 1 | |||
xsd:schemaの属性 | 属性 | 電文の属性と同じ値を定義します。 | 1〜属性の数 | |||
xsd:schemaの子要素 | − | 電文の内容 | 電文が持つxsd:schema要素のすべての子要素をコピーします。 | 1〜同一名前空間を使用する電文フォーマットのxsd:schema要素の子要素の数 |
wsdl:types要素の定義例を次の図に示します。
図2-12 wsdl:types要素の定義例
wsdl:message要素とその下位要素,および属性を定義します。
wsdl:message要素以下に定義する要素と属性を次の表に示します。
表2-32 wsdl:message要素以下に定義する要素と属性
要素 | 属性 | 意味 | 値 | 個数 | |
---|---|---|---|---|---|
wsdl:message | − | メッセージ定義要素 | − | 1 | |
name | メッセージ名属性 | ほかのwsdl:message要素のname属性とは異なる一意の文字列を定義します。 | 1 | ||
wsdl:part | − | メッセージパート定義要素 | − | 1 | |
name | メッセージパート名属性 | 任意の文字列※を定義します。 | 1 | ||
element | 要素参照属性 | 該当する電文フォーマットファイルのルート要素を定義します。 | 1 |
wsdl:message要素の定義例を次の図に示します。
図2-13 wsdl:message要素の定義例
wsdl:portType要素とその下位要素,および属性を定義します。
wsdl:portType要素以下に定義する要素と属性を次の表に示します。
表2-33 wsdl:portType要素以下に定義する要素と属性
要素 | 属性 | 意味 | 値 | 個数 | ||
---|---|---|---|---|---|---|
wsdl:portType | − | ポートタイプ定義要素 | − | 1 | ||
name | ポートタイプ名属性 | 任意の文字列※を定義します。 | 1 | |||
wsdl:operation | − | オペレーション定義要素 | − | 1〜オペレーションの個数 | ||
name | オペレーション名属性 | オペレーション名を定義します。 | 1 | |||
wsdl:input | − | 要求メッセージ定義要素 | − | 1 | ||
message | メッセージ参照属性 | 「(e) wsdl:message要素の定義」で定義したwsdl:message要素のname属性値をQNameで指定します。 | 1 | |||
wsdl:output | − | 応答メッセージ定義要素 | − | 1 | ||
message | メッセージ参照属性 | 「(e) wsdl:message要素の定義」で定義したwsdl:message要素のname属性値をQNameで指定します。 | 1 | |||
wsdl:fault | − | フォルトメッセージ定義要素 | − | 1〜フォルトの個数 | ||
name | フォルトメッセージ名属性 | フォルト名を定義します。 | 1 | |||
message | フォルトメッセージ参照属性 | 「(e) wsdl:message要素の定義」で定義したwsdl:message要素のname属性値をQNameで指定します。 | 1 |
wsdl:portType要素の定義例を次の図に示します。
図2-14 wsdl:portType要素の定義例
wsdl:binding要素とその下位要素,および属性を定義します。
wsdl:binding要素以下に定義する要素と属性を次の表に示します。
表2-34 wsdl:binding要素以下に定義する要素と属性
要素 | 属性 | 意味 | 値 | 個数 | |||
---|---|---|---|---|---|---|---|
wsdl:binding | − | バインディング定義要素 | − | 1 | |||
name | バインディング名属性 | 任意の文字列※を定義します。 | 1 | ||||
type | ポートタイプ参照属性 | 「(f) wsdl:portType要素の定義」で定義したwsdl:portTypeのname属性値をQNameで指定します。 | 1 | ||||
soap:binding | − | SOAPバインディング定義要素 | − | 1 | |||
transport | SOAPバインディング伝送形態定義属性 | 「http://schemas.xmlsoap.org/soap/http」を定義します(固定値)。 | 1 | ||||
wsdl:operation | − | オペレーション定義要素 | − | 1〜オペレーションの個数 | |||
name | オペレーション名属性 | オペレーション名を定義します。 「(f) wsdl:portType要素の定義」で定義したwsdl:operation要素の子要素であるwsdl:fault要素のname属性の値と同じ値を指定します。 |
1 | ||||
soap:operation | − | SOAPバインディングオペレーション定義要素 | − | 1 | |||
soapAction | SOAPActionヘッダ定義属性 | − | 1 | ||||
wsdl:input | − | 要求メッセージ定義要素 | − | 1 | |||
soap:body | − | SOAPバインディングBody要素定義要素 | − | 1 | |||
wsdl:output | − | 応答メッセージ定義要素 | − | 1 | |||
soap:body | − | SOAPバインディングBody要素定義要素 | − | 1 | |||
wsdl:fault | − | フォルトメッセージ定義要素 | − | 1〜フォルトの個数 | |||
name | フォルトメッセージ名属性 | フォルト名を定義します。 | 1 | ||||
soap:fault | − | SOAPバインディングFault要素定義要素 | − | 1 | |||
name | SOAPバインディング名前属性 | フォルト名を定義します。 | 1 |
wsdl:binding要素の定義例を次の図に示します。
図2-15 wsdl:binding要素の定義例
図2-16 wsdl:binding要素の定義例(style属性およびuse属性を使用する場合)
wsdl:service要素とその下位要素,および属性を定義します。
wsdl:service要素以下に定義する要素と属性を次の表に示します。
表2-35 wsdl:service要素以下に定義する要素と属性
要素 | 属性 | 意味 | 値 | 個数 | ||
---|---|---|---|---|---|---|
wsdl:service | − | サービス定義要素 | − | 1 | ||
name | サービス名属性 | 任意の文字列※を定義します。 | 1 | |||
wsdl:port | − | ポート定義要素 | − | 1 | ||
name | ポート名属性 | 任意の文字列※を定義します。 | 1 | |||
binding | バインディング参照属性 | 「(g) wsdl:binding要素の定義」で定義したwsdl:binding要素のname属性値をQNameで指定します。 | 1 | |||
soap:address | − | SOAPバインディングアドレス定義要素 | − | 1 | ||
location | サービス位置定義属性 | 仮の値として, 「http://localhost:80/SampleService/services/<PortName>」を定義します。 <PortName>には,wsdl:port要素のname属性と同じ値を指定します。 |
1 |
wsdl:service要素の定義例を次の図に示します。
図2-17 wsdl:service要素の定義例
図2-18 wsdl:service要素の定義例(複数のwsdl:portを使用する場合)
All Rights Reserved. Copyright (C) 2012, 2019, Hitachi, Ltd.