FilterCollection クラス (Microsoft.Office.Server.ApplicationRegistry.Runtime)
FilterDescriptor オブジェクトのコレクションを表します。メソッドの実行前にユーザー設定の可能な多数のフィルタを 1 つのメソッドに含めることができます。メソッドを呼び出しています。GetFilters は使用可能なフィルタの FilterCollection を返します。
名前空間: Microsoft.Office.Server.ApplicationRegistry.Runtime
アセンブリ: Microsoft.SharePoint.Portal (microsoft.sharepoint.portal.dll 内)
構文
'宣言
<SerializableAttribute> _
<SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel:=True)> _
<SharePointPermissionAttribute(SecurityAction.Demand, ObjectModel:=True)> _
Public Class FilterCollection
Inherits List(Of FilterBase)
'使用
Dim instance As FilterCollection
[SerializableAttribute]
[SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel=true)]
[SharePointPermissionAttribute(SecurityAction.Demand, ObjectModel=true)]
public class FilterCollection : List<FilterBase>
備考
フィルタはユーザーまたはシステムによってパラメータを取得するメソッドに付けられたコメントであり、返されるインスタンスを制限できます。メタデータ作成者が FilterDescriptor を使用してバックエンド API に対する入力パラメータ内の特定の "スロット" またはフィールドを "タグ付け" します。さらにユーザーまたはシステムがフィルタの値を設定すると、その値はメソッドの実行時にフィールドに書き込まれるため、そのフィールドの既定値が上書きされます。メソッドは 0 以上のフィルタをサポートできます。
基幹業務 (LOB) システムによって各種のフィルタリング メカニズムが提供されています。ビジネス データ カタログには、データ ソースとは関係なく、同じフィルタリング セマンティクスをユーザーに提供できるように一般的なパターンがまとめられています。ビジネス データ カタログには次のフィルタおよびフィルタリング パターンが用意されています。
比較フィルタ 指定した条件に一致した場合に返されるインスタンスを制限しますthe specified condition is met。
ワイルドカード フィルタ 値にアスタリスク (*) のワイルドカード文字が含まれるような、フィールド値などの場合に返されるインスタンスを制限しますfield like value。このフィルタの種類を使用して、"次の文字列で始まる" や "次の値を含む" など、ユーザーにとって分かりやすいフィルタを表示することができます。
制限フィルタ 返されるインスタンスの数を n 個に制限します。SQL は SELECT TOP 句によってこれをサポートしています。制限フィルタを使用することにより、長い待ち時間とタイム アウトを回避し、さらに多量のデータを要求する不適切なクエリをユーザーが実行しないようにすることもできます。
UserContext filter 現在のユーザーのコンテキストによってインスタンスを制限します。このフィルタは現在の Microsoft Windows ユーザーのドメインやユーザー名をメソッド呼び出しに追加するようにビジネス データ カタログに指示します。フォーム認証では、ビジネス データ カタログによってフォーム認証ユーザー名が追加されます。
Username filter シングル サインオン (SSO) ユーザー名によってインスタンスを制限します。このフィルタは、SSO からのユーザー名をパラメータの一部としてメソッド呼び出しに渡すようにビジネス データ カタログに指示します。
Password filter Username フィルタで使用します。このフィルタは、SSO からのパスワードをパラメータの一部としてメソッド呼び出しに渡すようにビジネス データ カタログに指示します。
注意
バックエンド メソッド定義では、フィルタをサポートしています。その場合に限って、状況に応じてフィルタを使用し、バックエンド アプリケーションで使用できるフロントエンド Web サーバー内の機能に反映させることができます。メタデータは、メソッドがサポートするフィルタを単に宣言します。
UserProfile filter FilterDescriptor 定義で指定されます。この単純なフィルタを使用するには、フィルタの種類が "UserProfile" のものを宣言し、"UserProfilePropertyName" という名前の付いた System.String プロパティを追加します。この値はユーザー プロファイル プロパティの名前です。ビジネス データ カタログは現在のユーザーのプロファイルを検索し、この名前の付いたプロパティの値を読み込み、呼び出すバックエンド メソッド全体に組み込みます。
SSOTicket filter SSO からの SSO チケットをパラメータの一部としてメソッド呼び出しに渡すようにビジネス データ カタログに指示します。
LastIdSeen filter IDEnumerator オブジェクトのチャンキングを有効にします。Web サービスおよびその他の非ストリーミング バックエンド アプリケーションの場合、パフォーマンス向上のため、次のコード例に示すように、IDEnumerator オブジェクトの LastIdSeen フィルタを使用します。
SELECT TOP 100 Id FROM Customers WHERE Id>=@LastIdSeen ORDER BY Id
例
この例は、AdventureWorks2000 サンプルで Product エンティティに対して Finder メソッドを実行する方法を示しています。
Prerequisites
共有サービス プロバイダが既に作成されていることを確認します。
コード内の定数値 EnterYourSSPNameHere を共有リソース プロバイダの名前に置き換えます。
例で参照されている LobSystem オブジェクトおよびエンティティの名前がビジネス データ カタログ内に存在することを確認します。有効な名前を使用します。
Project References
このサンプルを実行する前に、コンソール アプリケーション コード プロジェクトに以下のプロジェクト参照を追加します。
Microsoft.SharePoint
Microsoft.SharePoint.Portal
Microsoft.Office.Server
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Microsoft.Office.Server.ApplicationRegistry.MetadataModel;
using Microsoft.Office.Server.ApplicationRegistry.Runtime;
using Microsoft.Office.Server.ApplicationRegistry.SystemSpecific;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using WSSAdmin = Microsoft.SharePoint.Administration;
using OSSAdmin = Microsoft.Office.Server.Administration;
namespace Microsoft.SDK.SharePointServer.Samples
{
class ExecuteFinder
{
const string yourSSPName ="EnterYourSSPNameHere";
static void Main(string[] args)
{
SetupBDC();
FindAll();
Console.WriteLine("Press any key to exit...");
Console.Read();
}
static void SetupBDC()
{
SqlSessionProvider.Instance().SetSharedResourceProviderToUse(yourSSPName);
}
static void FindAll()
{
NamedLobSystemInstanceDictionary sysInstances = ApplicationRegistry.GetLobSystemInstances();
LobSystemInstance AdvWorksIns = sysInstances["AdventureWorksSampleInstance"];
Entity prodEntity = AdvWorksIns.GetEntities()["Product"];
FilterCollection fc = prodEntity.GetFinderFilters();
IEntityInstanceEnumerator prodEntityInstanceEnumerator = prodEntity.FindFiltered(fc, AdvWorksIns);
while (prodEntityInstanceEnumerator.MoveNext())
{
IEntityInstance IE = prodEntityInstanceEnumerator.Current;
foreach (Field f in prodEntity.GetFinderView().Fields)
Console.Write(IE[f]);
Console.WriteLine("");
}
}
}
}
継承階層
System.Object
System.Collections.Generic.List
Microsoft.Office.Server.ApplicationRegistry.Runtime.FilterCollection
スレッドの安全性
この型のパブリックで静的な (Visual Basic では Shared) すべてのメンバは、スレッド セーフです。インスタンス メンバは、スレッド セーフであるとは保証されません。
関連項目
参照
FilterCollection メンバ
Microsoft.Office.Server.ApplicationRegistry.Runtime 名前空間