Présentation de Forms Services

Cet article a pour but de présenter Forms Services, un des nouveaux composants de MOSS 2007 via un exemple concret. Toutes les étapes liées à la création d'un formulaire Forms Services seront décrites (création, publication, déploiement, utilisation)

Article lu   fois.

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction

MOSS 2007 est un produit qui est décidément fort intéressant tant il offre des possibilités. Le but de ce tutoriel est d'approcher de manière plus appronfondie l'une d'entre-elles, j'ai nommé Forms Services.

Nous explorerons une partie des capacités de Forms Services via un exemple concret. En effet, je vais développer au travers de ce tutoriel un formulaire de demande de congé. Ce formulaire communiquera en réception et en soumission de données avec Sharepoint. Le formulaire incluera une possibilité d'approbation/rejet de la demande et celle-ci se basera sur le profil utilisateur stocké dans Sharepoint. Une procédure en code-behind sera donc associée au formulaire afin d'identifier l'utilisateur courant et d'afficher/masquer la section d'approbation en conséquence.

Grâce à ce formulaire pas trop complexe, nous aurons une vision assez complète du potentiel de Forms Services et d'Infopath.

Afin d'avoir une idée plus précise du résultat obtenu, voici deux captures d'écran montrant le formulaire de demande de congé.

L'image ci-dessous représente un formulaire de demande de congé en mode normal, c'est à dire sans avoir la possibilité d'approuver. La capacité d'approbation sera réservée au manager de l'employé.

Image non disponible
Vue normale

L'image ci-dessous représente le même formulaire affichant les contrôles permettant d'approuver ou de rejeter la demande.

Image non disponible
Vue pour le manager

II. Forms Services, c'est quoi et à quoi ça sert?

Forms Services est un nouveau moteur disponible dans MOSS 2007 qui permet d'héberger des formulaires Infopath sur le serveur MOSS et de les convertir en page Web afin que les clients n'aient pas besoin de disposer d'Infopath sur leur machine pour pouvoir exploiter les formulaires.

Les formulaires Infopath sont des documents électroniques permettant de stocker de l'information dans les documents eux-mêmes et dans des métadonnées de liste Sharepoint. Ils bénéficient de divers contrôles de saisie qui peuvent se révéler très utiles dans un contexte web. Il est également possible d'associer du code behind C# ou VB.Net aux dits contrôles. L'interface bénéficie par ailleurs de techniques permettant d'afficher/masquer des contrôles aisément via l'affichage conditionnel, d'effectuer des validations sur les données, d'associer des "règles" effectuant certaines actions lorsqu'un évènement se produit.

Tous ces éléments vont permettre au développeur d'implémenter des solutions robustes de manière efficace et rapide. En outre, le développeur pourra associer ses propres modules de code pour effectuer des actions orientées métier en s'appuyant sur la désormais très riche plate-forme dotnet.

Enfin, il est également possible d'utiliser des formulaires Infopath dans des workflows Sharepoint. Ceci permettra de générer une IHM de qualité à moindre coût.

III. Différences entre formulaires Infopath et ceux destinés à Forms Services

Il paraît difficile de dresser une liste exhaustive des différences entre les formulaires Infopath classiques et ceux destinés à être exécutés par Forms Services. Cependant, lorsque l'on spécifie à Infopath que l'on souhaite développer un formulaire destiné à Forms Services, il va automatiquement retirer les contrôles qui ne sont pas compatibles avec ce dernier. Une procédure de vérification automatique est également enclenchée par Infopath pour s'assurer que votre formulaire est bel et bien compatible avec Forms Services.

III-A. Les contrôles

Le tableau ci-dessous reprend la liste des contrôles d'Infopath ainsi que leur compatibilité avec Forms Services

