Utilisation de types de données complexes
Dernière modification : vendredi 16 avril 2010
S’applique à : SharePoint Server 2010
Dans cet article
Vue d’ensemble des types complexes dans BCS
Mise en forme complexe dans les types de contenu externe BCS par le biais de la mise en forme de chaîne
Couche de service compatible avec SharePoint
Assemblys de connectivité .NET
Extension du système de type de liste externe par le biais de types de champs personnalisés
Personnalisation des formulaires de liste SharePoint
Personnalisation de formulaires InfoPath
Avec Microsoft Business Connectivity Services (BCS), vous pouvez afficher des types de données complexes dans des listes externes de différentes manières. Les types complexes sont des types de données qui contiennent d’autres sous-types, tels qu’une adresse composée de champs de rue, ville, département et code postal. Par défaut, bien que les types complexes soient pris en charge par le schéma de types de contenu externe, ils ne peuvent pas être affichés dans la couche de présentation dans Microsoft SharePoint 2010 et Microsoft Office 2010. Pour cette raison, vous devez effectuer des étapes supplémentaires pour activer l’affichage de ces types complexes. Cette rubrique fournit une vue d’ensemble des types complexes dans Business Connectivity Services et propose différentes solutions pour permettre leur affichage dans l’interface utilisateur.
Vue d’ensemble des types complexes dans BCS
Les données des systèmes externes sont fréquemment exposées par le biais de services Web granulaires avec des structures de messages complexes. Bien que le schéma des types de contenu externe prenne en charge les structures de données de paramètres de presque n’importe quelle complexité, les types complexes peuvent créer des incompatibilités avec les technologies de présentation dans SharePoint et Microsoft Office.
Les types de contenu externe définissent des opérations stéréotypées, dont une grande partie nécessitent une structure de paramètre techniquement complexe. Un finder spécifique (également appelé Élément en lecture dans SharePoint Designer) doit renvoyer un type complexe unique qui contient l’ensemble des champs pour un type de contenu externe, par exemple un type « Customer » avec des champs « CustomerID », « Name » et « PhoneNumber ». Les éléments enfants de cette structure sont mappés aux colonnes d’une liste externe. La plupart des types de contenu externe contiennent une méthode finder qui renvoie une collection du même type que le finder spécifique. Des problèmes surviennent lorsque l’un des champs possède des éléments enfants ou est d’un type non pris en charge par les technologies de présentation, par exemple si un champ « CustomerAddress » est ajouté à la structure de client et possède des éléments enfants définissant « Street », « City », « State et « PostalCode ».
L’un des principaux composants d’interface utilisateur pour l’affichage des données externes dans SharePoint est la liste externe. De par leur conception, les listes externes sont des représentations de données plates et basées sur des lignes. Sans travail supplémentaire de la part d’un développeur, les types complexes et les types simples qui ne sont pas pris en charge dans le système de types de listes SharePoint sont omis de l’affichage de liste.
Le schéma de type de contenu externe Business Connectivity Services prend en charge la notion de mise en forme complexe pour les scénarios de lecture seule si le type complexe peut être converti en une chaîne simple à l’aide d’une chaîne de format Microsoft .NET Framework (voir Mise en forme complexe dans les types de contenu externe BCS par le biais de la mise en forme de chaîne plus loin dans cette rubrique). Si la prise en charge de la lecture seule ne suffit pas ou si le type complexe ne peut pas être converti avec cette méthode SharePoint 2010 offre la possibilité de créer des types de champs personnalisés qui permettent de contrôler le comportement de rendu et de modification dans les listes externes et les formulaires d’éléments de listes.
Les formulaires constituent l’interface utilisateur principale pour les éléments de liste externe. Les types complexes présentent un défi pour la génération de formulaires car ils sont difficiles à concevoir automatiquement tout en conservant un niveau minimal d’attractivité visuelle. Les listes externes peuvent être associées à des formulaires de listes SharePoint (basé sur ASP.NET) ou à des formulaires Microsoft InfoPath 2010. Les sections Personnalisation des formulaires de liste SharePoint et Personnalisation de formulaires InfoPath de cette rubrique expliquent comment afficher des types complexes dans ces formulaires.
Mise en forme complexe dans les types de contenu externe BCS par le biais de la mise en forme de chaîne
Dans les scénarios dans lesquels le type complexe est en lecture seule et peut être converti en chaîne, Business Connectivity Services prend en charge la notion de chaîne de format sur le descripteur de type afin d’établir le rendu du type complexe en tant que chaîne dans un élément de formulaire ou une liste externe. Voici un exemple d’utilisation de la mise en forme de chaîne pour convertir le type complexe Customer mentionné précédemment.
<TypeDescriptor TypeName="CustomerAddress" IsCollection="false" Name="CustomerAddresses" >
<TypeDescriptors>
<TypeDescriptor TypeName=" CustomerAddress " Name="CustomerAddress" >
<Properties>
<Property Name="ComplexFormatting" Type="System.String" />
<Property Name="FormatString" Type="System.String">{0}, {1}, {2} {3}</Property>
</Properties>
<TypeDescriptors>
<TypeDescriptor TypeName="System.String" Name="Street"/>
<TypeDescriptor TypeName="System.String" Name="City" />
<TypeDescriptor TypeName="System.String" Name="StateProvince" />
<TypeDescriptor TypeName="System.String" Name="PostalCode" />
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
Couche de service compatible avec SharePoint
Du point de vue architectural, le meilleur moyen de travailler avec un type de données complexe consiste à créer une couche de service avec une structure de paramètre plate qui existe dans les limites des couches de présentation. Pour poursuivre l’exemple de la section précédente, si le service Web renvoie tous les champs qui représentent les clients au même niveau, SharePoint peut afficher et modifier des éléments de clients sans modification.
Toutefois, il convient de comparer la surcharge liée à l’écriture, à l’hébergement et à la maintenance de code personnalisé et la surcharge liée à la gestion des types complexes dans les couches de présentation pour chaque application à l’aide d’un service complexe. Dans de nombreux déploiements d’entreprise, il existe déjà une couche de service, en particulier pour les entités métiers telles que Client ou Produit qui ont une utilisation étendue dans de nombreuses applications. Le coût de l’ajout de ces méthodes pour une utilisation avec SharePoint 2010 peut être inférieur au coût de gestion de la complexité de type dans chaque application.
Assemblys de connectivité .NET
Si l’ajout ou l’extension d’une couche de service ne constitue pas une option, SharePoint 2010 offre un moyen d’empaqueter la définition de type de contenu avec une classe qui encapsule la logique métier derrière une opération de type de contenu externe. Vous pouvez définir l’interface aplatie du type de contenu externe à l’aide de Business Data Connectivity Designer dans Visual Studio 2010 et implémenter la logique de conversion de type et d’agrégation nécessaire dans les stubs de code générés par l’outil. Une fois l’implémentation terminée, vous pouvez utiliser Visual Studio pour générer un package de solution (fichier .wsp) contenant la définition de type de contenu externe et l’assembly qui peuvent être importés dans SharePoint 2010.
Notes
Pour importer ce type de package, des privilèges d’administrateur de batterie sont nécessaires car le code derrière le type de contenu externe s’exécute en mode de confiance totale. Pour plus d’informations sur la création d’assemblys de connecteurs .NET, voir l’article de Boris Scholl intituléUtilisation de SharePoint Business Data Connectivity Designer dans Visual Studio 2010 (éventuellement en anglais).
La modification du comportement des services principaux n’étant pas toujours une option envisageable, SharePoint 2010 propose également différentes manières d’étendre la couche de présentation afin de gérer les types complexes.
Extension du système de type de liste externe par le biais de types de champs personnalisés
L’infrastructure de liste SharePoint 2010 prend en charge un ensemble de types de données génériques qui suffisent à répondre aux scénarios d’entrée de données les plus courants. Pour représenter des éléments de données métiers complexes tels que des adresses, SharePoint 2010 offre un moyen de définir des types de champs personnalisés que vous pouvez rendre disponibles dans tous les sites d’une batterie SharePoint. Le fichier de définition de type de champ personnalisé est un élément essentiel du type de champ personnalisé. Il définit comment afficher un champ dans les affichages de listes et d’éléments. Il définit également les éventuelles propriétés de variables et une référence à l’assembly qui implémente le type de champ. La classe de champs hérite de SPField et représente des champs particuliers basés sur le type de champ personnalisé. La classe de champs définit les fonctionnalités d’une colonne (telles que le tri) en fonction du champ personnalisé, définit le comportement d’une cellule dans une liste et la base de données de contenu, et peut implémenter une logique de validation personnalisée.
La plupart des types de champs personnalisés complexes nécessitent également une classe de contrôle de rendu, un modèle de rendu ou une classe de valeur personnalisée. Pour plus d’informations sur les types de champs personnalisés, voir Types de champ personnalisés et Procédure pas à pas : création d'un type de champ personnalisé.
Après avoir défini le type personnalisé, vous pouvez y faire référence à l’aide de descripteurs de types dans la définition de type de contenu externe, comme illustré dans l’exemple suivant.
<TypeDescriptor TypeName="Customer.Address” Name="CustomerAddress" DefaultDisplayName="Customer Address">
<Properties>
<Property Name="SPCustomFieldType" Type="Customer.Address">Customer Address</Property>
</Properties>
</TypeDescriptor>
Avec cette définition de descripteurs de types, une liste externe basée sur le type de contenu externe peut déterminer que le descripteur de type « CustomerAddress » fait référence à un type de champ personnalisé et l’afficher de manière appropriée.
Personnalisation des formulaires de liste SharePoint
Lorsque vous créez une liste externe, SharePoint 2010 génère automatiquement des formulaires afin de permettre la création, la modification et l’affichage d’éléments de liste. Les formulaires SharePoint sont basés sur des contrôles .NET Framework et partagent leurs fonctionnalités d’extensibilité, que vous pouvez utiliser pour afficher les types complexes de manière appropriée. Les types de champs personnalisés décrits dans cette rubrique constituent le mécanisme d’extensibilité le plus souvent utilisé pour les types complexes. Pour les cas plus simples, vous pourrez peut-être étendre un champ SharePoint Foundation natif. Pour plus d’informations sur la personnalisation de formulaire de liste, voir Formulaires de liste.
Personnalisation de formulaires InfoPath
SharePoint 2010 prend également en charge l’utilisation de formulaires InfoPath pour l’affichage et la modification d’éléments de liste. InfoPath offre des fonctionnalités qui facilitent pour les non-développeurs la création de formulaires attrayants avec une validation puissante et une mise en forme conditionnelle. L’un des autres avantages offerts par les formulaires InfoPath par rapport aux formulaires de liste standard est leur capacité à fonctionner à l’intérieur du navigateur ou comme formulaires autonomes, ou à fonctionner dans des clients enrichis. Les formulaires InfoPath sont la technologie de formulaire employée pour travailler avec des données de liste externe en mode hors connexion dans Microsoft SharePoint Workspace 2010. Dans SharePoint 2010, vous ne pouvez pas commencer à créer des formulaires InfoPath pour des listes externes dans InfoPath Designer. Au lieu de cela, vous pouvez générer des formulaires InfoPath dans SharePoint Designer à partir des concepteurs de liste externe ou de type de contenu externe. Une fois les formulaires générés, vous pouvez les personnaliser dans InfoPath Designer.
Pour les types de contenu externe qui contiennent des types complexes, il est difficile de générer une disposition agréable à l’œil par défaut. Par conséquent, le générateur de formulaires génère un formulaire vierge. Toutefois, étant donné qu’InfoPath prend en charge les types complexes dans le concepteur, après avoir généré un formulaire vous pouvez l’ouvrir dans InfoPath Designer à partir du concepteur de e liste externe dans SharePoint Designer. Les types personnalisés sont disponibles dans la liste de champs (voir la Figure 1) et peuvent être disposés manuellement.
Figure 1. Liste de champs dans InfoPath Designer
Une fois les personnalisations terminées, vous devez republier le formulaire dans la liste externe à l’aide du bouton Publication rapide dans le menu Fichier.
Figure 2. Bouton Publication rapide dans InfoPath Designer