21 novembre 2010

InfoPath 2010 : Déploiement par commande Powershell

Aujourd'hui, un article destiné à énumérer les applets de commandes PowerShell utilisables pour déployer un formulaire InfoPath dans SharePoint 2010.

Les commandes "stsadm" vont être poussées vers la sortie par POWERSHELL qui est l'outil de script du futur. Autant se familiariser rapidement en mettant de côté les commandes stsadm.

Voici la liste des applets de commandes relatifs à InfoPath et aux connexion de données:

Partie formulaire InfoPath :

Install-SPInfoPathFormTemplate : Téléchargement du formulaire InfoPath dans l'administration centrale dans form services.
Test-SPInfoPathFormTemplate : Testant si le formulaire InfoPath est valide pour être compatible navigateur.
Uninstall-SPInfoPathFormTemplate : Suppression du formulaire InfoPath renseigné en paramètre.
Enable-SPInfoPathFormTemplate : Permet d'activer un formulaire InfoPath sur une collection de sites.
Disable-SPInfoPathFormTemplate : Permet de désactiver un formulaire InfoPath d'une collection de sites.
Update-SPInfoPathFormTemplate : Mettre à jour tous les formulaires InfoPath de la ferme SharePoint.
Get-SPInfoPathFormTemplate : Obtention du formulaire InfoPath ainsi que ces paramètres.
Set-SPInfoPathFormsService : Affectation du paramètrage d'InfoPath Form Services.
Set-SPInfoPathFormTemplate : Affectation du paramètrage des proprités d'un formulaire passé en paramètre.

 
Partie connexions de données :

Install-SPDataConnectionFile : Installation de la connexion de données précisée en paramètre.
Uninstall-SPDataConnectionFile : Commande supprimant la connexion de données passée en paramètre.
Get-SPDataConnectionFile : Enumération des connexions de données présentes.
Get-SPDataConnectionFileDependent : Enumération des formulaires utilisant la connexion de données précisée en paramètre.
Set-SPDataConnectionFile : Affectation des propriétés du fichier de connexion de données.

 
Après la théorie, voici un exemple des applets de base pour un formulaire InfoPath:


// Installation du formulaire dans l'administration centrale en précisant en paramètre la localidation du formulaire
Install-SPInfoPathFormTemplate -Path "C:\MonFormulaire.xsn"

// Activation du formulaire sur une collection de sites
Enable-SPInfoPathFormTemplate -Identity "MonFormulaire.xsn" -Site "http://MonServeurSP2010/MaCollectionSites"

// Désactivation du formulaire d'une collection de sites
Disable-SPInfoPathFormTemplate -Identity "MonFormulaire.xsn" -Site "http://MonServeurSP2010/MaCollectionSites 

// Suppression du formulaire
Uninstall-SPInfoPathFormTemplate -Identity "MonFormulaire.xsn"


Bon powershell.

15 novembre 2010

SHAREPOINT 2010 : Comparaison fonctionnalités

Un outil fort sympathique est disponible sur le site du MSDN. Il permet de comparer les fonctionnalités offertes par SharePoint 2010 selon la version utilisée (SharePoint Foundation, SharePoint Services Standard, SharePoint Services Entreprise) : Comparateur de version

Cet outil est fort utile car nous sommes souvent amenés à nous questionner sur le niveau de licence obligatoire pour pouvoir utiliser une certaine fonctionnalité.
De plus le système de classement permet de trier selon la catégorie de feature souhaitée (Site, Communauté, Recherche, Composants,...).
Un bon outil graphique à garder sous les yeux.

13 novembre 2010

INFOPATH 2010 : Utiliser TFS

Il y a quelques temps, j'avais rédigé un post basé sur ma surprise concernant la suppression du template Visual Studio Office (VSTO) au nivrau des modèles de formulaires InfoPath.
Le template Visual Studio qui existait auparavant était très fonctionnel pour les raisons suivantes:
  • Modifications unitaires de fichiers du XSN (qui n'est autre qu'un fichier archive comprenant divers éléments : fichier manifest, vues, fichiers connexions de données), 
  • Archivage de la solution dans TFS (Team Foundation Server) simple et éfficace notamment grâce à l'intégration dans VS,
  • Intégration complète du formulaire dans Visual Studio (code et design du formulaire situés au même endroit).
