Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 受付・アダプタ定義編


2.5.2 HTTP受付の電文フォーマットを作成する

ここでは,HTTP受付で使用する電文フォーマットの種類,形式,および作成方法について説明します。

〈この項の構成〉

(1) 電文フォーマットの種類

HTTP受付で使用する電文フォーマットの種類を次の表に示します。電文フォーマットは,サービスプラットフォームが提供するXMLスキーマを利用して作成できます。

表2‒11 電文フォーマットの種類

大分類

小分類

説明

要求電文フォーマット

ヘッダ変数用(HTTP受付用)

HTTPリクエストのヘッダ情報およびURL情報を設定します。

ボディ変数用(HTTP受付用)(メイン)

HTTPリクエストのボディ情報を設定します。

ボディ変数用(HTTP受付用)(詳細)

要求電文フォーマット(ボディ変数(メイン))の一部として参照されます。

ボディ変数用(JSON-XML変換用)

JSON変換ツールで作成した情報を設定したHTTPリクエストボディを送信したい場合に作成します。

サービスプラットフォームではXMLスキーマファイルを提供していません。

応答電文フォーマット

ヘッダ変数用(HTTP受付用)

HTTPレスポンスのヘッダ情報を設定します。

ヘッダ変数用(JSON-XML変換用)

JSON-XML変換の定義を設定します。

ボディ変数用(HTTP受付用)

HTTPレスポンスのボディ情報を設定します。

ボディ変数用(JSON-XML変換用)

JSON変換ツールで作成した情報を設定したHTTPレスポンスボディを送信したい場合に作成します。

サービスプラットフォームではXMLスキーマファイルを提供していません。

ビジネスプロセスで検証アクティビティを使用する場合は,上記とは別の電文フォーマットを作成して使用してください。

(2) 電文フォーマットの形式

ここでは,HTTP受付で使用する要求電文フォーマットおよび応答電文フォーマットの形式について説明します。

(a) 要求電文フォーマット(ヘッダ変数用)(HTTP受付用)

HTTP受付がビジネスプロセスから呼び出されたときに,HTTP受付に渡されるヘッダ変数の要求電文フォーマットを次に示します。この電文フォーマットのファイル名は「urecp_http_header_request.xsd」です。名前空間名は「http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/http/request」です。

表2‒12 要求電文フォーマット(ヘッダ変数用)(HTTP受付用)

タグ名

種別

出現回数

説明

<http-header-request>

1回

<auth>

0または1回

HTTPヘッダ認証が指定されている場合,このタグが作成されます。

<username>

string

1回

認証されたユーザのユーザ名が設定されます。ユーザ名情報はプレーンテキストにデコードされて,設定されます。

<method>

string

1回

HTTP受付で使用されるHTTPメソッド(GET,POST,HEAD,PUT,DELETE,またはOPTIONS)が設定されます。

<url>

1回

リクエストURLからロケーション情報やクエリ文字列が設定されます。

<location>

string

1回

ロケーション情報が設定されます。

<query>

string

0または1回

クエリ文字列が設定されます。

<content-type>

string

0または1回

Content-Typeヘッダに指定されたメディアタイプが設定されます。

content-typeタグのcharset属性にはContent-Typeヘッダに指定されたcharset属性(文字コード)が設定されます。charset属性が付与されていなければ,この属性は設定されません。

<request-id>

string

0または1回

HTTP受付が生成したリクエストIDが設定されます。HTTP受付が作業フォルダを作成する場合,生成したリクエストIDが設定されます。

作業フォルダ作成の詳細については,マニュアル「サービスプラットフォーム 解説」の

2.14.6 HTTP受付のファイル管理」を参照してください。

<files>

0または1回

HTTPクライアントから受信したマルチパート型データを基に,作業フォルダ内に生成された中間ファイルのリストが設定されます。

<file>

0回以上

HTTPクライアントから受信したマルチパート型データを基に,作業フォルダ内に生成された中間ファイルが設定されます。

<partID>

string

0または1回

各パートを区別するための識別子が設定されます。

HTTP受付が受信したマルチパート型データ内で,各パートのContent-Dispositionヘッダのname属性に対応します。

<file-name>

string

0または1回

HTTPクライアントから受信したファイルデータのファイル名称が設定されます。

HTTP受付が受信したマルチパート型データ内で,各パートのContent-Dispositionヘッダのfilename属性に対応します。なお,パス指定の場合はファイル名だけが設定されます。

<local-file-name>

string

1回

作業フォルダ内に生成された中間ファイルの名称が設定されます。

中間ファイルの名称は作業フォルダ内で一意となります。

<content-type>

string

0または1回

HTTP受付が受信したファイルデータのメディアタイプが設定されます。

