SOAP オペランドは、副次式ユーティリティー・ビルダーで使用します。このビルダーはオプション・ツールであり、AND、OR、NOT、および括弧によるグループ化を使用することで、副次式から複雑なルール条件を作成する際に役立ちます。
それぞれの作業クラスは、オプションの番号付きルールのリストを含みます。 このルールは、特定の要求について評価され、その要求に対するポリシーを 決定します。それぞれのルールはブール式とポリシー値で 構成されます。式が特定の要求を真と評価した場合、 そのルールに関連したポリシーが使用されます。
ルールに対するブール式の構文とセマンティクスは、 構造化照会言語 (SQL) 式の WHERE 文節に 似ています。具体的には、式の構文は Java™ Message Service (JMS) 1.1 仕様 で定義されます。詳しくは、ルール・ベースの要求分類 を参照してください。
JMS 仕様では、 ID は特定の照会パラメーター、Cookie、HTTP ヘッダーなど、 要求に関連するさまざまな属性を 参照します。JMS ID は要求変数またはオペランド と考えることができます。このオペランドはプロトコル固有のものである場合があります。例えば、SOAP サービス名は、 SOAP 作業クラスでのみ有効なオペランドです。
clienthost LIKE '%.ibm.com'で、'%.ibm.com' は要求のクライアント・ホスト名との比較に使用されるリテラルです。この式は、ibm.com ドメインのコンピューターから発信されるすべての要求に対して、 真です。ストリング・リテラルを単一引用符で 囲みます。数字リテラルは単一引用符で囲まないで ください。AND、 OR、NOT 演算子を含む括弧も、複合ブール式の形成に 使用できます。詳しくは、JMS 1.1 仕様 を参照してください。
オペランド | 構文 | 説明 |
---|---|---|
クライアント・ホスト |
clienthost | 完全修飾クライアント・ホスト名。これは、 インターネット・プロトコル (IP) コマンド・ホスト名の値です。このオペランドは、>、>=、<、<= などの数値演算子をサポートしていません。 |
クライアント IPV4 |
clientipv4 | Internet Protocol version 4 (IPv4) ドット付きクワッドのアドレス・タイプ n.n.n.n を使用したクライアントの IP アドレス。 |
クライアント IPV6 |
clientipv6 | クライアント・コンピューターの Request for Comments 1924 (RFC 1924) に準じた、 Internet Protocol バージョン 6 (IPv6) 128 ビット・アドレス・タイプ x:x:x:x:x:x:x:x。 |
Cookie 名 |
cookie$<name> | Cookie (クッキー) 名。 例えば、式 cookie$My_Cookie_Name='My_Cookie_Value' は要求をテストし、その要求が、値が My_Cookie_Value である My_Cookie_Name という名の Cookie を含むかどうかを確かめます。ある特定の Cookie が存在するかどうかをテストするには、
次の式のいずれかを使用します。
cookie$MyCookieName IS NOT NULL cookie$MyCookieName IS NULL |
ヘッダー・ルール |
header $<name> | ヘッダー名と値。 例えば、式 header$Host='localhost' は、要求をテストし、
値が localhost である HTTP ホスト・ヘッダーを含むかどうかを確かめます。ホスト・ヘッダーが存在するかどうかをテストするには、
次の式のいずれかを使用します。
header$Host IS NOT NULL header$Host IS NULL |
HTTP メソッド |
HTTPMethod | 要求に対する HTTP メソッド。考えられる値は、 POST、GET、PUT、DELETE です。 |
MIME タイプ |
MIMEType | 要求の MIME タイプ |
オペレーション |
operation | Web サービス・オペレーションの名前。 |
割合 |
percentage$<val> | パーセンテージ・オペランドは、時間の固定パーセンテージに対して true に評価されます。
例えば、percentage$50 は、時間のパーセンテージが平均で 50% の場合に true に評価されます。 |
ポート |
port | 要求を受け取った listen ポート。 |
プロトコル |
protocol | 要求を伝送する通信プロトコル。 現在サポートされているプロトコルは、HTTP、HTTPS、SOAP、SOAPS です。 |
照会パラメーター |
queryparm$<name> | ヘッダー名と値。 例えば、式 queryparm$timezone='EST' は要求をテストし、
その要求が EST の値を持つ
timezone という名の HTTP 照会パラメーターを含むかどうかを確認します。照会パラメーターが存在するかどうかをテストするには、
次の式のいずれかを使用します。
queryparm$timezone IS NOT NULL queryparm$timezone IS NULL |
ランプアップ |
rampup$<startTime>$<completionTime> | ランプアップ・オペランドは、時間の可変パーセンテージに対して true に評価されます。
このオペランドは、<startTime> より前は常に false に、<completionTime> より後は常に true に評価されます。
時間が <startTime> から <completionTime> に進行するにつれ、このオペランドが true に評価される確率が高まります。
<startTime> および <completionTime> の形式は、 day/month/year::hour:min:sec です。 ここで、day は日付、month は 12 カ月のうちいずれかの月 (Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov、Dec)、year は 4 桁の年、hour は、24 時間クロックで表した時の 2 桁の時間、min と sec はそれぞれ分と秒です。以下に例を示します。 rampup$01/Jan/2007::08:00:00$01/Jan/2007::17:00:00 は、2007 年 1 月 1 日午前 8 時から 時折 true に評価されるようになり、同日の午後 5 時のランプアップ完了時刻に至る頃には 常に true に評価されています。 |
サーバー・ホスト |
serverhost | サーバーの完全修飾ホスト名。このオペランドは、 >、>=、<、<= などの数値演算子をサポートしていません。 |
サーバー IPV4 |
serveripv4 | IPv4 ドット付きクワッドのアドレス・タイプ n.n.n.n を使用する、サーバー・コンピューターの IP アドレス。 |
サーバー IPV6 |
serveripv6 | サーバー・コンピューターの RFC 1924 に準じた、IPv6 128 ビット・アドレス・タイプ x:x:x:x:x:x:x:x。 |
サービス |
service | Web サービスの名前。 |
時間 |
time | 指定された要求が権限を持つ必要がある 日付と時刻を定義するために使用します。2 つのオプション・フィールドは StartTime と EndTime です。要求が定義済みウィンドウの外側で受け取られる場合、 その要求は処理されません。 「開始時刻」フィールドと「終了時刻」フィールドの フォーマットはそれぞれ dayOfWeek/dayOfMonth/month/year::hour:minute:second です。 例えば、 2007 年 4 月 11 日、木曜日午後 1:03:45 は、次のように指定されます。 Thu/11/Apr/2007::13:03:45 どのフィールドでも、値 * でワイルドカードを使用できます。 例えば、毎月の 1 日は */1 と指定します。 dayofWeek 値は Sun、Mon、Tue、Wed、Thu、Fri、Sat、dayOfMonth 値は 1 から 31 の範囲です。 month 値は 12 カ月を表す非数値の Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov、 Dec です。 year 値は、4 桁の年で構成されます。例えば、 2007 です。 hour 値は、24 時間クロックの時間です。 例えば、午前 8 時は ::8 と表します。minute および second は 0 から 59 の範囲の整数です。 スラッシュ (/) は、日付パラメーターを区切るために 使用し、ダブル・コロン (::) は日付パラメーターを区切るために使用し、 コロン (:) は時刻パラメーターを区切るために使用します。これで、実行される ルーティング・アクションを決定するのは、time オペランドが使用される ルール全体のブール結果となります。 |
仮想ポータル |
virtualportal | 仮想ポータルは WebSphere® Portal Server 内で作成され、WebSphere Virtual Enterprise は、WebSphere Portal Server との 統合を向上するためにこのオペランドをサポートします。仮想ポータルは、要求 URL から WebSphere Portal アプリケーションの Web モジュールのコンテキスト・ルートを取り除いたものです。指定された要求が定義済みの仮想ポータルと一致した場合、そのルールに対して定義された ルーティング・アクションが実行されます。 |
Xpath 式の構文は xpathexpr であり、SOAP でサポートされます。
XPath ストリング式には、ローカル・ネーム・スペースを定義するための XPath 式およびオプション・フィールドを含む必須フィールドがあります。XPath 式に含まれるすべてのネーム・スペースが標準である場合、 2 番目のフィールドはオプションにすることができます。複数のローカル・ネーム・スペースがある場合、 それぞれのネーム・スペースをコンマ (,) で区切ります。
以下の例では、1 つのローカル名前空間定義を持つ xpathexpr を示しています。
xpathexpr$/soap:Envelope/soap:Body/m:getTimeZone/n:clientId$m¥¥=http://test.classify.ws.ibm.com,n¥¥=http://test2.classify.ws.ibm.com = ¥¥'1000¥¥' or operation IS NOT NULL
上記の式では、XPath 式は /soap:Envelope/soap:Body/n:getTimeZone/n:clientId です。 これにはローカル・ネーム・スペース n が含まれます。そのため、 xpathexpr の 2 番目のフィールドは n ¥¥=http://test.classify.ws.ibm.com と定義されます。 ドル記号 ($) は、フィールド定義の開始を示すために使用します。ダブル円記号は、 この例のエスケープ・シーケンスです。最初の等号 (=) は、 ローカル・ネーム・スペース定義の一部なのでエスケープされます。 一方、2 番目の等号 (=) は種別式の演算子で、 エスケープされてはなりません。
以下の例では、2 つのローカル名前空間定義を持つ xpathexpr を示しています。
xpathexpr$/soap:Envelope/soap:Body/m:getTimeZone/n:clientId$m¥¥=http://test.classify.ws.ibm.com,n¥¥=http://test2.classify.ws.ibm.com = ¥¥'1000¥¥' or operation IS NOT NULL
ネーム・スペース | URL |
---|---|
soap | http://schemas.xmlsoap.org/soap/envelope/ |
soap-env | http://schemas.xmlsoap.org/soap/envelope/ |
soapenc | http://schemas.xmlsoap.org/soap/encoding/ |
soapbind | http://schemas.xmlsoap.org/wsdl/soap/ |
xsd | http://www.w3.org/2001/XMLSchema |
xsi | http://www.w3.org/2001/XMLSchema-instance |
xsi | http://ws-i.org/schemas/conformanceClaim/ |
wsdl | http://schemas.xmlsoap.org/wsdl/ |
WebSphere Virtual Enterprise は、ルール式で以下の表の演算子をサポートします。これらの演算子は、WHERE または HAVING 文節の内部に現れるので、SQL 用語では述部 とも呼ばれます。演算子は大/小文字を区別しません。
演算子 | 説明 |
---|---|
OR | 論理 OR 演算子。 |
AND | 論理 AND 演算子。 |
NOT | 否定演算子。 |
IN | 単一の式に複数の値を持つオペランドを表します。その意味は、演算子に対する SQL 標準の意味と整合します。
例えば、ポート値を 9080、9090、9091 などの値のいずれかまたはそのすべての可能性がある場合、以下の式フラグメントを使用します。
port IN (9080,9090,9091)
SQL では、括弧内の値の表し方は、ポートのデータ・タイプによって決まります。port が整数の場合、単一引用符がなくても値は構文的に正しくなります。port がストリングの場合、正しい式は、以下のようになります。
port IN ('9080','9090','9091') |
LIKE | ストリング・オペランド値のパターン・マッチングを表わします。値には、パターン・マッチングの始まりが予期される位置にワイルドカード文字 (%) が含まれている必要があります。 例えば、
host LIKE %blancaという式は、blanca という語および blanca で終わるすべての語に一致し、 host LIKE blanca%という式は、blanca という語および blanca で始まるすべての語に一致します。 host LIKE %blanca%という式は、blanca という語およびトークン blanca が埋め込まれたすべての語に一致します。 java.util.regex.Pattern クラスが使用されます。 |
= | 等価演算子は、大/小文字を区別した一致を表します。 |
> | より大演算子は、数値オペランドで使用されます。 |
>= | より大演算子または等価演算子は、数値オペランドで使用されます。 |
< | より小演算子は、数値オペランドで使用されます。 |
<= | より小演算子または等価演算子は、数値オペランドで使用されます。 |
< > | 非等価演算子。 |
BETWEEN | AND とともに使用して、最初の (低い) 値と最後の (高い) 値を含む、ある範囲の値を選択します。これら 2 つの値を一緒にして、数と日付の値に対して使用します。 |
IS NULL | オペランドに NULL 値が含まれているかどうかをテストします。 |
IS NOT NULL | オペランドに NULL 以外の値が含まれているかどうかをテストします。 |