Contrôle Description Compatible
Textbox Permet de saisir du texte Oui
Rich Text Box Permet de saisir du texte mis en forme Oui
Drop down List Box Expose une liste de données Oui
Date Picker Expose un calendrier permettant à l'utilisateur de spécifier une date Oui
Check Box Case à cocher Oui
Option Button Bouton d'option Oui
Section Permet de contenir un ensemble de sous-contrôles Oui
Optional Section Permet d'afficher une section de contrôles optionnelle. L'utilisateur peut l'enlever du formulaire Oui
Repeating Section Permet de créer une section de contrôles pouvant se répéter. Oui
Repeating Table Permet de créer une section de lignes de données comme par exemple des lignes de commandes. L'utilisateur pourra alors cliquer sur "New Row" ou "Delete Row" Oui
File Attachement Permet à l'utilisateur d'associer une ou plusieurs pièces jointes au formulaire Oui
Hyperlink Permet de créer des hyper-liens. Oui
Expression Box Permet d'afficher le résultat d'une expression Oui
Picture   Non
Ink Picture   Non
Vertical Label   Non
Scrolling Region   Non
Horizontal Region   Non
Choice Group   Non
Repeating Choice Group   Non
Choice Section   Non
Repeating Recursive Section   Non
Horizontal Repeating Table   Non
Master/Detail   Non
Bulleted List   Non
Numbered List   Non
Plain List   Non
Multiple Section List Box   Non

Comme vous pouvez le constater, pas mal de contrôles ne sont pas disponibles pour des formulaires Forms Services. Néanmoins, la série de contrôles compatibles couvre déjà largement les besoins élémentaires en terme d'IHM de saisie.

III-B. La publication

La manière de publier les formulaires diffère en fonction du composant qui les exécutera. Nous aborderons cela dans la section VI.

III-C. Le code

Le code que vous utiliserez dans vos formulaires ne pourra pas être le même si c'est du Infopath ou du Forms Services. Par exemple, Forms Services exclut toute une série d'espaces de noms que vous ne pourrez donc pas utiliser. Il faut se rendre compte que ce sont en effet deux mondes différents. Lorsqu'un formulaire Infopath est exécuté par le Smart Client, c'est à dire par Infopath lui-même, cela se déroule dans un environnement Windows. Lorsque c'est Forms Services, le contexte d'exécution est un environnement Web. Le Web étant lui-même basé sur un serveur web et des protocoles plus contraignants et ayant pour seuls clients des navigateurs (IE, Firefox etc..), il est donc tout à fait naturel d'être confronté à ces restrictions.

IV. Présentation de l'interface offerte par Infopath 2007

IV-A. Principaux composants

L'image ci-dessous représente ce que j'appelle le "Tableau de bord" d'Infopath. C'est simplement une barre d'outils qui vous permet de gérer tout ce qu'il y a à gérer dans un formulaire.

Image non disponible
Tableau de bord
Layout Permet d'utiliser des tables diverses permettant de disposer les éléments de manière organisée sur le formulaire
Controls Permet d'accéder à la liste des contrôles telle qu'exposée dans la section précédente
Datasource Permet d'accéder à tous les contrôles contenus dans le formulaire courant ainsi qu'aux diverses connections vers le monde extérieur. Ces connections peuvent se faire vers des services webs, des bases de données et des listes Sharepoint
Views Permet d'accéder aux différentes vues de notre formulaire. Un formulaire classique est généralement composé d'au moins deux vues, une vue de travail et une vue d'impression
Design Checker Permet de spécifier les aspects liées à la sécurité, compatibilité, les fonctionnalités disponibles
Publish Form Template Permet de publier le formulaire vers Sharepoint. Le mode de publication dépendra du type de formulaire à déployer

IV-B. Les sources de données ou DataSources

Les sources de données vous donnent accès aux différentes données contenues dans votre formulaire ainsi qu'aux connexions éventuelles vers des sources extérieures.

Voici l'écran que vous obtenez lorsque vous cliquez sur le lien DataSource de la barre d'outils principale

Image non disponible
Datasource

Dans l'exemple illustré par l'image, on retrouve tous les éléments de notre formulaire Demande de congé. Un formulaire Infopath étant basé sur une structure XML, chaque élément du datasource est en fait un noeud XML. En double-cliquant sur une colonne on peut accéder à ses propriétés. On peut ajouter un nouvel élément, soit directement en faisant un glisser/déplacer d'un contrôle sur le formulaire, soit en le créant directement à partir du datasource comme illustré par l'image ci-dessous

Image non disponible
Datasource

