計画手順 5: 各メソッドの入力、出力、および戻り値パラメーターを定義する

最終更新日: 2010年4月19日

適用対象: SharePoint Server 2010

Business Data Connectivity (BDC) service は、Web サービスにアクセスするための Web サービス プロキシを生成します。したがって、メソッドごとに、Web サービス プロキシでの適切な Web メソッドを調べて、入力、出力、および戻り値パラメーターを決定します。各パラメーターは Name 属性の値を取得します。これには、わかりやすい名前を自由に設定できます。パラメーターの詳細は、TypeDescriptor 型の子要素を挿入することで提供されます。TypeDescriptor 要素には Name 属性があります。

  • 最上位レベル (ルート TypeDescriptor) では、TypeDescriptor にどのような名前でも設定できます。

  • 子 TypeDescriptor の名前は、親の TypeDescriptor で参照される .NET 型での .NET Framework アクセサーの名前を使用する必要があります。たとえば、親 TypeDescriptor の型 (SampleWebProxy.Customer) では "WorkPhoneNumber" が .NET プロパティ/フィールドなので、"WorkPhoneNumber" の Name を持つ TypeDescriptor が記述されます。

  • IsCollection が true に設定された TypeDescriptor の子 TypeDescriptor にも、任意の名前を付けることができます。

  • 配列を表す入力パラメーターの TypeDescriptors の場合は、配列を既定の入力値で埋めるメタデータを定義できます。そのためには、IsCollection フラグが false に設定された配列を表す入力パラメーターの TypeDescriptor を定義します。その後、メソッドを実行するときに入力配列に追加する n 個の値に対応して、既定値を持つ n 個の子 TypeDescriptors を作成します。

さらに、TypeDescriptor の型はプロキシでの型とも一致する必要があります。TypeDescriptor がエンティティの一意のキーを表す場合、属性 IdentifierName は対応する Identifier 要素をポイントします。TypeDescriptor 要素の最後の属性は AssociatedFilter 属性です。この属性は、 と、エンティティに定義されている FilterDescriptor 要素をリンクします。この属性は、BDC に対して、Web メソッド呼び出しを実行する前に、パラメーターのこの部分にフィルターの値を挿入するように指示します。

次に示すのは、SampleWebService プロキシでの GetCustomers メソッドの定義です。入力パラメーターおよび最上位の戻り値パラメーターはここから派生できます。

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

戻り値パラメーターの場合は、エンティティ インスタンスのフィールドとして BDC に返されるものを定義します。最初の子 TypeDescriptor は、プロキシでメソッド インスタンス (Web メソッド) によって返される戻り値の型を定義します。この例の場合は、顧客の配列 SampleWebServiceProxy.Customer[] です。2 番目の TypeDescriptor 要素は、その配列での各オブジェクトを定義します。この例では、各オブジェクトは SampleWebServiceProxy.Customer 型です。残りの各 TypeDescriptor 要素は、Customer インスタンスの各フィールドの詳細を指定します。

次に示すのは、SampleWebService プロキシでの Customer クラスの定義です。戻り値パラメーターの子 TypeDescriptors はここから派生できます。

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

次に示すのは、XML メタデータでの GetCustomers メソッドに対する入力および戻り値の Parameter 要素の定義です。

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

次の手順

作成手順 1: 外部システムを定義する