ルーティング定義の構成と指定例は、以下のとおりです。
MessageDistribution Description PositionList Position DistributionList Distribution Condition Endpoint Sequence |
指定例
ルーティング定義の指定例は、以下のとおりです。この例では、条件文により受信したデータを判断し、以下のように受信側サービスエンドポイントへ転送しています。
bookid
XML形式のデータで、XPath“/booklist/book/@bookid”にデータが格納されています。
price
XML形式のデータで、XPath“/booklist/book/price”にデータが格納されています。
division
FLAT形式のデータで、先頭から3バイトまでにデータが格納されています。
bookidが“B01”ならば、サービスエンドポイント“endpoint01”に転送します。
bookidが“B02”、かつpriceが“1000未満”ならば、サービスエンドポイント“endpoint02”に転送します。
bookidが“B02”、かつpriceが“1000以上”ならば、サービスエンドポイント“endpoint03”に転送します。
divisionが“999”ならば、サービスエンドポイント“endpoint11”に転送します。
上記のいずれの条件にも合わない場合は、サービスエンドポイント“endpoint21”に転送します。
<?xml version="1.0" encoding="UTF-8" ?> <MessageDistribution name="soap-distribution" routing="INBOUND" inboundtype="SOAP-MSG" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="esi-endpointdistribution.xsd"> <Description>受信用振分け定義</Description> <PositionList> <Position name="bookid" type="xml">/booklist/book/@bookid</Position> <Position name="price" type="xml">/booklist/book/price</Position> <Position name="division" type="flat" code="Shift-jis">0,3</Position> </PositionList> <DistributionList> <Distribution> <Condition>$bookid @EQUAL@ "B01"</Condition> <Endpoint>endpoint01</Endpoint> </Distribution> <Distribution> <Condition>$bookid @EQUAL@ "B02" && $price < 1000</Condition> <Endpoint>endpoint02</Endpoint> <Condition>$bookid @EQUAL@ "B02" && $price >= 1000</Condition> <Endpoint>endpoint03</Endpoint> </Distribution> <Distribution> <Condition>$division @EQUAL@ "999"</Condition> <Endpoint>endpoint11</Endpoint> </Distribution> <Distribution> <Condition>*</Condition> <Endpoint>endpoint21</Endpoint> </Distribution> </DistributionList> </MessageDistribution> |
キー名 | 説明 | 指定例 | |
---|---|---|---|
MessageDistribution | |||
name | ルーティング定義名を指定します。ユーザが任意に指定できます。 | soap-distribution | |
routing | ルーティング種別を指定します。
| INBOUND | |
inboundtype | ルーティング種別が“INBOUND”の場合、接続方式を指定します。以下のどれかを指定します。
| SOAP-MSG | |
outboundtype | ルーティング種別が“OUTBOUND”のときに同期か非同期かを指定します。指定しない場合は互換定義になります。
| SYNC | |
Description | ルーティング定義についての説明を指定します。 | 受信用振分け定義 | |
Parameter | |||
1 | 条件に合うかどうかを判断するデータの位置を指定します。 | ||
name | パラメタ名を指定します。ユーザが任意に指定できます。 | bookid | |
type | データのタイプを指定します。 | xml | |
値 | データの位置をXPathで指定します。 | /booklist/book/@bookid | |
2 | 条件に合うかどうかを判断するデータの位置を指定します。 | ||
name | パラメタ名を指定します。ユーザが任意に指定できます。 | price | |
type | データのタイプを指定します。 | xml | |
値 | データの位置をXPathで指定します。 | /booklist/book/price | |
3 | 条件に合うかどうかを判断するデータの位置を指定します。 | ||
name | パラメタ名を指定します。ユーザが任意に指定できます。 | division | |
type | データのタイプを指定します。 | flat | |
code | 使用している文字コードを指定します。 | Shift-jis | |
値 | データの位置を“開始位置,けた数”で指定します。 | 0,3 | |
DistributionList | |||
Distribution | |||
1 | Condition | ||
データを振り分ける条件を指定します。 | |||
値 | 条件式を指定します。 | $bookid @EQUAL@ "B01" | |
Endpoint | |||
振分け先のサービスエンドポイント名を指定します。 | |||
値 | 振分け先のサービスエンドポイント名を指定します。 | endpoint01 | |
2 | Condition | ||
データを振り分ける条件を指定します。 | |||
値 | 条件式を指定します。 | $bookid @EQUAL@ "B02" && $price < 1000 | |
Endpoint | |||
振分け先のサービスエンドポイント名を指定します。 | |||
値 | 振分け先のサービスエンドポイント名を指定します。 | endpoint02 | |
Condition | |||
データを振り分ける条件を指定します。 | |||
値 | 条件式を指定します。 | $bookid @EQUAL@ "B02" && $price >= 1000 | |
Endpoint | |||
振分け先のサービスエンドポイント名を指定します。 | |||
値 | 振分け先のサービスエンドポイント名を指定します。 | endpoint03 | |
3 | Condition | ||
データを振り分ける条件を指定します。 | |||
値 | 条件式を指定します。 | $division @EQUAL@ "999" | |
Endpoint | |||
振分け先のサービスエンドポイント名を指定します。 | |||
値 | 振分け先のサービスエンドポイント名を指定します。 | endpoint11 | |
4 | Condition | ||
データを振り分ける条件を指定します。 | |||
値 | 条件式を指定します。 | * | |
Endpoint | |||
振分け先のサービスエンドポイント名を指定します。 | |||
値 | 振分け先のサービスエンドポイント名を指定します。 | endpoint21 |