FilterDescriptor De classe
Os filtros são a maneira fundamental na qual o Business Data Catalog captura entrada usuário (ou sistema) e plumbs-la por meio para a invocação do back-end API. FilterDescriptors descrever onde uma série complexa de parâmetros, um valor filtro deve ser inserido. Isso é conseguido 'indicação' de TypeDescriptors que representa parâmetros complexos de uma definição do método para sinalizador onde a inserção deve acontecer. É importante para detalhes que o back-end deve fornecer a funcionalidade de filtragem; o FilterDescriptors forma simplesmente um mecanismo para superfície isso para o usuário final. Objetos FilterDescriptor pertencem (contidos) dentro do método objetos. Eles são chamados subseqüentemente por objetos TypeDescriptor.
Espaço para nome Microsoft.Office.Server.ApplicationRegistry.Administration
Conjunto de Módulos (Assembly) Microsoft.SharePoint.Portal (em microsoft.sharepoint.portal.dll)
A sintaxe
<SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel:=True)> _
<SharePointPermissionAttribute(SecurityAction.Demand, ObjectModel:=True)> _
Public Class FilterDescriptor
Inherits AccessControlledMetadataObject
Dim instance As FilterDescriptor
[SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel=true)]
[SharePointPermissionAttribute(SecurityAction.Demand, ObjectModel=true)]
public class FilterDescriptor : AccessControlledMetadataObject
Comentários
Os usuários podem desejar para recuperar as instâncias de uma entidade que correspondam aos alguns critérios.De exemplo, um usuário pode desejar para exibir os clientes cujos nomes começam com "A" ou os pedidos feitos por um determinado cliente.O API usado para recuperar clientes requer que este entrada do usuário ser passado como o terceiro parâmetro Seqüência de caracteres na chamada.O autor metadados criará um FilterDescriptor de um tipo de caractere curinga, e depois raiz da marca o terceiro parâmetro TypeDescriptor com esse recém-criadas FilterDescriptor.Muitos tais FilterDescriptors podem ser associado com um único .Users Method (API), em seguida, escolher o filtro desejar em tempo de execução, especificar um valor para ele e o Business Data Catalog passa que valor do filtro para o método back-end, inseri-la para a localidade exatamente onde o back-end espera dele, que faz com que ele, em seguida, retorna apenas as linhas o usuário quer ver.
Dica
FilterDescriptor é um objeto metadados enquanto os filtros são executar-objetos tempo.FilterDescriptor FilterDescriptor descrevem o disponível filtros em um método.
Filtering Patterns
Linha - de - sistemas empresa (LOB) fornecem vários mecanismos filtragem.O Business Data Catalog comum resumos padrões para que ele pode fornecer aos usuários com a mesma filtragem semântica, regardless of o fonte de dados.O Business Data Catalog suporta o seguinte filtros e filtragem padrões:
Wildcard filtro limites As instâncias retornadas aos onde campo field like value, onde valor pode conter o caractere curinga asterisco (*).Os usuários podem usar esse tipo filtro para apresentar mais amigável filtros such as "começa com" e "contém".
Comparison filtro limites As instâncias retornadas para essas onde the condition is met. SQL dá suporte a ele com o WHERE WHERE cláusula.
Limitar filtro limites de número de ocorrências retornadas ao nLimit .SQL oferece suporte a ele com a cláusula SELECT TOP SELECT TOP.Usando um filtro limite, você pode evitar longos aguarda, pontos negativos tempo e também usuários evitar de emissão incorreto consultas que solicitação grandes quantidades de dados.
UserContext UserContext limites de ocorrências pela atual contexto do usuário.Este filtro informa a Business Data Catalog para anexar o atual domínio ome do usuário Microsoft Windows para chamar o método.
Username limites de Ocorrências por um nome único usuário Sign-on (SSO).Este filtro informa a Business Data Catalog para transmitir Nome de usuário a partir de SSO como parte de um parâmetro para chamar o método.
Password Works com o filtro Username Nome de usuário.Este filtro informa a Business Data Catalog para transmitir a senha do SSO como parte de um parâmetro para chamar o método.
Dica
A definição método back-end deve suporte os filtros.Só então pode, em um contextual maneira, use filtros para refletir no aplicativo de front-end a funcionalidade que está disponível na back-end.Os metadados simplesmente declara que filtros oferece suporte a um método.
UserProfile USERPROFILE um tipo simples filtro você pode especificar no FilterDescriptor FilterDescriptor definição.Para usar este filtro, declare um filtro do tipo "USERPROFILE" e adicionar um System.String System.String propriedade com o nome "UserProfilePropertyName", cujo valor é o nome de uma propriedade User Profile.O Business Data Catalog será aspecto até o atual perfil do usuário, ler o valor da propriedade com este nome e inserir que através para a invocação do back-end.
SSOTicket faz o Business Data Catalog para transmitir o tíquete de SSO do SSO como parte de um parâmetro para chamar o método.
LastIdSeen LastIdSeen reunir para IDEnumerator enumeração membros.Para serviços da Web e outros aplicativos back-end não-fluxo contínuo, você deve usar o filtro LastIdSeen no seu membro IDEnumerator para melhorar desempenho, como mostra o seguinte exemplo:
SELECT TOP 100 Id FROM Customers WHERE Id>=@LastIdSeen ORDER BY Id
Usuário filtros como caractere curinga e intervalo declarar quais usuários entradas podem substituir e filtros sistema, como UserContext e UserProfile permitem o Business Data Catalog para definir valores such as token usuário de forma segura.
Importante
Se um autor metadados cria incorreto metadados que utiliza um nome usuário como um filtro User-controllable e confidencial retorna pessoais dados, um usuário podem ver dados do outro usuário. Para evitar isso, use UserContextFilter para transmitir no nome do usuário para chamar o método.
O repositório metadados determinar qual filtra o sistema oferece suporte a consulta Clientes e processar seu usuário interfaces de acordo.
A seguir é as propriedades que aceita o objeto FilterDescriptor FilterDescriptor para banco de dados e serviço da Web sistemas.
Propriedade |
Tipo |
Necessários |
Valor padrão |
Limites/aceitos valores |
Comentários |
---|---|---|---|---|---|
UsedForDisambiguation |
System.Boolean |
Não |
false |
True FALSO |
Se true verdadeiro, este filtro é usado no selecionador de dados empresa para gerar a lista das possíveis correspondências. |
CaseSensitive |
System.Boolean |
Não |
false |
True FALSO |
Se true, Business Data Web Parts e selecionador de dados Business informam o usuário Este filtro é com diferenciação de maiúsculas e minúsculas. |
IsDefault |
System.Boolean |
Não |
false |
True FALSO |
Se true verdadeiro, este filtro é selecionada Por padrão no selecionador de Business Data. |
Exemplo
O seguinte exemplo de código mostra como criar um método, completo com instâncias método, filtro descritores, valores usar como padrão e TypeDescriptors para a entidade ProductModel no banco de dados de AdventureWorks2000.
Prerequisites
Certifique-se que um provedor de serviços compartilhados já é criado.
Criar um LobSystem e definir parâmetros conexão conforme mostrado na Como a: Criar um LobSystem com o modelo de objeto de administração.
Criar a entidade ProductModel como mostrado no Como a: criar uma entidade com o modelo de objeto de administração
Substituir a constante valor EnterYourSSPNameHere na codificar com o nome do seu Shared Resource Provider.
Project References
Adicione o seguinte referências do projeto no seu projeto código do aplicativo console antes execução neste exemplo:
Microsoft.SharePoint
Microsoft.SharePoint.Portal
Microsoft.Office.Server
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server.ApplicationRegistry.Administration;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using WSSAdmin = Microsoft.SharePoint.Administration;
using OSSAdmin = Microsoft.Office.Server.Administration;
namespace Microsoft.SDK.SharePointServer.Samples
{
class GetStartedAndCreateSystem
{
const string yourSSPName ="EnterYourSSPNameHere";
static void Main(string[] args)
{
SetupBDC();
CreateFinderMethod();
Console.WriteLine("Press any key to exit...");
Console.Read();
}
static void SetupBDC()
{
SqlSessionProvider.Instance().SetSharedResourceProviderToUse(yourSSPName);
}
static void CreateFinderMethod()
{
LobSystemInstance mySysInstance = null;
LobSystemInstanceCollection sysInsCollection = ApplicationRegistry.Instance.GetLobSystemInstancesLikeName("AdventureWorksSampleFromCode");
foreach (LobSystemInstance sysInstance in sysInsCollection)
{
if (sysInstance.Name == "AdventureWorksSampleFromCode")
{
mySysInstance = sysInstance;
break;
}
}
EntityCollection entityColl = mySysInstance.LobSystem.Entities;
foreach (Entity entity in entityColl)
{
if (entity.Name == "ProductModel")
{
Method meth = entity.Methods.Create("GetProductModels", true, true);
meth.Properties.Add("RdbCommandText", "SELECT ProductModelID, Name, CatalogDescription FROM ProductModel WHERE Name LIKE @Name");
meth.Properties.Add("RdbCommandType", System.Data.CommandType.Text);
FilterDescriptor fd = meth.FilterDescriptors.Create("Name", true, "Microsoft.Office.Server.ApplicationRegistry.Runtime.WildcardFilter");
Parameter p1 = meth.Parameters.Create("@Name", true, Microsoft.Office.Server.ApplicationRegistry.MetadataModel.DirectionType.In, "Microsoft.Office.Server.ApplicationRegistry.Infrastructure.DotNetTypeReflector");
TypeDescriptor td1 = p1.CreateRootTypeDescriptor("Name", true, "System.String", null, fd, false);
Parameter p2 = meth.Parameters.Create("ProductModels", true, Microsoft.Office.Server.ApplicationRegistry.MetadataModel.DirectionType.Return, "Microsoft.Office.Server.ApplicationRegistry.Infrastructure.DotNetTypeReflector");
IList<Identifier> ids = new List<Identifier>(entity.Identifiers);
Identifier id = ids[0];
TypeDescriptor td2 = p2.CreateRootTypeDescriptor("ProductModelDataReader", true, "System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", null, null, true);
TypeDescriptor td21 = td2.ChildTypeDescriptors.Create("ProductModelDataRecord", true, "System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", null, null, false);
TypeDescriptor td210 = td21.ChildTypeDescriptors.Create("ProductModelID", true, "System.Int32", id, null, false);
TypeDescriptor td211 = td21.ChildTypeDescriptors.Create("Name", true, "System.String", null, null, false);
TypeDescriptor td212 = td21.ChildTypeDescriptors.Create("CatalogDescription", true, "System.String", null, null, false);
MethodInstance methInst1 = meth.MethodInstances.Create("ProductModelFinder", true, td2, Microsoft.Office.Server.ApplicationRegistry.MetadataModel.MethodInstanceType.Finder);
MethodInstance methInst2 = meth.MethodInstances.Create("ProductModelSpecificFinder", true, td2, Microsoft.Office.Server.ApplicationRegistry.MetadataModel.MethodInstanceType.SpecificFinder);
IList<MethodInstance> methInstCollection = new List<MethodInstance>(entity.MethodInstances);
td1.SetDefaultValue(methInstCollection[0].Id, "%");
td1.SetDefaultValue(methInstCollection[1].Id, "%");
Console.WriteLine("Created the finder method successfully.");
break;
}
}
}
}
}
Hierarquia de herança
System.Object
Microsoft.Office.Server.ApplicationRegistry.Administration.MetadataObject
Microsoft.Office.Server.ApplicationRegistry.Administration.AccessControlledMetadataObject
Microsoft.Office.Server.ApplicationRegistry.Administration.FilterDescriptor
Segmento de segurança
Qualquer público estático ( compartilhadas Na Visual Basic) os membros desse tipo são segmento seguro. Os membros de instância não são garantia ser segmento seguro.
Consulte também
Referência
FilterDescriptor Membros
Microsoft.Office.Server.ApplicationRegistry.Administration De espaço para nome