Outre le fait de pouvoir ajouter/supprimer des éléments (noeuds XML) à notre formulaire, on va également pouvoir ajouter des connexions vers le monde extérieur en cliquant sur le lien "Manage Data Connections" figurant en bas de l'écran Datasources.

Ces connexions peuvent être de deux types

  • Submit data : pour envoyer des données vers un service web, un email, une liste Sharepoint
  • Receive data : pour recevoir des données provenant d'un service web, un fichier XML, une liste Sharepoint ou une base de données

Note: Il est également possible d'utiliser des connexions partagées stockées sur un serveur Sharepoint. L'avantage de ce type de connexion est qu'elle peut être réutilisée plusieurs fois par des formulaires différents. En terme de maintenance, cela signifie que si la source des données change, nous ne devons effectuer qu'une seule mise à jour. Si on utilise des connexions normales, il faudra effectuer autant de mises à jour que l'on a de connexions.

Le but de ce tutoriel n'étant pas de faire une présentation complète des fonctionnalités d'Infopath, nous allons uniquement détailler comment effectuer une connexion vers une liste Sharepoint telle que cela a été fait pour le formulaire Demande de congé

Cliquez sur Design Tasks => Data Source => Manage Data Connections => Add. Vous obtenez l'écran suivant:

Image non disponible
Datasource

Choisissez l'option Receive et ensuite l'option Sharepoint library or list

Image non disponible
Datasource

Saisissez ensuite l'URL du site contenant la liste qui contient les données

Image non disponible
Datasource

Et ensuite la liste contenant les données

Image non disponible
Datasource

Enfin, choisissez la colonne de la liste qui contient l'information que vous souhaitez utiliser

Image non disponible
Datasource

Cliquez ensuite sur Next jusqu'à la fin. Votre connexion est à présent créée et peut-être utilisée par les composants du formulaire. Elle peut-être utilisée plusieurs fois et également dans le code behind. Nous verrons plus tard comment la lier à une liste déroulante.

Note: Je n'aborderai pas ici les autres types de connexions. Simplement, pour les services webs, si vous souhaitez vous familiariser rapidement avec leur utilisation via Infopath,

IV-C. Le Design Checker et les paramétrages liés

Le Design Checker permet de basculer vers un écran de paramétrage complet concernant la sécurité, les options à montrer à l'utilisateur du formulaire etc...mais l'une des principales options et qu'il vaut mieux activer dès la création du formulaire est celle qui consiste à indiquer à Infopath que l'on crée un formulaire pour Forms Services.

En cliquant sur Design Checker et ensuite sur Change Compatibility Settings, on obtient l'écran suivant sur lequel on peut cocher la case "Design a form template that can be opened in a browser or Infopath"

Image non disponible
Compatibility

Notez que cet écran peut également être obtenu en cliquant sur le menu Tools -> Form Options

IV-D. Les règles

Les règles constituent un mécanisme permettant d'effectuer une action lorsqu'un évènement se produit. Elles permettent d'effectuer certaines actions qui ne sont pas possibles via du code behind. Elles jouent donc un rôle crucial dans l'élaboration d'un formulaire Infopath.

Voici les différentes actions possibles pour Forms Services

Action Description
Switch Views Permet de basculer le formulaire d'une vue vers une autre.
Set a field's value Permet d'affecter une valeur à un champ du formulaire. Cette valeur peut-être le résultat d'une fonction, d'une expression ou une simple valeur texte.
Query Using A Data Connection Permet d'exécuter une requête à partir d'une connection définie. Lorsque vous définissez une connexion, le système active automatiquement l'option qui exécute la connexion dès le chargement du formulaire. On peut décider de désactiver cette option si l'on souhaite exécuter celle-ci plus tard, par exemple par le biais de cette règle
Submit Using A Data Connection Permet de soumettre le formulaire en utilisant une connexion de type "Submit"
Close the form Permet de fermer le formulaire

Pour affecter une ou plusieurs règles à un contrôle, il suffit de double-cliquer sur celui-ci et de cliquer sur le bouton Rules. Si l'on souhaite par exemple ajouter un bouton permettant de fermer le formulaire, on va ajouter ce bouton via l'onglet des contrôles, double-cliquer dessus et ensuite ajouter la règle "Close the form" au bouton.

