SharePoint 2007 : BDC - Introduction aux Associations entre Entités

Ce post fait partie d'une série d'articles dédiés à la présentation du BDC (Business Data Catalog) ou Catalogue de Données Métier dans SharePoint 2007. Cette fonctionnalité, plus complexe à maitriser qu'elle n'y parait, n'est disponible qu'à partir de la version Entreprise.

Cet article n'aurait pu voir le jour sans l'aimable autorisation de Salik Malik (MVP C# et membre actif de la communauté SharePoint) qui m'a permis de le rendre disponible à la communauté francophone.

Avec les précédents articles, je vous ai présenté une vue complète des étapes nécessaires pour obtenir un fichier de définition d'application BDC (Application Definition File ou ADF) qui vous permet d'importer des données depuis la base Northwind. Je vais maintenant vous montrer comment on peut rajouter certaines fonctionnalités plus complexes à une application BDC notamment en rajoutant la notion d'association entre entités. Dans l'exemple ci-dessous, je vais rajouter une association entre l'entité "Order" et "Customer" en suivant ces étapes :

  • Reprenez l'énorme fichier XML (ADF) 
  • Ajoutez une nouvelle entité comme suit : 

<Entity EstimatedInstanceCount="20" Name="Order">

   <Identifiers>

     <Identifier Name="OrderID" TypeName="System.Int32"/>

   </Identifiers>

</Entity>

  • Sous l'entité "Customer", rajoutez cette nouvelle méthode

<Method Name="GetOrdersForCustomer">

  <Properties>

    <Property Name="RdbCommandText" Type="System.String">Select OrderID, ShipName, ShipAddress, ShipCity From Orders Where CustomerID=@CustomerID</Property>

    <Property Name="RdbCommandType" Type="System.String">Text</Property>

  </Properties>

  <Parameters>

    <Parameter Direction="In" Name="@CustomerID">

      <TypeDescriptor TypeName="System.String" IdentifierName="CustomerID" Name="CustomerID"/>

    </Parameter>

    <Parameter Direction="Return" Name="Orders">

      <TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="SalesOrderDataReader">

        <TypeDescriptors>

          <TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="SalesOrderDataRecord">

            <TypeDescriptors>

              <TypeDescriptor TypeName="System.Int32" IdentifierEntityName="Order" IdentifierName="OrderID" Name="OrderID">

                <LocalizedDisplayNames>

                  <LocalizedDisplayName LCID="1033">OrderID</LocalizedDisplayName>

                </LocalizedDisplayNames>

              </TypeDescriptor>

              <TypeDescriptor TypeName="System.String" Name="ShipName">

                <LocalizedDisplayNames>

                  <LocalizedDisplayName LCID="1033">Ship Name</LocalizedDisplayName>

                </LocalizedDisplayNames>

                <Properties>

                  <Property Name="DisplayByDefault" Type="System.Boolean">true</Property>

                </Properties>

              </TypeDescriptor>

              <TypeDescriptor TypeName="System.String" Name="ShipAddress">

                <LocalizedDisplayNames>

                  <LocalizedDisplayName LCID="1033">Ship Address</LocalizedDisplayName>

                </LocalizedDisplayNames>

                <Properties>

                  <Property Name="DisplayByDefault" Type="System.Boolean">true</Property>

                </Properties>

              </TypeDescriptor>

              <TypeDescriptor TypeName="System.String" Name="ShipCity">

                <LocalizedDisplayNames>

                  <LocalizedDisplayName LCID="1033">Ship City</LocalizedDisplayName>

                </LocalizedDisplayNames>

                <Properties>

                  <Property Name="DisplayByDefault" Type="System.Boolean">true</Property>

                </Properties>

              </TypeDescriptor>

            </TypeDescriptors>

          </TypeDescriptor>

        </TypeDescriptors>

      </TypeDescriptor>

    </Parameter>

  </Parameters>

</Method>

Comme vous pouvez le voir, j'ai rajouté une méthode "GetOrdersForCustomer", qui lance une requête SQL et sélectionne certains champs de la table "Order" pour un client spécifique (via "Customer ID"). Au final, malgré le gros pavé de texte, le concept est assez simple.

  • Ensuite, il suffit de rajouter une association 

<Associations>

  <Association AssociationMethodEntityName="Customer" AssociationMethodName="GetOrdersForCustomer" AssociationMethodReturnParameterName="Orders" Name="CustomerToOrder" IsCached="true">

    <SourceEntity Name="Customer" />

    <DestinationEntity Name="Order" />

  </Association>

</Associations>

Il ne reste plus qu'a sauvegarder et redéployer votre ADF et suivre les étapes suivantes :

  • Allez dans la section SSP 
  • Cliquez sur "Business Data Catalog" >> "View Applications" >> "Delete Previous Application" (Vous pourriez utiliser le versionning ici) 
  • Cliquez sur "Business Data Catalog" >> "Import Application Definition"
  • Importez votre fichier XML comme un "Model" et cliquez sur "Import"

Refaites la même manipulation que j'ai décrite dans le post précédent et vous devriez obtenir la list des "Customer" avec les détails sur un élément de la liste comme vous l'aviez avant.

Maintenant, si vous voulez utiliser l'association précédement définie :

  • Ajoutez une webpart "Business Data Related List".
  • Choisissez l'entité Order (NorthWindTraders) , et la relation (Relationship) appropriée (CustomerToOrder). 

  • Validez la configuration. 
  • Connectez la webpart de liste des "Customer" à la nouvelle webpart ajoutée "Order List"
  • Sortez du mode d'édition
  • Vous devriez obtenir ce résultat !

image 

<Philippe/>

Publié jeudi 26 juillet 2007 09:11 par phil
Classé sous , ,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

# re: SharePoint 2007 : BDC - Introduction aux Associations entre Entités @ jeudi 26 juillet 2007 10:48

Et BDC Meta Man?

Bwahahahhaah (private joke inside)

azra

# re: SharePoint 2007 : BDC - Introduction aux Associations entre Entités @ jeudi 26 juillet 2007 17:17

Ca fait 2 semaines... tu pourrais changer de blague :)

phil

About phil

Philippe Sentenac est Consultant SharePoint à Wygwam en région Parisienne. Il intervient essentiellement sur des missions liées à SharePoint (2007 et 2010 ) mais aussi autour du Web 2.0. Plus généralement, il s'intéresse à l'ASP.Net (MVC) , à Silverlight, et à tout ce qui est orienté Web en rapport avec les nouvelles technologies, qu'il pratique depuis 2006. Féru de développement, il est passionné par les problématiques de méthodologies et d'industrialisation du développement.

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01