Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム リファレンス


3.11.4 HTTP受付ルーティング定義ファイル

〈この項の構成〉

(1) 形式

[図データ]

(2) 機能

HTTP受付のマッチングの条件や,実行するプロパティ値をXML形式で設定します。

HTTP受付ルーティング定義ファイルが読み込まれるようにするには,HTTP受付定義ファイルでhttprecp.use-routing-definitionプロパティにtrueを指定する必要があります。

この定義ファイルはHTTP受付の起動時に読み込まれます。読み込み時にエラーが発生すると,HTTP受付の起動に失敗します。

HTTP受付のルーティング機能については,マニュアル「サービスプラットフォーム 解説」の「2.15.12 HTTP受付のルーティング機能」を参照してください。

(3) ファイルの格納先

<サービスプラットフォームのインストールディレクトリ>\CSC\custom-reception\http\config\templates\cscurecphttp_routing.xml
注意事項

ここに格納されているファイルはテンプレートファイルです。HTTP受付ルーティング定義ファイルを編集する場合は,ユーザ定義受付(呼出先選択)であるHTTP受付の追加時にユーザ定義受付定義画面(詳細)で[独自定義ファイル]の[編集]ボタンをクリックし,定義ファイルの内容を修正してください。

(4) 設定できる要素

<?xml version="1.0" encoding="UTF-8"?>

このファイルがXMLファイルであることを示すXML宣言です。

<urecphttp-routing>

HTTP受付ルーティング定義のルート要素です。

<path pattern="URLパターン" [server="ホスト名"]>

path要素です。path要素は複数定義することもできます。

path要素ごとに次に示す属性を設定します。

<HTTPメソッド要素>

HTTPメソッド要素として設定できる要素を次に示します。

設定できる要素

マッチするリクエストメソッド

<GET>…</GET>

リクエストメソッドがGETの場合

<POST>…</POST>

リクエストメソッドがPOSTの場合

<HEAD>…</HEAD>

リクエストメソッドがHEADの場合

<PUT>…</PUT>

リクエストメソッドがPUTの場合

<DELETE>…</DELETE>

リクエストメソッドがDELETEの場合

<OPTIONS>…</OPTIONS>

リクエストメソッドがOPTIONSの場合

この要素に設定されていないHTTPメソッドを使用してリクエストが実行された場合,エラーメッセージ(KDEC80464-E)を出力して,HTTPステータスコード(405)をリクエスタに返します。

HTTPメソッド要素は複数の種類を設定できますが,同じHTTPメソッド要素をpath要素内に指定すると,HTTP受付の開始に失敗します。

<invoke>

invoke要素には,HTTP受付から呼び出すビジネスプロセス名を設定します。

設定したビジネスプロセス名は,次の両方の設定値にマッチするリクエストを受信した場合に呼び出されます。

<property>

property要素には,HTTP受付定義ファイルのプロパティと値を設定します。

次の両方の設定値にマッチするリクエストを受信した場合,HTTP受付の実行時だけプロパティ値を変更して実行できます。

このとき,同じプロパティがHTTP受付定義ファイルに設定されていても,HTTP受付ルーティング定義ファイルのプロパティが適用されます。

HTTP受付ルーティング定義ファイルのプロパティ値と,HTTP受付定義ファイルのプロパティ値との優先順位を次に示します。

  1. HTTP受付ルーティング定義ファイルに設定したプロパティの値

  2. HTTP受付定義ファイルに設定したプロパティの値

  3. HTTP受付定義ファイルに設定するプロパティのデフォルト値

property要素はHTTPメソッド要素内に複数定義できます。なお,同じプロパティ名を複数定義すると,HTTP受付の開始に失敗します。

設定形式

プロパティ名と値を次の形式で設定します。

<property key="プロパティ名">値</property>
設定できるプロパティの種類

設定できるプロパティの種類を次に示します。各プロパティの設定値については,「3.11.3 HTTP受付定義ファイル」を参照してください。

  • httprecp.switchover.pass-through.mode(パススルーモードまたは標準モードの指定)

  • httprecp.pass-through.parameter-use(パススルーモードのmsgキーの使用可否)

  • httprecp.request.switchover.json-transfer.mode(リクエスト処理時のJSON-XML変換の有無)

  • httprecp.response.switchover.json-transfer.mode(レスポンス処理時のJSON-XML変換の有無)