Chaque règle peut-être exécutée de manière conditionnelle.

Note: Les règles peuvent donc soit se déclencer automatiquement soit conditionnellement. Il n'est par contre pas possible de les déclencher via le code behind (en tous cas j'ai jamais trouvé). Pour déclencher une règle via du code behind, il faut donc créer une règle se déclenchant lorsqu'un champ interne a une certaine valeur et affecter cette valeur via notre code.

IV-E. L'affichage conditionnel

Chaque contrôle (zone de saisie, bouton etc..) bénéficie de l'affichage conditionnel. On va donc pouvoir associer des conditions à nos contrôles qui permettent d'influer sur le comportement de celui-ci. Par exemple, on peut basculer un contrôle de Visible à Invisible, d'actif à inactif. On peut y associer de la mise en forme telle que couleur, gras, font etc...

On va typiquement utiliser l'affichage conditionnel pour n'activer des boutons que lorsque tous les champs requis sont bien remplis, afficher/masquer des zones en fonction de la personne connectée etc...

Note: Comme pour les règles, l'affichage conditionnel n'est pas accessible par le code behind. En outre, il n'est pas possible non plus (en forms services) de cibler directement un contrôle pour spécifier que celui-ci doit être visible/invisible, activé/désactivé etc...L'affichage conditionnel est donc incontournable.

IV-F. La validation automatique des données

Dès que vous placez un contrôle sur votre formulaire, celui-ci pointe automatiquement vers un noeud XML. Si ce contrôle correspond à une zone de saisie, celle-ci sera typée (texte, date, numérique etc...). Une validation automatique des données saisies se produit. Par exemple, dès qu'un utilisateur entrera du texte à la place d'un nombre dans une zone numérique, le système lui affichera un message d'erreur et empêchera la soumission du formulaire.

V. Création d'un formulaire de gestion de congés

V-A. Ajout de nos connexions

V-A-1. Connexion vers la liste Types de congés

Reportez vous à la section IV-B qui détaille comment cette connexion a été réalisée

V-A-2. Connexion pour la soumission de notre formulaire

Cette connexion nous permet de sauvegarder notre formulaire dans une bibliothèque de documents. Voici les étapes à suivre

Image non disponible

Création d'une nouvelle connexion en mode soumission de données

Image non disponible

On spécifie que la cible est une bibliothèque Sharepoint

Image non disponible

On fournit l'URL de la bibliothèque et on indique que le nom de fichier vient de notre champ IDDemande (dont la valeur est attribuée par le code behind dans notre cas). On dit que l'on peut écraser le fichier s'il existe déjà. Etant donné que nous ne laissons pas l'utilisateur définir le nom de fichier, on sait que quoi qu'il arrive on ne risque pas d'écraser la demande de congé de quelqu'un d'autre.

V-B. Ajout de nos champs

Notre formulaire est consistué des champs suivants:

Image non disponible
Champ Type Description
Employe Texte Contient le login de l'employé
Congés Groupe répétitif Contient les lignes de la demande. En effet une demande peut contenir plusieurs types de congés (RTT, Légaux etc..)
DateDebut Date - DatePicker Date de début de la ligne de demande
DateFin Date - DatePicker Date de fin de la ligne de demande
Type Texte - Dropdown Contient la liste des types de congés définie dans Sharepoint
Jours Numérique Contient le nombre de jours correspondants à la ligne de demande
StatutApprobation Texte Spécifie si la demande est approuvée/rejetée
TotalJours Double Nombre de jours total pour la demande
RaisonRejet RichText Raison du rejet éventuel
PeutApprouver Booléen Permet d'afficher ou non la zone d'approbation (champ Approbation) via l'affichage conditionnel
Approbation Section Zone contenant les boutons Approuver et Rejeter. Sera seulement affichée si l'utilisateur en cours est le manager de la personne ayant créé la demande
Erreur Texte Permet d'afficher une erreur à l'utilisateur. En effet, il n'est pas possible d'afficher un message box...
IDDemande Texte Contient le nom du fichier (LoginEmploye + Date du jour)

Pour ajouter un champ, il faut cliquer sur la source de données, faire add, spécifier le type et le nom du champ. Ensuite, il se retrouve dans la liste. Pour le placer sur le formulaire, il suffit alors de cliquer dessus et de choisir le type de contrôle (TextBox, Dropdown etc...).