HTTP受付が受信したマルチパート型データ内で,各パートのContent-Typeヘッダの値に対応します。

各パートのContent-Typeヘッダが省略された場合,このタグは生成されません。

content-typeタグのcharset属性には,各パートのContent-Typeヘッダに指定されたcharset属性(文字コード)が設定されます。charset属性が付与されていなければ,この属性は設定されません。

<http-header>

any

0または1回

HTTP受付が受信したHTTPヘッダ情報がヘッダ変数に変換されて設定されます。詳細はマニュアル「サービスプラットフォーム 解説」の「2.14.4 HTTP受付のリクエスト処理」を参照してください。

(凡例)

−:該当する項目はありません。

(b) 要求電文フォーマット(ボディ変数用)(HTTP受付用)

HTTP受付がビジネスプロセスから呼び出されたときに,HTTP受付に渡されるボディ変数の要求電文フォーマットを次に示します。この電文フォーマットのファイル名は「urecp_http_body_request.xsd」です。名前空間名は「http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/http/request」です。

表2‒13 要求電文フォーマット(ボディ変数用)(HTTP受付用)

タグ名

種別

出現回数

説明

<http-body-request>

1回

<parameter>

http-body-requestType

0回以上

リクエストボディの情報がボディ変数に変換されて設定されます。詳細はマニュアル「サービスプラットフォーム 解説」の「2.14.4 HTTP受付のリクエスト処理」を参照してください。

(凡例)

−:該当する項目はありません。

(c) 応答電文フォーマット(ヘッダ変数用)(HTTP受付用)

HTTP受付がビジネスプロセスを呼び出したときに渡すヘッダ変数の応答電文フォーマットを次に示します。この電文フォーマットのファイル名は「urecp_http_header_response.xsd」です。名前空間名は「http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/http/response」です。

表2‒14 応答電文フォーマット(ヘッダ変数用)(HTTP受付用)

タグ名

種別

出現回数

説明

<http-header-response>

1回

<status-code>

string

0または1回

HTTPレスポンスのステータスコードを指定します。

<content-type>

string

0または1回

HTTP受付の応答電文(ボディ変数用)で表すデータのContent-Typeヘッダを指定します。空文字列が指定された場合は,この要素の指定を省略したとみなされます。

データ種別がマルチパート型となる場合,パートに変換した応答電文(ボディ変数用)に対して付与するContent-Typeヘッダとして使用します。

content-type要素のcharset属性には,Content-Typeヘッダのcharset属性として使用する文字コードを指定します。空文字列が指定された場合は,この要素の指定を省略したとみなされます。content-type要素の値にcharset属性やそのほかの属性を指定した場合,動作は保証されません。

<body-partID>

string

0または1回

マルチパート型データをHTTPクライアントに送信する場合に,パートに変換した応答電文(ボディ変数用)に対して付与するContent-Dispositionヘッダのname属性の値を指定します。

body-partID要素の値を省略してマルチパート型データに応答電文(ボディ変数用)を格納した場合,このname属性の値には「csc-body-text」が設定されます。

データ種別がマルチパート型でない場合,この値は無視されます。

<ignore-bodymsg>

boolean

0または1回

応答電文(ボディ)を無視してHTTPクライアントにHTTPレスポンスを返すかどうかを指定します。

この要素の値にtrueを指定した場合は,HTTPクライアントにHTTPレスポンスを返す処理で,応答電文(ボディ)が無視されます。falseを指定した場合は応答電文(ボディ)が利用されます。

この要素を指定しなかった場合,またはこの要素に無効な文字列を指定した場合は,HTTP受付定義ファイルのhttprecp.response.ignore-bodymsgプロパティで指定した値が適用されます。

応答電文(ヘッダ)のignore-bodymsg要素とHTTP受付定義ファイルのhttprecp.response.ignore-bodymsgプロパティの両方に値を指定した場合は応答電文(ヘッダ)の指定が優先されます。

<files>

string

0または1回

作業フォルダから読み込んでHTTPクライアントに送信する中間ファイルのリストを指定します。

<file>

0回以上

作業フォルダから読み込んで,HTTPクライアントに送信する中間ファイルを指定します。

<partID>

string

0または1回

データ種別がマルチパート型の場合に各パートを識別するための識別子を指定します。

HTTPレスポンスでのマルチパート型データの各パート単位で,Content-Dispositionヘッダのname属性の値に対して付与する文字列です。

このタグを省略した場合はlocal-file-nameタグの値が設定されます。

ignore-bodymsg要素の値が「true」またはHTTP受付定義ファイルのhttprecp.response.ignore-bodymsgプロパティが「true」(応答電文(ボディ)を無視する設定)で,かつHTTPクライアントに送信する中間ファイルが1つの場合は,マルチパート型とならないため,このタグの指定は無視されます。

