高度なカスタマイズ > Windchill アダプタ > Windchill アダプタ Webject の使用 > TYPE および WHERE パラメータの指定 > WHERE パラメータで有効な構文
  
WHERE パラメータで有効な構文
WHERE パラメータには照会表現を使用できます。有効な照会定義式には 1 つ以上の照会用語が含まれています。
用語は属性名、関連演算子、および値またはワイルドカードのパターンを指定します。
否定演算子を用語の前に配置して、データベースの逆一致演算子を適用するように要求できます。
用語をブール演算子でつないで結合定義式 (AND) や分離定義式 (OR) を指定したり、
サブ定義式を括弧で囲んで実行順序を制御したりできます。
以下の文法では WHERE パラメータに有効な構文を定義します。
引用符で囲まれた文字列が文法の終端記号を定義します (有効な WHERE 値に必要な連続したテキスト文字列)。
"<"">" で囲まれた名前は、文法内の非終端記号です。
"("")*" で囲まれた連続文字列はゼロ以上のオカレンスが有効であることを示します。
非終端記号を作成するほかの方法として、縦線文字 "|" で区切る方法があります。
<expression> ::= <subexpr>
| "()"
<subexpr> ::= <term> (<boolean> <subexpr>)*
<term> ::= <name> <relational> <value>
| "!" <term>
| "(" <expression> ")"
<boolean> ::= "&" | "|"
<relational> ::= "=" | "!=" | "<" | "<=" | ">" | ">="
<name> ::= attribute-name
<value> ::= <quoted> | <unquoted>
<quoted> ::= "' " <unquoted-value> "' "
<unquoted> ::= <exact> | <wildcard>
<wildcard> ::= <wild_char> (<wildcard>)*
<wild_char> ::= "*" | character
ここで、
attribute-name - 許容可能な値は、TYPE パラメータで指定したビジネスオブジェクトタイプの属性に対する内部名です。
ハード (モデル) 属性の内部名は、単にその属性の名前になります。
ソフト属性の内部名は「タイプおよび属性の管理」ユーティリティで割り当てられます。
これらの内部名は、<Windchill>/codebase/LogicalAttributes.xml でオーバーライドできます。
"()" - 特別定義式 "()" は、TYPE パラメータで指定されたすべてのビジネスオブジェクトタイプを返す照会を生成します。
この表現は多量のビジネスオブジェクトを返すことがあるので注意して使用してください。その他の表現は、指定した基準に一致するビジネスオブジェクトがある場合にそれを返す照会を生成します。さらに Webject は複数の WHERE パラメータ値を受け入れます。この場合、複数の値は & 演算子で連結され、実行する照会定義式が形成されます。
boolean - ブール演算子 & は AND 演算子、ブール演算子 | は OR 演算子です。
& と | の両方が定義式に指定されている場合、& は | よりも優先されるので、& と結合しているサブ定義式が先に実行されます。ただし、括弧で囲まれた定義式は式全体を通してほかの部分よりも先に常時実行されるので、括弧は優先するデフォルトの規則をオーバーライドするときに使用できます。
括弧で囲まれているネストされた表現は、最も深くネストされた部分から浅い部分の順序で実行されます。JSP ページを使用する場合、WHERE 句では AND の代わりに & を使用できます。XML タスクを使用する場合は、& の HTML エンコード値である &amp を使用して、AND を指定する必要があります。
value - 許容可能な属性値は、その属性に有効な値またはワイルドカード文字列です。
* 
ワイルドカードは、タイプが文字列の属性でのみ動作します。where 節を前処理する場合、name=value ペアの value 部分は対応する属性のタイプに変換されます。結果として、ワイルドカードは文字列属性でしか動作しません。
たとえば、"count" という名前の属性が整数であると仮定します。"count=1" を含む where 節は、1 を整数に変換できるので有効です。ただし、"count=*" は “1*” を整数に変換できないので無効です。
数の範囲を指定する場合は、> < 演算子を使用します。