Share via


FilterDescriptor

フィルタは、ビジネス データ カタログがユーザー (またはシステム) の入力を取り込み、バックエンド API 呼び出しを介してそれを組み込むための基本的な方法です。FilterDescriptors は、一連の複雑なパラメータのどこにフィルタ値を挿入するかを表します。これは、メソッド定義の複雑なパラメータを表す TypeDEscriptors を "タグ付け" して、挿入する位置にフラグ設定することで実現します。バックエンドにフィルタ機能が備えられている必要があることは重要なので注意してください。FilterDescriptors は、エンド ユーザーに対してこの表面をしあげるメカニズムを形成するに過ぎません。FilterDescriptor オブジェクトは、Method オブジェクトの内側に所有され (含まれ) ます。その後、TypeDescriptor オブジェクトによって参照されます。

ユーザーは、一部の条件と一致するエンティティのインスタンスを取得することができます。たとえば、"A" で始まる名前の顧客や、特定の顧客による注文を表示することができます。顧客の取得に使用する API では、このユーザー入力が起動時の第 3 の文字列パラメータとして渡される必要があります。メタデータ作成者はワイルドカード タイプの FilterDescriptor を作成し、第 3 のパラメータのルート TypeDescriptor をこの新しく作成した FilterDescriptor でタグ付けします。このような FilterDescriptors の多くは、単一の Method (API) に関連付けることができます。その後、ユーザーが実行時に必要なフィルタを選択してそれに値を指定し、ビジネス データ カタログはこのフィルタ値をバックエンド メソッドに渡してバックエンドが予想する正確な位置に挿入します。これにより、ユーザーが見たい行のみが返されます。

たとえば、Customer エンティティの Finder メソッドが以下のように定義されているとします。

SELECT * FROM Customers WHERE CustomerID >= lo

このメソッドが lo = 0 である既定のパラメータ値を持っているとします。 FilterDescriptor メタデータは、ユーザーが lo 値を上書きすると、返されるインスタンスの範囲を制限できることを示しています。この場合、ユーザーは lo 値を指定して特定の結果を得ることができます。

注意

FilterDescriptor は、メタデータ オブジェクトですが、フィルタはランタイム オブジェクトです。FilterDescriptor オブジェクトは、メソッドで使用可能なフィルタを示します。

パターンをフィルタする

基幹業務 (LOB) システムにはさまざまなフィルタリング メカニズムが用意されています。ビジネス データ カタログには、データ ソースとは関係なく、同じフィルタリング セマンティクスをユーザーに提供できるように一般的なパターンがまとめられています。ビジネス データ カタログには次のフィルタおよびフィルタリング パターンが用意されています。

  • Wildcard フィルタ   返されるインスタンスを、値にアスタリスク (*) のワイルドカード文字が含むことができる、field like value に制限します。このフィルタの種類を使用して、"次の文字列で始まる"、"次の値を含む" など、ユーザーにとってわかりやすいフィルタを表示することができます。

注意

