Étape de planification 4 : Identifier les filtres requis pour chaque entité
Dernière modification : lundi 19 avril 2010
S’applique à : SharePoint Server 2010
Pour déterminer les filtres requis pour chaque type de contenu externe, vous examinez chacun des paramètres d’entrée de chaque méthode Web et déterminez comment vous souhaitez que le Service BDC (Business Data Connectivity) obtienne la valeur de ce paramètre au moment de l’exécution ; par exemple, dans le composant WebPart Données métiers, etc. Si vous souhaitez que l’utilisateur spécifie la valeur au moment de l’exécution, vous utilisez l’un des filtres utilisateur. Sinon, si vous souhaitez que le service BDC fournisse cette valeur automatiquement, vous utilisez l’un des filtres système ou fournissez des valeurs par défaut dans les métadonnées proprement dites.
Prenez par exemple la méthode GetCustomers dans le proxy SampleWebService. Elle accepte deux paramètres d'entrée : name et limit. Si vous souhaitez que l'utilisateur d'un composant WebPart Liste de données métiers filtre les résultats de la méthode GetCustomers en fournissant des valeurs telles que « Nom comme 'Jo%' » ou « Nom contient 'John' », vous associez un FilterDescriptor au paramètre d'entrée name.
La méthode du service Web principal doit prendre en charge les filtres que vous déclarez ; sinon, la méthode Web risque de ne pas renvoyer les résultats souhaités. Vérifiez d’abord la documentation de votre méthode Web pour connaître les possibilités de filtrage qu’elle prend en charge. Ensuite, déclarez FilterDescriptors dans les métadonnées.
Par exemple, si vous examinez la méthode Web GetCustomers dans le proxy, vous constatez que cette méthode prend deux paramètres d’entrée, name et limit, comme indiqué dans le code suivant.
public Customer[] GetCustomers(string name, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] System.Nullable<int> limit) {
object[] results = this.Invoke("GetCustomers", new object[] {
name,
limit});
return ((Customer[])(results[0]));
}
À présent, supposons que la documentation de cette méthode Web décrit l’utilisation de cette méthode comme indiqué dans le code suivant :
GetCustomers(name, limit) where
name: A string representing the customer's name. This parameter accepts wildcards (that is, '%' representing any string of characters).
limit: A number that limits the number of customers returned in the result set.
Ceci indique clairement que vous pouvez associer les paramètres d’entrée name et limit respectivement à des filtres de caractères génériques et de limite.
Vous nommez chacun des filtres comme vous souhaitez qu’il apparaisse aux utilisateurs, par exemple dans les composants WebPart Données métiers. La propriété UsedForDisambiguation, une propriété du FilterDescriptor, peut être utilisée pour faire en sorte que le contrôle Sélecteur de données métier et les composants WebPart Données métier génèrent la liste de candidats correspondant au filtre. La valeur de l’attribut Type est très importante dans la définition du FilterDescriptor. Cette valeur indique au service BDC de quel type de filtre il s’agit. Il peut s’agir de l’un des filtres utilisateur ou système. L’exemple suivant affiche le code XML de métadonnées de la méthode GetCustomers.
<Method Name="GetCustomers">
<FilterDescriptors>
<FilterDescriptor Type="Wildcard" Name="Name" />
<!-- Limit filter tells Business Data Catalog to bring back
only the specified number of rows back from the line-of-business
application.-->
<!-- Notice that the back-end method should support this
functionality to return only the specified number of rows.
For a sample, see SampleWebService.-->
<FilterDescriptor Type="Limit" Name="Limit" />
</FilterDescriptors>
<Parameters>
<Parameter Direction="In" Name="name">
<TypeDescriptor TypeName="System.String" AssociatedFilter="Name" Name="name" />
</Parameter>
<Parameter Direction="In" Name="limit">
<TypeDescriptor TypeName="System.Int32" AssociatedFilter="Limit" Name="limit" />
</Parameter>
<Parameter Direction="Return" Name="Customers">
<TypeDescriptor TypeName="SampleWebServiceProxy.Customer[], SampleWebService" IsCollection="true" Name="ArrayOfCustomer">
<TypeDescriptors>
<TypeDescriptor TypeName="SampleWebServiceProxy.Customer, SampleWebService" Name="Customer">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" IdentifierName="CustomerID" Name="CustomerID" />
<TypeDescriptor TypeName="System.String" Name="Name" />
<TypeDescriptor TypeName="System.Int64" Name="WorkPhoneNumber" />
<TypeDescriptor TypeName="System.Int64" Name="MobilePhoneNumber" />
<TypeDescriptor TypeName="System.String" Name="Industry" />
<TypeDescriptor TypeName="System.String" Name="WebSite" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="Finder" ReturnParameterName="Customers" ReturnTypeDescriptorName="ArrayOfCustomer" ReturnTypeDescriptorLevel="0" Name="FindCustomerInstances" />
</MethodInstances>
</Method>
Pour obtenir la liste des filtres pris en charge par le service BDC, voir Types de filtres pris en charge par le service Business Data Connectivity.