(5) 動的セグメントを指定した場合の抽出結果

URLパターンに動的セグメントを指定した場合,リクエストURLの対応するセグメントが抽出されます。URLパターンの末尾に「{*」「}」で囲まれた動的セグメントを指定した場合は,「/」で区切られた複数のセグメントが抽出されます。

抽出結果は,要求電文フォーマット(ヘッダ変数用)の要求ヘッダ電文の<url-parameters>要素の子要素として設定されます。HTTP受付の電文フォーマットについては,マニュアル「サービスプラットフォーム 開発ガイド 受付・アダプタ定義編」の「2.5.2 HTTP受付の電文フォーマットを作成する」を参照してください。

例として,動的セグメントを指定したURLパターンと,その抽出結果を次に示します。

URLパターンの設定値

コンテキストルート部分を除いたリクエストURL

URLパラメタの抽出結果

/books

/books

なし(動的セグメントを指定していないため)

/books/{bookid}/page/{pageno}

/books/1/page/

<url-parameters>

 <bookid>1</bookid>

 <pageno></pageno>

</url-parameters>

/books/1/page/2

<url-parameters>

 <bookid>1</bookid>

 <pageno>2</pageno>

</url-parameters>

/books/{bookid}/page/{*extra}

/books/1/page/

<url-parameters>

 <bookid>1</bookid>

 <extra></extra>

</url-parameters>

/books/1/page/2

<url-parameters>

 <bookid>1</bookid>

 <extra>2</extra>

</url-parameters>

/books/1/page/2/images

<url-parameters>

 <bookid>1</bookid>

 <extra>2/images</extra>

</url-parameters>

(6) マッチング順序

HTTP受付ルーティング定義ファイルの中で,最初にマッチしたホスト名,URLパターンおよびHTTPメソッドが有効になります。

次の定義例のマッチング順序について説明します。

<urecphttp-routing>
  <path pattern="/books/{bookid}">
    <GET><invoke>BP01</invoke></GET>
  </path>
  <path pattern="/books/extra">
    <GET><invoke>BP02</invoke></GET>
  </path>
</urecphttp-routing>

この場合,「/books/extra」へのGETリクエストは,定義されている2つのURLパターン「/books/{bookid}」「/books/extra」のどちらにもマッチします。「/books/{bookid}」のほうが先に定義されているので,HTTP受付はビジネスプロセス「BP01」を呼び出します。BP02は呼び出されません。

「/books/extra」へのGETリクエストでBP02を呼び出し,「/books/extra」以外の/books/xxxへのリクエストでBP01を呼び出すようにするには,次のように「/books/extra」を先に定義してください。

<urecphttp-routing>
  <path pattern="/books/extra">
    <GET><invoke>BP02</invoke></GET>
  </path>
  <path pattern="/books/{bookid}">
    <GET><invoke>BP01</invoke></GET>
  </path>
</urecphttp-routing>

(7) 記述例

HTTP受付ルーティング定義ファイルの記述例をXML宣言を含めて次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<urecphttp-routing xmlns="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/http/routing"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/http/routing/urecp_http_routing_definition.xsd">
  <path pattern="/api/books">
    <GET>
      <invoke>bp01</invoke>
      <property key="httprecp.switchover.pass-through.mode">true</property>
      <property key="httprecp.pass-through.parameter-use">true</property>
    </GET>
    <POST><invoke>bp02</invoke></POST>
  </path>
  <path pattern="/api/books/{book-id}">
    <GET><invoke>bp03</invoke></GET>
    <PUT><invoke>bp04</invoke></PUT>
    <DELETE><invoke>bp05</invoke></DELETE>
  </path>
  <path pattern="/api/books/{book-id}/authors/{author-idx}">
    <GET><invoke>bp06</invoke></GET>
    <PUT><invoke>bp07</invoke></PUT>
    <DELETE><invoke>bp08</invoke></DELETE>
  </path>
</urecphttp-routing>

この場合,URLパラメタの抽出結果を保持するヘッダ電文のスキーマ(urecp_http_header_urlparameter.xsd)は,次のように作成してください。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified"
targetNamespace="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/http/request"
 xmlns:hrc="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/reception/http/request"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:complexType name="http-header-urlparametersType">
    <xsd:sequence>
      <xsd:element name="book-id" type="xsd:string"/>
      <xsd:element name="author-idx" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>