ビジネス データ カタログでは、フィルタする目的で LobSystem オブジェクト メタデータに指定したワイルドカード文字を使用します。

  • Comparison フィルタ   返されるインスタンスを the condition is met.するものに制限します。SQL では WHERE 句によってこれをサポートします。

  • Limit フィルタ   返されるインスタンスの数を n に制限します。SQL は SELECT TOP 句によってこれをサポートしています。Limit フィルタを使用することにより、長い待ち時間とタイム アウトを回避し、さらにユーザーが大量のデータを要求する不適切なクエリを実行しないようにすることもできます。

  • UserContext   現在のユーザーのコンテキストによってインスタンスを制限します。このフィルタは、現在の Microsoft Windows ユーザーのドメイン/ユーザー名をメソッド呼び出しに追加するようにビジネス データ カタログに指示します。

  • Username   シングル サインオン (SSO) ユーザー名によってインスタンスを制限します。このフィルタは、SSO からのユーザー名をパラメータの一部としてメソッド呼び出しに渡すようにビジネス データ カタログに指示します。

  • Password   Username フィルタと共に使用します。このフィルタは、SSO からのパスワードをパラメータの一部としてメソッド呼び出しに渡すようにビジネス データ カタログに指示します。

    注意

    バックエンド メソッド定義では、フィルタをサポートしています。これによってのみ、コンテキストに応じた方法で、フィルタを使用してバックエンドで使用可能な機能をフロントエンド アプリケーションに反映することができます。メタデータは、メソッドがサポートするフィルタを単に宣言します。

  • UserProfile    FilterDescriptor 定義で指定可能な、単純なフィルタの種類。このフィルタを使用するには、フィルタの種類 "UserProfile" を宣言して、"UserProfilePropertyName" という名前の System.String プロパティを追加します。この値は、ユーザー プロファイル プロパティの名前です。ビジネス データ カタログは現在のユーザー プロファイルを検索して、この名前のプロパティの値を読み取り、バックエンドの起動に組み込みます。

  • SSOTicket   SSO からの SSO チケットをパラメータの一部としてメソッド呼び出しに渡すようにビジネス データ カタログに指示します。

  • LastIdSeen   IDEnumerator 列挙メンバのチャンキングを可能にします。Web サービスおよび他の非ストリーミング バックエンド アプリケーションでは、以下の例に示すように IDEnumerator メンバで LastIdSeen フィルタを使用して、パフォーマンスを向上します。

    SELECT TOP 100 Id FROM Customers WHERE Id>=@LastIdSeen
    ORDER BY Id
    

Comparison のようなユーザー フィルタは、ユーザーが上書きできる入力を宣言し、UserContext や UserProfile などのシステム フィルタを使用すると、ビジネス データ カタログでユーザー トークンなどの値を安全に設定することができます。

重要

メタデータ作成者が、ユーザー名をユーザー制御可能フィルタとして使用して機密性の高い個人データを返す不適切なメタデータを作成すると、あるユーザーに他のユーザーのデータが表示される可能性があります。これを防ぐために、UserContextFilter を使用してユーザー名をメソッド呼び出しに渡します。

クライアントは、メタデータ リポジトリのクエリを実行してシステムがサポートしているフィルタを特定し、それに応じたユーザー インターフェイスを表示します。

<FilterDescriptors>
      <FilterDescriptor Type="Wildcard" Name="Name">
         <Properties>
            <Property Name="UsedForDisambiguation" 
               Type="System.Boolean">true</Property>
         </Properties>
      </FilterDescriptor>
   <FilterDescriptor Type="Wildcard" Name="ProductNumber" />
</FilterDescriptors>

スキーマ

出現回数

既定値

制限/使用する値

説明

Type

属性 (bdc:FilterDescriptorType)

1..1

true

Limit

Comparison

Wildcard

UserContext

Username

Password

LastId

SsoTicket

UserProfile

フィルタの種類を指定します。

プロパティ

データベースと Web サービス システムの両方で FilterDescriptor オブジェクトが受け入れるプロパティを次に示します。

重要

プロパティでは大文字と小文字が区別されます。

プロパティ

必須

既定値

制限/使用する値

コメント

UsedForDisambiguation

System.Boolean

いいえ

false

true

false

true の場合、一致する可能性のあるリストを生成するために、このフィルタがビジネス データ選択で使用されます。

CaseSensitive

System.Boolean

いいえ

false

true

false

true の場合、ビジネス データ Web パーツおよびビジネス データ選択は、このフィルタが大文字と小文字を区別することをユーザーに伝えます。

IsDefault

System.Boolean

いいえ

false

true

false

true の場合、既定でこのフィルタがビジネス データ選択で選択されます。

See Also

タスク

AdventureWorks SQL Server 2000 のサンプル

[方法] ランタイム オブジェクト モデルの使用を開始する

[方法] 管理オブジェクト モデルの使用を開始する

概念

FAQ : ビジネス データ カタログ

ビジネス データ カタログ : 用語集