<file-name>

string

0または1回

HTTPクライアントがダウンロードするときのファイル名称を指定します。

HTTPレスポンスでのマルチパート型データの各パートで,Content-Dispositionヘッダのfilename属性の値に対して付与する文字列です。

このタグを省略した場合はfilename属性が設定されません。

<local-file-name>

string

1回

HTTPクライアントにダウンロードする作業フォルダ内の中間ファイル名称を指定します。

このタグで指定した名称のファイルは,作業フォルダ内から読み込まれてHTTPレスポンスのボディ部分またはマルチパート型データの各パートのボディ部分に設定されます。

このタグを省略した場合,システム例外が発生します。

<content-type>

string

0または1回

HTTPクライアントに送信するファイルのメディアタイプを指定します。

HTTPレスポンスでのマルチパート型データの各パートで,Content-Typeヘッダに付与する値です。

このタグを省略した場合はメディアタイプが設定されません。空文字列が指定された場合は,この要素の指定を省略したとみなされます。

content-type要素のcharset属性には,Content-Typeヘッダのcharset属性として使用する文字コードを指定します。空文字列が指定された場合は,この要素の指定を省略したとみなされます。content-type要素の値にcharset属性やそのほかの属性を指定した場合,動作は保証されません。

<http-header>

any

0または1回

HTTPレスポンスヘッダの情報を指定します。要素名をヘッダフィールド,値をヘッダ値として,<http-header>の子要素として指定します。

指定しない場合は,HTTPレスポンスヘッダ定義ファイルの情報がHTTPレスポンスヘッダとして使用されます。

(凡例)

−:該当する項目はありません。

(d) 応答電文フォーマット(ヘッダ変数用)(JSON-XML変換用)

JSON-XML変換の定義を設定するヘッダ変数用の応答電文フォーマットを次に示します。この電文フォーマットのファイル名は「urecp_custom_response.xsd」です。名前空間は「http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/custom/response」です。

表2‒15 応答電文フォーマット(ヘッダ変数用)(JSON-XML変換用)

タグ名

種別

出現回数※1

説明

<custom-reception-response>

1回

<json-transfer>

boolean

0または1回

HTTP受付のレスポンス処理時に,JSON-XML変換するかどうかを指定するタグです。指定値は次のどちらかです。

true:JSON-XML変換します。※2

false:JSON-XML変換しません。

  • タグがあって値が「true」または「false」の場合

    指定した値が適用されます。

  • タグがあって値が「true」または「false」のどちらでもない場合

    システム例外を返します。

  • タグがあって値がない場合

    デフォルトの「false」が使用されます。

  • タグがない場合

    HTTP受付定義ファイルのhttprecp.response.switchover.json-transfer.modeプロパティの値が有効になります。

(凡例)

−:該当する項目はありません。

注※1

規定の出現回数を超える場合の動作は保証されません。

注※2

HTTP受付定義ファイルのhttprecp.response.switchover.json-transfer.modeプロパティの値に「true」が設定されていない場合,JSON-XML変換をしません。

(e) 応答電文フォーマット(ボディ変数用)(HTTP受付用)

HTTP受付がビジネスプロセスを呼び出したときに渡すボディ変数の応答電文フォーマットを次に示します。この電文フォーマットのファイル名は「urecp_http_dummy_body_response.xsd」です。名前空間名は「http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/http/response」です。

なお,この電文フォーマットは応答電文フォーマット(ボディ変数用)のダミーフォーマットです。応答電文(ヘッダ)のignore-bodymsg要素の値が「true」,またはHTTP受付定義ファイルのhttprecp.response.ignore-bodymsgプロパティが「true」(応答電文(ボディ)を無視する設定)の場合に使用します。

応答電文(ボディ)を無視する設定の場合,HTTP受付に応答電文フォーマット(ボディ変数用)を設定していないと,応答電文(ボディ)の変数が存在しないためにビジネスプロセスが変数を返すことができなくなります。このため,このダミーフォーマットをHTTP受付に設定して応答電文(ボディ)の変数を作成し,応答アクティビティに割り当てることを推奨します。

表2‒16 応答電文フォーマット(ボディ変数用)(応答電文(ボディ)を無視する設定の場合)

タグ名

種別

出現回数

説明

<http-body-response>

1回

<any>

string

0回以上

(凡例)

−:該当する項目はありません。

応答電文(ボディ)を無視しない設定の場合,応答電文フォーマット(ボディ変数用)はHTTPレスポンスに応じてユーザが作成してください。

(3) 電文フォーマットの作成方法

HTTP受付で使用する電文フォーマットの作成方法について説明します。

電文フォーマットと使用するXMLスキーマの関係を次の表に示します。

