2.2.8 Webサービス(SOAP通信)の場合の添付ファイル
添付ファイル機能を使用すると,任意の形式のファイル(CSVファイルなど)をWebサービスで扱えます。
- 〈この項の構成〉
(1) 添付ファイル機能の概要
添付ファイル機能では作業フォルダまたは共通フォルダを使用して,システム間のファイル転送を中継します。作業フォルダおよび共通フォルダの詳細については「10. 作業フォルダおよび共通フォルダの機能」を参照してください。
添付ファイル機能の概要を次の図に示します。
(a) 添付ファイルのWSDL
添付ファイル機能を使用する場合,WS-I Attachments Profile - Version 1.0で規定された形式に基づいて記述されたswaRef形式のWSDLを使用します。swaRef形式のWSDLの例を次に示します。
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://localhost" xmlns:wsi="http://ws-i.org/profiles/basic/1.1/xsd" ...> <wsdl:types> <schema elementFormDefault="qualified" targetNamespace="http://localhost" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://ws-i.org/profiles/basic/1.1/xsd" schemaLocation="swaref.xsd"/> <element name="getUserData"> <complexType> <sequence> <element name="filename" type="xsd:string"/> <element name="attachment" type="wsi:swaRef"/> </sequence> </complexType> </element> ... </schema> </wsdl:types> <wsdl:message name="getUserDataRequest"> <wsdl:part element="intf:getUserData" name="parameters"/> </wsdl:message> ... <wsdl:portType name="UserInfo"> <wsdl:operation name="getUserData"> <wsdl:input message="intf:getUserDataRequest" name="getUserDataRequest"/> ... </wsdl:operation> </wsdl:portType> ... </wsdl:definitions>
(b) 添付ファイル付きSOAPメッセージの構造
添付ファイル付きSOAPメッセージは,SOAP Message with Attachmentsプロトコルを使用し,MIME Multiple/Related構造でエンコードされます。メッセージの構造の詳細はマニュアル「アプリケーションサーバ Webサービス開発ガイド」の「28.4 添付ファイル付きSOAPメッセージ(wsi:swaRef形式)」を参照してください。
(c) 添付ファイル機能で使用するスキーマ
SOAP受付とビジネスプロセスの間,およびビジネスプロセスとSOAPアダプタの間で添付ファイルの情報を連携するために使用する電文フォーマットについて説明します。
-
urecp_soap_attachment_request.xsd
SOAP受付で生成された添付ファイルに関するXML電文をビジネスプロセスで扱うために使用する電文フォーマットです。スキーマは「<サービスプラットフォームのインストールディレクトリ>\CSC\schema\soaprecp\urecp_soap_attachment_request.xsd」に格納されています。
名前空間名は「http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/attachment/soap/request」です。
表2‒1 SOAP受付のファイル連携用要求ヘッダフォーマット タグ名
種別
出現回数
説明
<attachment-request>
−
1回
−
<request-id>
string
1回
受付で作成したリクエストIDを示すタグです。
<files>
−
0または1回
受け付けた添付ファイルを示すタグです。ファイルを受信した場合に出現します。
<file>
−
0回以上
受け付けた1つの添付ファイルを示すタグです。受信したファイルの数と同じ回数出現します。
<content-id>
string
1回
受け付けた添付ファイルのContent-Idを示すタグです。
Content-Idが設定されていない場合,またはnullの場合はSOAP受付でエラーになります。
<content-type>
string
1回
受け付けた添付ファイルのContent-Typeを示すタグです。
charset属性には,Content-Typeヘッダのcharsetパラメタに対応する文字コードが設定されます。
<local-file-name>
string
1回
作業フォルダに出力した添付ファイルの中間ファイル名を示すタグです。
-
urecp_soap_attachment_response.xsd
SOAP受付からサービスリクエスタに応答する添付ファイルの情報をビジネスプロセスからSOAP受付に渡すために使用します。スキーマは「<サービスプラットフォームのインストールディレクトリ>\CSC\schema\soaprecp\urecp_soap_attachment_response.xsd」に格納されています。
名前空間名は「http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/attachment/soap/response」です。
表2‒2 SOAP受付のファイル連携用応答ヘッダフォーマット タグ名
種別
出現回数
説明
<attachment-response>
−
1回
−
<files>
−
0または1回
応答する添付ファイルを示すタグです。
<file>
−
0回以上
応答する1つの添付ファイルを示すタグです。
<content-id>
string
1回
応答する添付ファイルのContent-Idヘッダを指定します。
値が設定されていない場合,またはnullが設定された場合はエラーになります。
<content-type>
string
0または1回
応答する添付ファイルのContent-Typeヘッダを指定します。
charset属性には,Content-Typeヘッダのcharsetパラメタに対応する文字コードを指定します。
省略した場合,または値が空の場合は,"application/octet-stream"になります。
<local-file-name>
string
1回
作業フォルダ内の中間ファイル名を指定します。
次の場合はエラーになります。
-
パス変更に関連する指定("/../"など)が含まれる場合
-
指定したファイル名が不正な場合
-
-
adpsoap_attachment_request.xsd
ビジネスプロセスからSOAPアダプタに添付ファイルに関する情報を渡すために使用します。スキーマは「<サービスプラットフォームのインストールディレクトリ>\CSC\schema\soap\adpsoap_attachment_request.xsd」に格納されています。
名前空間名は「http://www.hitachi.co.jp/soft/xml/cosminexus/csc/adapter/attachment/soap/request」です。
表2‒3 SOAPアダプタのファイル連携用要求ヘッダフォーマット タグ名
種別
出現回数
説明
<attachment-request>
−
1回
−
<request-id>
string
0または1回
受付で生成されたリクエストIDを設定します。
作業フォルダ内のファイルデータを送信する場合,またはSOAPレスポンス時にダウンロードファイルを出力するファイルとして,作業フォルダを使用する場合に設定が必要です。
<files>
−
0または1回
SOAPリクエストで送信するファイル情報を指定します。
<file>
−
0回以上
送信する1つのファイルに関する情報を指定します。
<content-id>
string
1回
送信する添付ファイルのContent-Idヘッダの値を指定します。
値が設定されていない場合,またはnullが設定された場合はエラーになります。
<content-type>
string
0または1回
送信する添付ファイルのContent-Typeヘッダの値を指定します。
charset属性には,Content-Typeヘッダのcharsetパラメタに対応する文字コードを指定します。
省略した場合,または値が空の場合は,local-file-name要素に指定したファイルの拡張子によって自動的に設定されます。なお,システムによって自動生成された中間ファイルの場合,拡張子がないため"application/octet-stream"が設定されます。設定される値の詳細についてはマニュアル「アプリケーションサーバ Webサービス開発ガイド」の「28.4.2 添付ファイルからSOAPメッセージへのマッピングの注意事項(wsi:swaRef形式)」を参照してください。
<input-folder-name>
string
1回
送信対象ファイルが格納されているフォルダとして,次のどちらかを指定します。
-
作業フォルダの場合
空文字を指定します。
-
共通フォルダの場合
共通フォルダ定義名を指定します。
また,common属性には,送信対象ファイルが存在するフォルダを識別するための次の値を指定します。
-
作業フォルダの場合
「common="false"」を指定します。
-
共通フォルダの場合
「common="true"」を指定します。
なお,共通フォルダ定義名が示すフォルダが不正な場合は読み込み時にエラーになります。
<local-file-name>
string
1回
送信対象のファイル名を指定します。シンボリックリンクのファイルは指定しないでください。
-
input-folder-name要素で作業フォルダを指定した場合
作業フォルダ内の中間ファイル名を指定します。
-
input-folder-name要素で共通フォルダを指定した場合
共通フォルダルート配下のファイル名を相対パスで指定します。
また,次の場合はエラーが発生します。
-
指定した名称のファイルが存在しない場合
-
パス変更に関係する指定("/../"など)が含まれる場合
-
指定したファイル名が不正な場合
<output-folder-name>
string
0または1回
SOAPレスポンス時にダウンロードファイルを出力するフォルダとして,次のどちらかを指定します。
-
作業フォルダの場合
空文字を指定します。
-
共通フォルダの場合
共通フォルダ定義名を指定します。
また,common属性には,ダウンロードファイルを出力するフォルダを識別するための次の値を指定します。
-
作業フォルダの場合
「common="false"」を指定します。
-
共通フォルダの場合
「common="true"」を指定します。
なお,共通フォルダ定義名が示すフォルダが不正な場合は書き込み時にエラーが発生します。
<output-sub-folder>
string
0または1回
SOAPレスポンス時にダウンロードファイルを出力するフォルダとして,共通フォルダのサブフォルダを使用する場合に共通フォルダからの相対パスを指定します。
output-folder-name要素で作業フォルダを指定した場合は,この要素の値は無視されます。
なお,指定されたサブフォルダが不正な場合は書き込み時にエラーが発生します。
-
-
adpsoap_attachment_response.xsd
SOAPアダプタで生成された添付ファイルに関するXML電文をビジネスプロセスで扱うために使用します。スキーマは「<サービスプラットフォームのインストールディレクトリ>\CSC\schema\soap\adpsoap_attachment_response.xsd」に格納されています。
名前空間名は「http://www.hitachi.co.jp/soft/xml/cosminexus/csc/adapter/attachment/soap/response」です。
表2‒4 SOAPアダプタのファイル連携用応答ヘッダフォーマット タグ名
種別
出現回数
説明
<attachment-response>
−
1回
−
<request-id>
string
0または1回
adpsoap_attachment_request.xsdのrequest-id要素に指定した値が設定されます。
ダウンロードファイルを作業フォルダに出力した場合に出現します。
<files>
−
0または1回
SOAPレスポンスで受信したファイル情報が設定されます。
<file>
−
0回以上
受信した1つのファイルに関する情報が設定されます。
<content-id>
string
1回
受信した添付ファイルのContent-Idヘッダの値が設定されます。
Content-Idが設定されていない場合,またはnullの場合はSOAPアダプタでエラーになります。
<content-type>
string
1回
受信した添付ファイルのContent-Typeヘッダの値が設定されます。
charset属性には,Content-Typeヘッダのcharsetパラメタに対応する文字コードが設定されます。
output-folder-name
string
1回
adpsoap_attachment_request.xsdのoutput-folder-name要素に指定した値が設定されます。
<local-file-name>
string
1回
作業フォルダまたは共通フォルダに出力されたファイル名が設定されます。
-
出力フォルダが共通フォルダの場合
一意となる名称で出力されたファイル名が設定されます。また,adpsoap_attachment_request.xsdでoutput-sub-folder要素が指定されていた場合は,サブフォルダのパス+"/"+ファイル名が設定されます。
-
出力フォルダが作業フォルダの場合
出力された中間ファイル名が設定されます。
-
(2) アップロード
Webサービスの添付ファイル機能ではSOAP受付およびSOAPアダプタを利用してファイルのアップロードができます。
サービスリクエスタからSOAP受付に対して添付ファイル付きSOAPメッセージを送信すると,SOAP受付で作業フォルダが生成され添付ファイルが格納されます。作業フォルダに格納されたファイルをどう扱うかはビジネスプロセスで定義します。
作業フォルダまたは共通フォルダに格納されているファイルは,SOAPアダプタを利用することでWebサービスに対して送信できます。SOAPアダプタからWebサービスに対してファイルを送信するための設定はビジネスプロセスで定義します。
ここではサービスリクエスタから送信された添付ファイルをビジネスプロセスで扱うための設定方法,およびWebサービスに添付ファイルを送信するためのビジネスプロセスの設定方法を説明します。
(a) 受付アクティビティ
サービスリクエスタから送信され,作業フォルダに格納されたファイルをビジネスプロセスで扱うには,urecp_soap_attachment_request.xsdのスキーマを指定して定義した変数を,ビジネスプロセスの受付アクティビティでヘッダ割当変数に設定します。
SOAP受付に添付ファイル付きSOAPメッセージを送信した場合にSOAP受付で作成される電文の例を次に示します。
<attachment-request xmlns="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/attachment/soap/request"> <request-id>RCP01---01020003000420110102140305012000/HCSC</request-id> <files> <file> <content-id>d1cd6fed-368c-4966-9a20-375a120b3c05@jaxws.cosminexus.com</content-id> <content-type charset="UTF-8">text/plain</content-type> <local-file-name>csc_8216969970665213344</local-file-name> </file> </files> </attachment-request>
(b) サービス呼出アクティビティ
SOAPアダプタを使って作業フォルダまたは共通フォルダに格納されているファイルをアップロードするには,adpsoap_attachment_request.xsdのスキーマを指定して定義した変数を,ビジネスプロセスのサービス呼出アクティビティで要求電文のヘッダ割当変数に設定します。
SOAPアダプタから添付ファイル付きSOAPメッセージを送信する場合に,ビジネスプロセスのデータ変換アクティビティで作成する電文の例を次に示します。
- 作業フォルダを使用する場合
<attachment-request xmlns="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/adapter/attachment/soap/request"> <request-id>RCP01---01020003000420110102140305012000/HCSC</request-id> <files> <file> <content-id>459d752f-5694-493b-9671-4d49af688cd8@jaxws.cosminexus.com</content-id> <content-type charset="UTF-8">text/plain</content-type> <input-folder-name common="false"/> <local-file-name>csc_8216969970665213344</local-file-name> </file> </files> </attachment-request>
- 共通フォルダを使用する場合
<attachment-request xmlns="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/adapter/attachment/soap/request"> <files> <file> <content-id>459d752f-5694-493b-9671-4d49af688cd8@jaxws.cosminexus.com</content-id> <content-type charset="UTF-8">text/plain</content-type> <input-folder-name common="true">com001</input-folder-name> <local-file-name>sample.txt</local-file-name> </file> </files> </attachment-request>
(3) ダウンロード
Webサービスの添付ファイル機能ではSOAP受付およびSOAPアダプタを利用してファイルのダウンロードができます。
SOAP受付定義ファイルのurecp-soap.switchover.file-transfer.modeで作業フォルダの生成の有無を設定できます。SOAP受付定義ファイルの詳細についてはマニュアル「サービスプラットフォーム リファレンス」の「3.6.1 SOAP受付定義ファイル」を参照してください。
ダウンロードする場合は次のケースを除きurecp-soap.switchover.file-transfer.modeにtrueを設定してください。trueを設定しないと作業フォルダが生成されず,エラーになります。
-
共通フォルダを使用する
-
1つのリクエストでサービスリクエスタからのアップロードも実施する
WebサービスからSOAPアダプタに対して添付ファイル付きSOAPメッセージを送信すると,作業フォルダまたは共通フォルダに添付ファイルが格納されます。添付ファイルを作業フォルダに格納するか共通フォルダに格納するか,また格納されたファイルをどう扱うかはビジネスプロセスで定義します。
作業フォルダに格納されているファイルは,SOAP受付を利用することでサービスリクエスタに対して送信できます。SOAP受付からサービスリクエスタに対してファイルを送信するための設定はビジネスプロセスで定義します。
ここではWebサービスから受信した添付ファイルをビジネスプロセスで扱うための設定方法,およびサービスリクエスタに添付ファイルを送信するためのビジネスプロセスの設定方法を説明します。
(a) 受付アクティビティ
作業フォルダを使用する場合,SOAP受付で生成されたリクエストIDをビジネスプロセスで扱うには,urecp_soap_attachment_response.xsdのスキーマを指定して定義した変数を,ビジネスプロセスの受付アクティビティでヘッダ割当変数に設定します。
SOAP受付で作業フォルダおよびリクエストIDを生成した場合にSOAP受付で作成される電文の例を次に示します。
<attachment-request xmlns="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/attachment/soap/request"> <request-id>RCP01---01020003000420110102140305012000/HCSC</request-id> </attachment-request>
(b) サービス呼出アクティビティ
Webサービスから送信された添付ファイルをビジネスプロセスで扱うには,adpsoap_attachment_request.xsdのスキーマを指定して定義した変数を,ビジネスプロセスのサービス呼出アクティビティで要求電文のヘッダ割当変数に設定して,adpsoap_attachment_resopnse.xsdのスキーマを指定して定義した変数を,ビジネスプロセスのサービス呼出アクティビティで応答電文のヘッダ割当変数に設定します。
SOAPアダプタで添付ファイル付きSOAPメッセージを受信する場合に,ビジネスプロセスのデータ変換アクティビティで作成する電文の例を次に示します。
- 作業フォルダを使用する場合
<attachment-request xmlns="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/adapter/attachment/soap/request"> <request-id>RCP01---01020003000420110102140305012000/HCSC</request-id> <output-folder-name common="false"/> </attachment-request>
- 共通フォルダを使用する場合
<attachment-request xmlns="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/adapter/attachment/soap/request"> <output-folder-name common="true">com002</output-folder-name> <output-sub-folder>test01</output-sub-folder> </attachment-request>
SOAPアダプタが添付ファイル付きSOAPメッセージを受信した場合に,SOAPアダプタで作成される電文の例を次に示します。
- 作業フォルダを使用する場合
<attachment-response xmlns="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/adapter/attachment/soap/response"> <request-id>RCP01---01020003000420110102140305012000/HCSC</request-id> <files> <file> <content-id>459d752f-5694-493b-9671-4d49af688cd8@jaxws.cosminexus.com</content-id> <content-type charset="UTF-8">text/plain</content-type> <output-folder-name common="false"/> <local-file-name>csc_8216969970665213344</local-file-name> </file> </files> </attachment-response>
- 共通フォルダを使用する場合
<attachment-response xmlns="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/adapter/attachment/soap/response"> <files> <file> <content-id>154765f0-9850-4c1f-8f6c-3f1f9306b4c0@jaxws.cosminexus.com</content-id> <content-type charset="UTF-8">text/plain</content-type> <output-folder-name common="true">com002</output-folder-name> <local-file-name>test01/HCSCCLS1----HCSC1---1------------d6j93dx74g---1---</local-file-name> </file> </files> </attachment-response>
(c) 応答アクティビティ
作業フォルダに格納されている中間ファイルをサービスリクエスタに応答するには,urecp_soap_attachment_response.xsdのスキーマを指定して定義した変数を,ビジネスプロセスの応答アクティビティでヘッダ割当変数に設定します。
SOAP受付から添付ファイル付きSOAPメッセージを送信する場合に,ビジネスプロセスのデータ変換アクティビティで作成する電文の例を次に示します。
<attachment-response xmlns="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/attachment/soap/response"> <files> <file> <content-id>d1cd6fed-368c-4966-9a20-375a120b3c05@jaxws.cosminexus.com</content-id> <content-type charset="UTF-8">text/plain</content-type> <local-file-name>csc_8216969970665213344</local-file-name> </file> </files> </attachment-response>
(4) 注意事項
添付ファイル機能の注意事項について説明します。また,マニュアル「アプリケーションサーバ Webサービス開発ガイド」も合わせてご確認ください。
(a) 作業フォルダ使用時の注意事項
作業フォルダ内のファイルはcscfswrmコマンドによって定期的に削除する必要があります。なお,リクエスト処理完了直後は削除できない場合があるため,削除できなかった場合は少し時間を空けてから再度削除を実施してください。
(b) 添付ファイルのMIMEヘッダ
添付ファイルのMIMEヘッダに設定されているContent-Id,,Content-Type以外のヘッダは無視されます。添付ファイルに関する情報(ファイル名など)を送受信する際は,SOAPボディなどに設定してください。
(c) 添付ファイル使用時のメモリ使用量
添付ファイル機能を使用する場合,添付ファイルのサイズに応じてメモリ使用量が増大します。詳細はマニュアル「アプリケーションサーバ Webサービス開発ガイド」の「付録C.3 添付ファイル使用時の1リクエスト当たりのメモリ使用量」を参照してください。