Freigeben über


Planungsschritt 4: Identifizieren der für die einzelnen Entitäten erforderlichen Filter

Letzte Änderung: Montag, 19. April 2010

Gilt für: SharePoint Server 2010

Zur Bestimmung der für die einzelnen Inhaltstypen erforderlichen Filter ziehen Sie die Eingabeparameter der Webmethoden heran und legen fest, wie der Business Data Connectivity-Dienst (BDC) den Wert dieses Parameters zur Laufzeit abrufen soll; beispielsweise in Geschäftsdatenwebparts usw. Verwenden Sie einen der Benutzerfilter, wenn der Benutzer den Wert zur Laufzeit angeben soll. Wenn dagegen dieser Wert von BDC automatisch bereitgestellt werden soll, verwenden Sie einen der Systemfilter oder stellen Standardwerte in den Metadaten selbst bereit.

Betrachten Sie beispielsweise die GetCustomers-Methode im SampleWebService-Proxy. Zwei Eingabeparameter werden übernommen: name und limit. Wenn der Benutzer eines Geschäftsdatenliste-Webparts die Ergebnisse der GetCustomers-Methode durch Eingeben von Werten wie z. B. "Name like 'Jo%'" oder "Name contains 'John'" filtern soll, ordnen Sie dem name-Eingabeparameter ein FilterDescriptor-Element zu.

Die Back-End-Webdienstmethode sollte die von Ihnen deklarierten Filter unterstützen. Andernfalls werden von der Webmethode möglicherweise nicht die gewünschten Ergebnisse zurückgegeben. Lesen Sie zunächst in der Dokumentation für die Webmethode nach, welche Filterfunktionen unterstützt werden. Deklarieren Sie anschließend FilterDescriptors in den Metadaten.

Beispielsweise werden wie im folgenden Code dargestellt bei der GetCustomers-Webmethode im Proxy die beiden Eingabeparameter name und limit akzeptiert.

    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]));
    }

Angenommen, in der Dokumentation für diese Webmethode ist die Verwendung dieser Methode wie im folgenden Code gezeigt beschrieben.

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.

Dies ist eine deutliche Aussage, dass Sie die Eingabeparameter name und limit mit Platzhalter-. bzw. Limit-Filtern verwenden können.

Sie können die Filter so benennen, wie sie für die Benutzer angezeigt werden sollen, z. B. in den Geschäftsdatenwebparts. Mit der UsedForDisambiguation-Eigenschaft, einer Eigenschaft von FilterDescriptor können Sie das Steuerelement für die Auswahl externer Daten (External Data Picker) und die Geschäftsdatenwebparts anweisen, eine Liste der mit dem Filter übereinstimmenden Kandidaten zu generieren. Der Wert für das Type-Attribut spielt bei der Definition von FilterDescriptor eine sehr wichtige Rolle. Mit diesem Wert wird BDC angewiesen, um welche Art von Filter es sich handelt. Möglich sind Benutzer- oder Systemfilter. Im Folgenden finden Sie das Metadaten-XML für die GetCustomers-Methode.

        <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>

Eine Liste der von BDC unterstützten Filter finden Sie unter Vom Business Data Connectivity-Dienst unterstützte Filtertypen.

Weitere Schritte

Planungsschritt 5: Bestimmen der Eingabe-, Ausgabe- und Rückgabeparameter für jede Methode