高度なカスタマイズ > Windchill アダプタ > Windchill アダプタ Webject の使用 > TYPE および WHERE パラメータの指定
  
TYPE および WHERE パラメータの指定
Windchill アダプタでサポートされるほとんどの Webject は、TYPE と WHERE という名前の付いたパラメータを受け入れます。これらのパラメータを組み合わせてデータベースの照会基準を指定します。
TYPE パラメータでは、照会するビジネスオブジェクトのタイプを指定します。
TYPE パラメータの値には、モデル化された Windchill ビジネスオブジェクトクラス名または Windchill タイプおよび属性の管理ユーティリティで定義されたサブタイプを使用できます。詳細については、セクション「TYPE パラメータの有効な構文」を参照してください。
WHERE パラメータでは、照合する属性値と照会基準を指定します。
WHERE パラメータには照会表現を使用できます。有効な照会定義式には 1 つ以上の照会用語が含まれています。詳細については、セクション「WHERE パラメータで有効な構文」を参照してください。
TYPE パラメータの有効な構文
TYPE パラメータでは、タイプの内部名を使用します。内部名は、タイプを参照する必要があるカスタム Info*Engine タスクおよびほかのコードでも使用できます。
タイプの内部名は、既成のタイプのロード時、または「タイプおよび属性の管理」ユーティリティによるタイプの作成 (または更新) 時に設定できます。
内部名には次の規則が適用されます。
システム内のすべてのタイプで一意でなければなりません。
最大 50 文字まで入力できます。
文字、数字、ピリオド、およびアンダースコアのみがサポートされます。
通常、内部名はタイプ名と同じです。タイプに内部名があるかどうかが不明な場合は、タイプおよび属性の管理ユーティリティから情報を表示できます。
* 
タイプに内部名がない場合は、「タイプおよび属性の管理」ユーティリティを使用してタイプを更新することで内部名を追加できます。タイプおよび属性マネージャへのアクセス方法の詳細については、基本的な管理機能のセクションを参照してください。
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*” を整数に変換できないので無効です。
数の範囲を指定する場合は、> < 演算子を使用します。
WHERE パラメータでの大文字と小文字の区別の指定
WHERE パラメータを使用するとき、デフォルトではサーチで大文字と小文字を区別しません。サーチで大文字と小文字を区別するには WHERE_CASE_SENSITIVITY の値に TRUE を指定します。WHERE_CASE_SENSITIVITY パラメータは WHERE パラメータを取るすべての Webject に対して指定できます。
WHERE および TYPE の例
以下は、TYPE パラメータが wt.part.WTPart として指定された場合に設定される可能性のある WHERE パラメータの例です。
すべての部品を返す場合:
()
"engine" という名前の部品を検索する場合:
name=engine
"engine" というサブ文字列を含む名前のすべての部品を検索する場合:
name=*engine*
"en" というサブ文字列の後に一連の文字が続き、その後に "ine" が続き、一連の文字で終る名前のすべての部品を検索する場合:
name=*en*ine*
"engine" で始まる名前または "body" で終る名前の部品を検索する場合:
name=engine*|name=*body
"engine" を含まない "body" で終る名前の部品を検索する場合 (2 つの方法があります):
name=*body&!name=*engine*
name=*body&name!=*engine*
部品番号に "9" を含まない "engine" で始まる名前の部品または "body" で終る名前の部品を検索する場合:
(name=engine*|name=*body)&number!=*9*