Malheureusement dans la version 2010, le template InfoPath pour Visual Studio a été supprimé (sauvagement)... Il est à présent obligatoire de passer par VSTA si l'on souhaite utiliser du code managé.

Cela va s'en dire que cela change considérablement la méthode de travail qui était beaucoup plus permissive auparavant.
En cherchant quelques sources sur le web, je suis tombé sur le post suivant:

Ce tutoriel, très bien réalisé, indique les démarches à mettre en oeuvre afin de pouvoir utiliser un contrôleur de code de source sur un template InfoPath et par la même occasion de travailler sur chaque fichiers du formulaire InfoPath.
Ce qui peut-être très utiles pour certaines sociétés de développement...

8 novembre 2010

INFOPATH : ADOQueryConnection

Lors de l'utilisation d'InfoPath Form Services, vous pouvez être amené à vouloir soumettre des données dans une base SQL SERVER.
Malheureusement cela n'est pas possible nativement.
Pour cela, il est possible d'utiliser 2 méthodes pour l'insertion en BD:
  • Via un workflow SharePoint (utilisation de Worflow Foundation par exemple),
  • Dans le formulaire Form Services à l'aide de code personnalisé (C# ou VB.Net).
Si vous souhaitez réaliser ceci dans le code du formulaire, il est possible de se servir d'un fichier de connexion de données (UDCX).
Malheureusement les paramètres de la connexion de données ne sont pas tous supportés par une connexion SQL classique.
Par exemple le paramètre "Provider" précisé dans le fichier UDCX n'est pas toléré lors de la création du SQLConnection.
Il faut donc décomposer la chaine de connexion du fichier UDCX pour se récréer une chaine de connexion valide:

AdoQueryConnection ConnexionsSQL = (AdoQueryConnection)DataConnections["NomDataConnexionBD"];
string strConnexionString = GetConnectionString(ConnexionsSQL);
using (SqlConnection connexion = new SqlConnection(strConnexionString)
{
     ...
}

La fonction "GetConnectionString" est définie de la façon suivante:

private string GetConnectionString(AdoQueryConnection queryConnection)
{
    try
    {
            var password = GetConnectionStringParameter(queryConnection, "Password");
            var user = GetConnectionStringParameter(queryConnection, "User ID");
            var server = GetConnectionStringParameter(queryConnection, "Data Source");
            var db = GetConnectionStringParameter(queryConnection, "Initial Catalog");             
            return string.Format("Server={0};Database={1};User ID={2};Password={3};Trusted_Connection=True;", server, db, user, password);
    }
    catch (Exception ex)
    {
            throw new Exception("Erreur lors de la récupération de la chaine de connexion", ex);
    }
}

7 novembre 2010

INFOPATH : Connexion compte SQL

Lors de l'utilisation d'une connexion de données à une base de données SQL, vous devez utiliser un des modes d'authentification suivant:
  • Authentification intégrée (compte de domaine),
  • Un compte SQL SERVER en précisant un login sql et un mot de passe (tel le compte 'sa').
Si vous choisissez la deuxième option dans un formulaire InfoPath Form Services, vous obtiendrez le message d'erreur suivant lors de l'utilisation du formulaire:
"System.Net.WebException: Les paramètres de configuration actuels n'autorisent pas l'incorporation du nom d'utilisateur et du mot de passe dans la chaîne de connexion de base de données."

Il s'agit d'un problème de sécurité qui peut se contourner en allant modifier les paramètres de la configuration d'InfoPath Form Services (disponible via l'administration centrale de SharePoint).

Une fois positionné dans le panneau de la configuration, il faudra sélectionner "Autoriser l'authentification SQLincorporée" et cocher "Oui".
Ainsi votre formulaire fonctionnera à merveille avec une connexion à une base de données via un compte SQL SERVER.