表2‒17 電文フォーマットと使用するXMLスキーマの関係

電文フォーマット

説明

ユーザによる編集

要求電文

ヘッダ変数用(HTTP受付用)

サービスプラットフォームが提供する次のXMLスキーマファイルをそのまま利用します。

  • urecp_http_header_request.xsd※3

不要

ボディ変数用(HTTP受付用)(メイン)※1

サービスプラットフォームが提供する次のXMLスキーマファイルをそのまま利用します。

  • urecp_http_body_request.xsd※3

不要

ボディ変数用(HTTP受付用)(詳細)※1

要求電文(ボディ)の値を利用する場合,サービスプラットフォームが提供する次のXMLスキーマファイルを一部編集して利用します。

  • urecp_http_body_detail_request.xsd※3

要求電文(ボディ)の値を利用しない場合はサービスプラットフォームが提供するXMLスキーマファイルを利用しません。

任意

ボディ変数用(JSON-XML変換用)※2

JSON-XML変換をする場合にJSON変換ツールで作成します。

JSON形式の要求電文,および応答電文のサンプルファイルを入力JSONファイルとして用意し,JSON変換ツールでXSDファイルを作成してください。

任意

応答電文

ヘッダ変数用(HTTP受付用)

サービスプラットフォームが提供する次のXMLスキーマファイルをそのまま利用します。

  • urecp_http_header_response.xsd※3

不要

ヘッダ変数用(JSON-XML変換用)

サービスプラットフォームが提供する次のXMLスキーマファイルをそのまま利用します。

  • urecp_custom_response.xsd※4

不要

ボディ変数用(HTTP受付用)※1

サービスプラットフォームが提供する次のXMLスキーマファイルをそのまま利用します。

  • urecp_http_dummy_body_response.xsd※3

応答電文(ボディ)を無視する設定の場合に利用を推奨します。

不要

応答電文(ボディ)を無視しない設定の場合に,HTTPリクエストの内容に応じて,ユーザが作成します。

必要

ボディ変数用(JSON-XML変換用)※2

JSON-XML変換をする場合にJSON変換ツールで作成します。

JSON形式の要求電文,および応答電文のサンプルファイルを入力JSONファイルとして用意し,JSON変換ツールでXSDファイルを作成してください。

任意

注※1

HTTP受付をパススルーモードで使用する場合,HTTPリクエストおよびHTTPレスポンスの内容に応じてユーザが作成する必要があります。

注※2

HTTP受付でJSON-XML変換の動作を変更する場合は,JSON-XML変換定義ファイルをJSON変換ツールの実行時に指定してください。

JSON変換ツールの実行形式を次に示します。

cscjson2xsd -in <入力JSONファイルのパス> -out <出力XSDファイルのパス> [-f <JSON-XML変換定義ファイルのパス>]

JSON変換ツールの詳細は,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「13. JSON変換ツールを使用したデータ変換」を参照してください。

注※3

サービスプラットフォームが提供する電文フォーマットのXMLスキーマは,「<サービスプラットフォームのインストールディレクトリ>\CSC\custom-reception\http\schema」に格納されています。編集する場合はフォルダごと任意の場所にコピーしてから編集してください。

注※4

サービスプラットフォームが提供する電文フォーマットのXMLスキーマは,「<サービスプラットフォームのインストールディレクトリ>\CSC\schema\msg」に格納されています。XMLスキーマはそのまま使用してください。編集した場合の動作は保障されません。

以降に,次に示す電文フォーマットのXMLスキーマの作成方法を示します。

(a) 要求電文フォーマット(ボディ変数用)(HTTP受付用)の作成

  1. XMLスキーマファイル(urecp_http_body_detail_request.xsd)をXMLエディタなどで開き,次の図の枠内で囲まれた部分を編集します。

    [図データ]

    XMLスキーマファイルの編集時には次の点に注意してください。

    • 要素を追加する場合は,<http-body-request>の子要素として定義してください。孫要素などの構造は定義しないでください。

    • 定義した要素に対応するキーがHTTPリクエストのクエリ文字列内にない場合は,要求電文内で定義した要素は作成されません。

    • 要素として定義していないキーがHTTPリクエストのクエリ文字列内にある場合,要求電文内でキーに対応する要素が作成されます。

  2. XMLスキーマファイルを上書き保存します。

(b) 応答電文フォーマット(ボディ変数用)(HTTP受付用)の作成

  1. XMLエディタなどで任意のXMLスキーマファイルを作成します。

    応答電文フォーマット(ボディ変数用)の作成例については,「付録F HTTP受付を利用したビジネスプロセスの設定例」を参照してください。

  2. 「urecp_http_body_response.xsd」のファイル名で任意のディレクトリに保存します。