Je ne détaillerai donc que la création du champ Type correspondant au type de congés (RTT, Légaux..). Afin de ne pas avoir une valeur figée, cette liste provient d'une liste Sharepoint (voir première connexion de notre formulaire). Pour créer ce champ, il fallait donc l'ajouter comme décrit ci-dessus et ensuite le sélectionner et cliquez sur Dropdown pour avoir un contrôle de liste associé sur notre formulaire. Lorsque vous avez cela, vous procédez comme suit:

Sélectionnez votre liste et cliquez sur le bouton droit pour aller dans ses propriétés

Image non disponible

Choisissez l'option "Lookup ...external data sources" et ensuite choisissez la source préalablement définie qui pointe vers votre liste Sharepoint. Notez que vous pouvez directement créer une nouvelle connexion via le bouton Add. Vous devez ensuite spécifier la paire clé->valeur constituant votre liste en cliquant simplement sur le bouton entouré en rouge.

Image non disponible

V-C. Ajout de notre section d'approbation

L'intérêt d'utiliser le contrôle section réside notamment dans le fait que l'on va pouvoir afficher/masquer toute une série de contrôles uniquement en mettant une règle d'affichage conditionnelle sur la section entière. Pour ajouter une section, il suffit d'aller dans nos contrôles et de faire un glisser-déplacer du contrôle section dans le formulaire.

Ajoutez-y également deux boutons (Approuver/Rejeter) en faisant un glisser-déplacer du contrôle bouton vers l'intérieur de la section. Vous devez obtenir ceci

Image non disponible

Commencons par appliquer un affichage conditionnel sur la section. Pour ce faire, cliquez sur la section avec le bouton droit, allez dans Section Properties et ensuite choisissez l'onglet Display

Image non disponible

Cliquez ensuite sur Conditional Formatting puis sur Add et ajoutez-y la règle suivante

Image non disponible

Cette règle dit que si le champ PeutApprouver interne à notre formulaire a la valeur FALSE, la section sera masquée.

Il ne nous reste plus qu'à paramétrer nos boutons Approuver et Rejeter qui doivent simplement mettre la valeur du champ StatutApprobation à Approuvé ou Rejeté. Pour ce faire, rien de plus simple, il suffit d'utiliser les règles (exemple pour le bouton approuver).

Double-cliquez sur le bouton Approuver et ensuite sur le bouton Rules, puis sur Add et paramétrez cette règle

Image non disponible

Il suffit de créer une règle similaire pour le bouton Rejeter

V-D. Ajout de notre bouton de soumission

Faites un glisser-déplacer d'un contrôle bouton sur le formulaire. Double-cliquez dessus et choisissez l'action Submit dans la liste d'actions. Si vous avez préalablement créé la connexion de soumission (expliquée en section V-A-2), Infopath liera automatiquement le bouton à votre connexion.

V-E. Le code de notre formulaire

V-D-1. Accès au code, choix du langage et outils nécessaires

Pour choisir son langage, il faut aller dans le menu Tools -> Form Options -> Programming et choisir son langage. Celui par défaut est le Visual Basic.NET

Il n'est pas nécessaire de disposer de Visual Studio pour coder en Infopath. VSTO suffit.

Lorsque vous avez fait le choix du langage, pour accéder au code de votre formulaire, une des possibilités est Tools -> Programming -> Loading Event

V-D-2. Le code

 
Sélectionnez

