手順 2 : エンティティ、メソッド、およびフィルタの定義

ビジネス データ カタログに登録されている基幹業務 (LOB) アプリケーションは、エンティティ、エンティティに対して実行できるメソッド、およびエンド ユーザーのフィルタを可能にするためのフィルタを定義します。エンティティは、Customer や Product など、LOB アプリケーション内のビジネス オブジェクトです。メソッドはエンティティに関連する操作であり、フィルタはメソッドから返されるエンティティ インスタンスを限定するのに利用できます。

ビジネス データ カタログでは、エンティティは単一の LOB システムに属し、一意の名前を持つ必要があります。エンティティには識別子、メソッド、フィルタ、およびアクションが含まれます。

この手順では、AdventureWorks2000 データベースに Products というエンティティを定義し、製品のリストを取得するための GetProducts というメソッドを定義します。また、ID、Name、および ProductNumber フィールド上でエンド ユーザーのフィルタを可能にするために、ワイルドカードおよび比較フィルタも追加します。

前提条件

手順 1 : AdventureWorks2000 データベースに接続する

エンティティ、メソッド、およびフィルタを定義するには

  1. 手順 1. の AdventureWorks2000.XML メタデータ XML ファイルを開きます。

  2. 以下の XML を挿入して、そのファイルの <!--Insert Entity XML Here --> セクションを置き換えます。

    <Entity EstimatedInstanceCount="10000" Name="Product">
          <!-- EstimatedInstanceCount is an optional attribute-->
          <Properties>
            <Property Name="Title" Type="System.String">Name</Property>
          </Properties>
          <Identifiers>
            <Identifier Name="ProductID" TypeName="System.Int32" />
          </Identifiers>
          <Methods>
            <!-- Defines a method that brings back Product data from the 
            back-end database.-->
            <Method Name="GetProducts">
              <Properties>
                <Property Name="RdbCommandText" Type="System.String">
                  SELECT ProductID, Name, ProductNumber, ListPrice FROM Product WHERE (ProductID &gt;= @MinProductID) AND (ProductID &lt;= @MaxProductID) AND (Name LIKE @Name) AND (ProductNumber LIKE @ProductNumber)
                </Property>
                <Property Name="RdbCommandType" Type="System.Data.CommandType">Text</Property>
                <!-- For database systems, can be Text, StoredProcedure, 
                or TableDirect. -->
              </Properties>
              <FilterDescriptors>
                <!-- Define the filters supported by the back-end method 
               (or sql query) here. -->
                <FilterDescriptor Type="Comparison" Name="ID" >
                  <Properties>
                    <Property Name="Comparator" Type="System.String">Equals</Property>
                  </Properties>
                </FilterDescriptor>
                <FilterDescriptor Type="Wildcard" Name="Name">
                  <Properties>
                    <Property Name="UsedForDisambiguation" Type="System.Boolean">true</Property>
                  </Properties>
                </FilterDescriptor>
                <FilterDescriptor Type="Wildcard" Name="ProductNumber" />
              </FilterDescriptors>
              <Parameters>
                <Parameter Direction="In" Name="@MinProductID">
                  <TypeDescriptor TypeName="System.Int32" IdentifierName="ProductID" AssociatedFilter="ID" Name="MinProductID">
                    <DefaultValues>
                      <DefaultValue MethodInstanceName="ProductFinderInstance" Type="System.Int32">0</DefaultValue>
                    </DefaultValues>
                  </TypeDescriptor>
                </Parameter>
                <Parameter Direction="In" Name="@MaxProductID">
                  <TypeDescriptor TypeName="System.Int32" IdentifierName="ProductID" AssociatedFilter="ID" Name="MaxProductID">
                    <DefaultValues>
                      <DefaultValue MethodInstanceName="ProductFinderInstance" Type="System.Int32">99999999</DefaultValue>
                    </DefaultValues>
                  </TypeDescriptor>
                </Parameter>
                <Parameter Direction="In" Name="@Name">
                  <TypeDescriptor TypeName="System.String" AssociatedFilter="Name" Name="Name">
                    <DefaultValues>
                      <DefaultValue MethodInstanceName="ProductFinderInstance" Type="System.String">%</DefaultValue>
                      <DefaultValue MethodInstanceName="ProductSpecificFinderInstance" Type="System.String">%</DefaultValue>
                    </DefaultValues>
                  </TypeDescriptor>
                </Parameter>
                <Parameter Direction="In" Name="@ProductNumber">
                  <TypeDescriptor TypeName="System.String" AssociatedFilter="ProductNumber" Name="ProductNumber">
                    <DefaultValues>
                      <DefaultValue MethodInstanceName="ProductFinderInstance" Type="System.String">%</DefaultValue>
                      <DefaultValue MethodInstanceName="ProductSpecificFinderInstance" Type="System.String">%</DefaultValue>
                    </DefaultValues>
                  </TypeDescriptor>
                </Parameter>
                <Parameter Direction="Return" Name="Products">
                  <TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="ProductDataReader">
                    <TypeDescriptors>
                      <TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="ProductDataRecord">
                        <TypeDescriptors>
                          <TypeDescriptor TypeName="System.Int32" IdentifierName="ProductID" Name="ProductID">
                            <LocalizedDisplayNames>
                              <LocalizedDisplayName LCID="1033">ID</LocalizedDisplayName>
                            </LocalizedDisplayNames>
                          </TypeDescriptor>
                          <TypeDescriptor TypeName="System.String" Name="Name" >
                            <!-- Do not use the AssociatedFilter 
                            attribute in return parameters.-->
                            <LocalizedDisplayNames>
                              <LocalizedDisplayName LCID="1033">Name</LocalizedDisplayName>
                            </LocalizedDisplayNames>
                            <Properties>
                              <Property Name="DisplayByDefault" Type="System.Boolean">true</Property>
                            </Properties>
                          </TypeDescriptor>
                          <TypeDescriptor TypeName="System.String" Name="ProductNumber">
                            <LocalizedDisplayNames>
                              <LocalizedDisplayName LCID="1033">Product Number</LocalizedDisplayName>
                            </LocalizedDisplayNames>
                            <Properties>
                              <Property Name="DisplayByDefault" Type="System.Boolean">true</Property>
                            </Properties>
                          </TypeDescriptor>
                          <TypeDescriptor TypeName="System.Decimal" Name="ListPrice">
                            <LocalizedDisplayNames>
                              <LocalizedDisplayName LCID="1033">List Price</LocalizedDisplayName>
                            </LocalizedDisplayNames>
                          </TypeDescriptor>
                        </TypeDescriptors>
                      </TypeDescriptor>
                    </TypeDescriptors>
                  </TypeDescriptor>
                </Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance Name="ProductFinderInstance" Type="Finder" ReturnParameterName="Products" />
                <MethodInstance Name="ProductSpecificFinderInstance" Type="SpecificFinder" ReturnParameterName="Products" />
              </MethodInstances>
            </Method>
          </Methods>
          <!-- Enter your Action XML here -->
        </Entity>
    
  3. XML ファイルを保存します。

  4. ビジネス データ カタログにアプリケーション定義を追加します。詳細については、「[方法] アプリケーション定義をビジネス データ カタログに追加する」を参照してください。

  5. ビジネス データ リスト Web パーツ、詳細 Web パーツ、Type、Product、またはこれらを任意に組み合わせたビジネス データ列を作成して、メタデータをテストします。詳細については、「メタデータをテストする」を参照してください。

Next Steps

手順 3 (省略可能): アクションの定義

See Also

タスク

AdventureWorks SQL Server 2000 のサンプル

概念

ビジネス データ カタログ : メタデータ モデル