Partager via


Étape 5 de la planification : Déterminer les paramètres d’entrée, de sortie et de retour de chaque méthode

Dernière modification : lundi 19 avril 2010

S’applique à : SharePoint Server 2010

Le Service BDC (Business Data Connectivity) génère un proxy de service Web pour accéder au service Web. Vous devez donc déterminer pour chaque méthode les paramètres d’entrée, de sortie et de retour en étudiant la méthode Web appropriée dans le proxy du service Web. Chaque paramètre obtient une valeur pour l’attribut Name, qui peut prendre n’importe quel nom explicite. Les détails du paramètre sont fournis en insérant un élément enfant de type TypeDescriptor. L’élément TypeDescriptor a un attribut Name.

  • Au niveau le plus élevé (TypeDescriptor racine), l’élément TypeDescriptor peut avoir n’importe quel nom.

  • Pour les éléments TypeDescriptor enfants, les noms doivent être ceux de l’accesseur .NET Framework dans le type .NET référencé par l’élément TypeDescriptor parent. Par exemple, l’élément TypeDescriptor dont l’attribut Name est « WorkPhoneNumber » est écrit car « WorkPhoneNumber » est un champ/propriété .NET sur le type de l’élément TypeDescriptor parent, qui est SampleWebProxy.Customer.

  • L’élément TypeDescriptor enfant d’un élément TypeDescriptor dont IsCollection a la valeur « True » peut également avoir un nom quelconque.

  • Pour les éléments TypeDescriptors des paramètres d’entrée qui représentent des tableaux, il est possible de définir des métadonnées remplissant le tableau avec des valeurs d’entrée par défaut. Pour cela, définissez l’élément TypeDescriptor du paramètre d’entrée qui représente le tableau avec l’indicateur IsCollection défini à « False ». Ensuite, créez n éléments TypeDescriptors enfants avec des valeurs par défaut correspondant aux n valeurs que vous souhaitez ajouter au tableau d’entrée lors de l’exécution de la méthode.

Par ailleurs, le type de l’élément TypeDescriptor doit également correspondre au type du proxy. Si l’élément TypeDescriptor représente la clé unique de l’entité, l’attribut IdentifierName pointe vers l’élément Identifier correspondant. Le dernier attribut de l’élément TypeDescriptor est l’attribut AssociatedFilter, qui lie l’élément à l’élément FilterDescriptor défini pour l’entité. Il demande au service BDC d’insérer la valeur du filtre dans cette partie du paramètre avant d’exécuter l’appel à la méthode Web.

Voici la définition de la méthode GetCustomers dans le proxy SampleWebService. Vous pouvez dériver le paramètre d’entrée et de retour du plus haut niveau à partir d’ici :

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

Pour les paramètres de retour, nous définissons les éléments qui seront renvoyés sous la forme de champs d’instances de l’entité dans le BDC. Le premier élément TypeDescriptor enfant définit dans le proxy le type de retour qui sera renvoyé par l’instance de la méthode (méthode Web), qui est dans cet exemple un tableau de clients : SampleWebServiceProxy.Customer[]. Le deuxième élément TypeDescriptor définit chaque objet de ce tableau ; dans cet exemple, chaque objet est de type SampleWebServiceProxy.Customer. Tous les autres éléments TypeDescriptor détaillent chacun des champs d’une instance Customer.

Voici la définition de la classe Customer dans le proxy SampleWebService. Vous pouvez dériver les éléments TypeDescriptors enfants du paramètre de retour à partir d’ici :

public partial class Customer {
    
    private string customerIDField;
    
    private string nameField;
    
    private System.Nullable<long> workPhoneNumberField;
    
    private System.Nullable<long> mobilePhoneNumberField;
    
    private string industryField;
    
    private string webSiteField;
    
    private CustomerAddress[] customerAddressesField;
    
    private string parentCustomerIDField;
    
    /// <remarks/>
    public string CustomerID {
        get {
            return this.customerIDField;
        }
        set {
            this.customerIDField = value;
        }
    }
    
    /// <remarks/>
    public string Name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
    public System.Nullable<long> WorkPhoneNumber {
        get {
            return this.workPhoneNumberField;
        }
        set {
            this.workPhoneNumberField = value;
        }
    }
    
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
    public System.Nullable<long> MobilePhoneNumber {
        get {
            return this.mobilePhoneNumberField;
        }
        set {
            this.mobilePhoneNumberField = value;
        }
    }
    
    /// <remarks/>
    public string Industry {
        get {
            return this.industryField;
        }
        set {
            this.industryField = value;
        }
    }
    
    /// <remarks/>
    public string WebSite {
        get {
            return this.webSiteField;
        }
        set {
            this.webSiteField = value;
        }
    }
    
    /// <remarks/>
    public CustomerAddress[] CustomerAddresses {
        get {
            return this.customerAddressesField;
        }
        set {
            this.customerAddressesField = value;
        }
    }
    
    /// <remarks/>
    public string ParentCustomerID {
        get {
            return this.parentCustomerIDField;
        }
        set {
            this.parentCustomerIDField = value;
        }
    }
}

Voici la définition des éléments Parameter d'entrée et de retour pour la méthode GetCustomers dans les métadonnées XML.

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

Étapes suivantes

Étape de création 1 : définir le système externe