/// <summary>
        /// Cette méthode est automatiquement appelée lors du chargement du formulaire
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
 	    public void FormEvents_Loading(object sender, LoadingEventArgs e)
        {
			//Vérifie si on est bien dans le contexte d'un navigateur 
			//n'ira donc pas dans le if si on fait un preview à partir d'Infopath
            if (Application.Environment.IsBrowser)
            {
            	//Champ interne permettant d'afficher une erreur
                ResetError();
                //Création d'un navigateur Xpath pointant sur les données de notre formulaire
                XPathNavigator MainData = MainDataSource.CreateNavigator();
				//On pointe sur IDDemande pour lui attribuer un nom car cette donnée sert de nom
				//de fichier
                if (MainData.SelectSingleNode("/my:DemandeConge/my:IDDemande", NamespaceManager).Value == "")
                {
                 //En cas de premier chargement, il faut créer le nom de la demande
                    MainData.SelectSingleNode("/my:DemandeConge/my:Employe",
                    NamespaceManager).SetValue(Application.User.LoginName);

                    MainData.SelectSingleNode("/my:DemandeConge/my:IDDemande", NamespaceManager).SetValue(
                        Application.User.LoginName + "_" + DateTime.Now.ToShortDateString());                    
                }
				//Booléen interne activant ou non l'affichage conditionnel de la section 
				//d'approbation présente dans le formulaire
                MainData.SelectSingleNode("/my:DemandeConge/my:PeutApprouver",
                        NamespaceManager).SetValue("false");

                //si l'utilisateur actuel n'est pas la personne qui a créé la demande
                if (Application.User.LoginName != MainData.SelectSingleNode("/my:DemandeConge/my:Employe", NamespaceManager).Value)
                {
                  //Si c'est le manager de la personne
                    if (IsManager(Application.User.LoginName))
                        {
                        //On affiche la section d'approbation
                            MainData.SelectSingleNode("/my:DemandeConge/my:PeutApprouver", NamespaceManager).SetValue("true");
                        }                        
                }


                
            }
        }
 /// <summary>
        /// Vérifie que le login passé en paramètre correspond au manager de la personne
        /// ayant créé la demande de congé
        /// </summary>
        /// <returns></returns>
        private bool IsManager(string Person)
        {
            try
            {
                UserProfileManager ProfileManager = new UserProfileManager(
                        ServerContext.GetContext(SPContext.Current.Site));
                UserProfile CurrentProfile = ProfileManager.GetUserProfile(
                    MainDataSource.CreateNavigator().SelectSingleNode("/my:DemandeConge/my:Employe",NamespaceManager).Value);
                if (CurrentProfile["Manager"].Value != null && CurrentProfile["Manager"].Value.ToString() == Person)
                {
                    return true;
                }
                
            }
            catch (UserNotFoundException)
            {
                ShowError("Le profil de l'employé n'a pu être trouvé parmi les profils utilisateurs");
                
            }
            catch (Exception Ex)
            {
                ShowError("Une erreur s'est produite:" + Ex.Message);
                
            }
            return false;
        }

VI. Déploiement de notre formulaire vers MOSS

Le déploiement d'un formulaire vers MOSS se fait en trois étapes.

VI-A. Publication dans Infopath

Pour publier un formulaire de type Forms Services, il faut le publier vers une ressource réseau, disque dur local sous forme de fichier. Le mode de publication peut varier en fonction du contenu du formulaire (code behind par ex). Voici comment le formulaire Demande de congé a été publié.

Il faut tout d'abord cliquer sur le lien Publish Form Template présent dans le tableau de bord. On obtient alors l'écran suivant par lequel on spécifie que l'on souhaite publier vers un serveur Sharepoint. Ceci servira à Forms Services lors du chargement du formulaire dans Sharepoint

Image non disponible

Ensuite, on saisit l'URL du serveur en question.

Image non disponible

Ensuite, étant donné que notre formulaire contient du code behind, on est obligé de le publier en tant que "Administrator Approved Form".

Image non disponible

L'étape suivante consiste à sauvegarder le template sur notre disque dur ou une ressource réseau. C'est ce fichier qu'on ira rechercher lorsque l'on souhaitera charger le formulaire dans Sharepoint

Image non disponible

Cette étape est très importante car elle permet de spécifier les colonnes de notre formulaire que l'on souhaite voir apparaître en tant que métadonnée dans le type de contenu qui sera utilisé par le formulaire. Ces colonnes pourront ensuite faire l'objet de workflows, de filtres, de vues, d'event handler etc... car elles existeront en dehors du formulaire Infopath lui-même. Cette étape porte le nom de Property Promotion

Image non disponible

Ensuite, il suffit de cliquer Next puis Finish.

VI-B. Chargement du formulaire dans MOSS via la centrale d'administration

Pour passer à cette étape, il faut impérativement publier le formulaire au préalable (voir section précédente). Lorsque vous avez publié votre formulaire, vous avez dû spécifier un emplacement sur votre disque dur ou sur le réseau. Dans notre exemple, j'ai publié mon formulaire vers c:\, le formulaire publié est donc c:\DemandeConges.xsn

Note : il est possible d'utiliser l'outil stsadm pour charger un formulaire Infopath dans Forms Services.

Ouvrez la centrale d'administration et allez dans Application Management. Dans la section Forms Services, cliquez sur le lien Upload Form Template

Image non disponible

Décochez la case intitulée "Upgrade...." et cliquez sur Upload. Ensuite, vous cliquez sur le bouton Ok. Ceci vous bascule vers la liste de tous les formulaires existants.

Note: lorsque vous chargez/modifiez/supprimez un formulaire, le pool d'application IIS lié à votre application est recyclé. Il peut donc parfois arriver que vous tombiez sur une page vous affichant "Service not available..." mais ceci ne sera que temporaire, le temps que le recyclage du pool soit terminé.

Si tout se passe bien, vous devez donc tomber sur cet écran

Image non disponible

Vérifiez bien que votre le statut soit à "Ready" ou "Prêt". Si ce n'est pas le cas et que ça traîne un peu, vous pouvez forcer la mise à jour du système via la commande stsadm -o execadmsvcjobs. Ensuite, pour mettre votre formulaire à disposition d'une collection, vous devez l'activer en cliquant sur Activate to a Site Collection

Cliquez sur la collection de votre choix (choisissez la bonne application) et ensuite cliquez sur Ok.

Voici ce que fait réellement Sharepoint lorsque vous activez un formulaire Forms Services pour une collection

  • Il crée une site collection feature (à disposition dans Site Collection Features)
  • Il ajoute votre formulaire à la liste Form Templates
  • Il crée un type de contenu dans le groupe Microsoft Office Infopath portant le nom de votre formulaire et les promoted properties (propriétés promues en métadonnées)

VI-C. Association du formulaire à une bibliothèque

Lorsque vous avez chargé votre formulaire dans Sharepoint et que vous l'avez activé pour une collection particulière, vous pouvez aller dans votre collection. Dans mon cas, cette collection est http://sey-pc:2351/sites/developpez. Vous devez y retrouver la liste Form Templates et y trouver votre formulaire à l'intérieur.

Image non disponible

Maintenant que vous l'avez, il faut pouvoir l'utiliser. Pour ce faire, vous allez l'associer à une bibliothèque de documents. Comme je vous l'ai dit précédemment, Sharepoint a créé un type de contenu associé à votre formulaire, le voici sur mon installation

Image non disponible

Je n'ai donc qu'à associer ce type de contenu à ma bibliothèque. Il faut donc faire ce qui suit:

  • Aller dans les propriétés avancées de la bibliothèque de son choix et activer la gestion de types de contenu, activer également l'option Display as web page
Image non disponible

Note: par défaut, MOSS essaye d'ouvrir le formulaire avec Infopath si celui-ci est installé sur la machine cliente. Si vous souhaitez forcer l'ouverture en page Web (préférable pour être certain que votre formulaire fonctionne correctement avec Forms Services) , vous devez activer l'option Display as web page

  • Ajouter le type de contenu DemandeConges et éventuellement supprimer le type Document pour permettre uniquement la création de demandes de congés pour cette bibliothèque
Image non disponible
  • Ceci aura pour effet direct d'ajouter les colonnes liées au type de contenu à votre bibliothèque
Image non disponible

Vous pouvez dès à présent créer une nouvelle demande de congés.

Image non disponible

VII. Téléchargement

Le formulaire est disponible en téléchargement. Par souci de faciliter, dézippez le fichier DemandeConge.zip dans le répertoire C:\Documents and Settings\Administrator\My Documents\InfoPath Projects. Celui-ci varie en fonction de votre installation. Le but est d'extraire l'archive dans Infopath Projects.

Voici le lien vers le projet

VIII. Conclusion

Nous avons vu au travers d'un exemple simple comment mettre en oeuvre une fonctionnalité via un formulaire Forms Services. Il va bien sûr de soi que cet exemple de gestion de congé ne constitue pas une solution clé en main.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.