Passer au contenu principal
Logo du centre de compétences SharePoint de la HEIG-VD

CCSP Blog

Lancer la recherche
Centre de Compétences SharePoint
CCSP Blog
  

Autres blogs
Il n'y a aucun élément dans la liste.
Centre de Compétences SharePoint > CCSP Blog
Le blog du centre de compétences SharePoint
Microsoft SharePoint: en local ou online? Le point de vue du Centre de Compétences SharePoint

Récemment, nous avons mené une étude sur l’offre online de Microsoft et analysé les différences majeurs entre une version hébergée sur ses propres machine et la version Online.

Cette étude, en anglais, est disponible ICI.

Nous nous sommes mis à la place de trois rôles principaux autour de SharePoint et avons pointé, dans chaque cas, les points essentiels.

  • L’utilisateur final
  • Le service IT
  • Le développeur

La conclusion de cette étude est traduite ci-dessous:

Conclusion

Dans certaines situation, la solution “SharePoint Online” est incontournable et dans d’autres il n’y a pas d’alternative à une solution “locale”.

Cependant, la majorité des scénarii se situe entre ces deux extrêmes et demandent une analyse plus approfondie. Nous sommes persuadés qu’au bout du compte ces études détaillées aboutiront souvent sur la question ultime: “Suis-je prêt à stocker mes mes données inestimables dans le nuage?”

Répondez “oui” à cette question et la solution online est pour vous. Si la réponse est non, la version locale est la voie.

Les aspects techniques sont principalement liés à la possibilité de modifier et d’étendre les fonctionnalités de base. Nous avons montré qu’il y a des moyens de le faire dans les deux mondes.

Dans notre encore courte expérience, nous sommes convaincus que “SharePoint Online” est une réponse valable à un grand nombre de situations. Le cas d’étude ISMAT l’a montré  dans une petite entreprise; les discussions autour de situations de plus grande envergure ont montré que la solution online vaut, pour le moins, la peine d’être envisagée.

Outil de visualisation des logs SharePoint (wss & moss)

Déjà eu à rechercher quelque chose dans les fichiers de logs de SharePoint?

Eh bien il existe un outils, WSS / MOSS Log File Reader, disponible sur CodePlex,qui permet de faciliter la vie.

Voici comment l’installer et l’utiliser.

  1. Téléchargement de l’outil
  2. Il faut maintenant installer et déployer la solution:
    1. Taper la commande suivante dans une fenêtre de commande sur le serveur Web Front End visé
      stsadm -o addsolution -filename \Temp\StarznetLogViewer.wsp
      En cas de succès, on obtient:
      Operation completed successfully.
    2. Pour le déploiement:
      stsadm -o deploysolution -name StarznetLogViewer.wsp -force -local -allowgacdeployment
      En cas de succès, on obtient:
      Operation completed successfully.

Et voilà… Dès ce moment, on dispose d’un menu supplémentaire dans la partie “Logging and Reporting” de la partie “Operations” de l’administration centrale.

image

On a alors accès à la liste des fichiers de logs

viewpage.jpg

qui permet ensuite de sélectionner et naviguer dans les résultats.

listpage.jpg

Un léger bémol: on ne peut pas ouvrir le fichier de log en cours…

European Best Practices SharePoint Conference

Londres, nous y sommes J

Eh oui, le Centres de Compétences est à Londres !

Environ 480 participants venus de l'Europe entière, un joli succès pour Microsoft. Que font tous ces gens ici ? Qu'y fait le Centre de Compétences ? Le titre parle de lui-même : « Best Pratices SharePoint ».

Les participants sont concernés par SharePoint. Le marketing de Microsoft porte ses fruits. Les entreprises ont choisi SharePoint pour résoudre (une partie de) leurs problèmes.

SharePoint ? Un produit, comment dire… Déroutant ? Puissant ? Une usine à gaz de plus ? Qui fait tout ?.

Un peu de tout ça, sans aucun doute. L'outil adresse de nombreuses facettes stratégiques touchant l'information : gestion de document, publication de contenus, indexation et recherches. Mais touche également des aspects liés au Business et aux processus qui le gouvernent. Business Intelligence, collaboration, processus métiers, workflow… La mise en place de cette infrastructure implique ne se fait pas avec un claquement de doigt !

Microsoft nous a habitués à des outils faciles à mettre en place : procédure d'installation quasiment automatique, aide, exemples tout prêts… Conclusions ? Installe SharePoint et tu n'as plus de soucis…

Et bien non, ce n'est pas aussi simple. Et ces conférences sont là pour nous le rappeler ! Et le nombre important de participants démontre, si besoin était, que tout n'est pas aussi simple.

Lors du « keynote » d'introduction, Joel Oleson a insisté là-dessus : il faut un plan… Il faut des objectifs… Sinon, gare aux désillusions !

Une lapalissade ? Pas vraiment… Les demandes qui parviennent au Centre de Compétences SharePoint sont souvent du genre : « il nous faut un site SharePoint avec des workflows pour automatiser nos tâches… On peut le faire avec SharePoint, hein ? »

Oui, on peut le faire… Avec SharePoint ou autre chose, là n'est souvent pas le point le plus important. Mais au-delà de la réalisation de ce besoin concret (qu'il reste d'ailleurs à préciser), quelle est la vision ? Quelles sont les objectifs ? Où veut-on aller avec ce nouveau site ?

Nous avons déjà fait quelques expériences… Microsoft et les « experts » du domaine aussi. SharePoint est une boîte à outil gigantesque. Si on ne connait pas bien les outils qu'elle contient ? Bah, facile, on utilise les webparts qu'on connait et on développe soi-même ce qui manque… C'est facile (en tout cas ça paraît facile !) et les développeurs sont friands de cette approche.

Mais c'est souvent contre-productif : une meilleure maitrise des outils, une meilleure connaissance des « best practices » permet d'aller plus rapidement sur le bon chemin… Et que les développeurs se rassurent : il y aura toujours des endroits où ils pourront se faire plaisir ; mais pas à réinventer la roue !

Application pool, W3wp.exe processID

Vous êtes-vous déjà demandé « Laquelle des mes application SharePoint met le processeur à genou et consomme toute la mémoire ? » ?

Ce billet montre comment répondre à cette question.

Lorsque l'on crée une nouvelle « web application» depuis l'outil d'administration de SharePoint, il faut associer cette application à un « application pool », ou en créer un nouveau. La figure suivante montre la liste de « application pools » disponibles sur un de nos serveurs SharePoint.

Cette liste se retrouve dans l'outil d'administration d'IIS :

Jusque là, tout va bien.

Ces « application pools » sont en fait hébergées dans des processus windows w3wp.exe que l'on voir dans le gestionnaire de tâches (task manager) :

Comment répondre à des questions du genre :

  • quel processus est associé au pool « Production 1 » ?
  • quel pool est hébergé par le processus 5408 ?

L'outil iisapp.vbs répond à ces questions J :

Et voilà… De là, il est facile de mettre le doigt sur l'application SharePoint responsable de la situation et de prendre les mesures adéquates !

Conception d'un workflow pour la création automatique d'une tâche avec Visual Studio 2008
Le but de ce tutorial est de créer un template de workflow qui effectue les actions suivantes:
- Une instance de workflow démarre selon les paramètres définis lors du déploiement (manuellement, lorsqu'un nouvel élément arrive dans la liste, etc.).
- L'instance crée et affecte une tâche à un utilisateur.
- L'instance de workflow se termine lorsqu'un utilisateur a réalisé la tâche à 100%.
 
Configuration requise
- Microsoft Visual Studio 2008 (sur la même machine que MOSS 2007)
- MOSS 2007
- Windows 2003 Server (pour exécuter MOSS 2007)
 
Dans notre cas, une machine virtuelle contenant ces trois logiciels est utilisée pour travailler depuis une machine Desktop Windows XP.
 
Début
  • Créer un nouveau projet de type Sharepoint Sequential Workflow.

Création nouveau projetj sequential workflow

  • Ouvrir Workflow1.cs en mode design. Un événement nommé onWorkflowActivated est créé par défaut.
  • Ajouter une activité createTask, suivie d'une boucle whileActivity, puis d'une activité completeTask. Dans la whileActivity, ajouter un événement onTaskChanged. Le résultat devrait ressembler à la copie d'écran ci-dessous.

Schéma workflow

Le premier élément onWorkflowActivated est indispensable. Il est appelé lorsqu'une nouvelle instance de workflow est créée et permet par exemple de récupérer des paramètres d'initiation. L'activité createTask permet, comme son nom l'indique, de créer une nouvelle tâche associée au workflow. Ensuite, une boucle whileActivity est exécutée tant que la tâche précédemment créée n'a pas été accomplie par l'utilisateur auquel elle a été affectée. Finalement, l'activité completeTask permet de modifier le statut de la tâche à "completed".

On constate qu'il y a un avertissement sur chaque activité du schéma. Il va donc falloir paramétrer certaines parties afin que ce template de workflow soit exploitable.

Définir la propriété "CorrelationToken"

Tout d'abord, il faut définir le paramètre CorrelationToken pour les activités createTask, onTaskChanged et completeTask. Ce paramètres est important car il permet de définir à quelle instance de workflow est attachée une tâche. Dans notre exemple, il permet de lancer l'événement onTaskChanged lorsque la tâche définie par l'activité createTask a été modifiée.

Task token

  • Cliquer sur l'activité createTask. Dans la fenêtre des propriétés, saisir le nom "taskToken" pour la propriété CorrelationToken.
  • Définir la sous-propriété OwnerActivityName à "Workflow1", représentant le nom du template de workflow qui a créé cette tâche.
  • Effectuer les tâches 1 et 2 pour les activités onTaskChanged et completeTask.

Définir l'identifiant (Guid) de la tâche

Un autre élément important concerne la génération d'une identifiant unique (Guid) pour la tâche qui va être créée. Cet identifiant doit être généré automatiquement par le système.

  • Afficher le code source de Workflow1.cs.
  • Ajouter un attribut à la classe Workflow1 en tapant la ligne ci-dessous:
    • public Guid taskid = default(System.Guid);
  • En mode design, faire un double clique sur l'activité createTask. Le handler MethodInvoking pointe automatiquement sur la méthode nommée createTask_methodInvoking.
  • Dans la méthode createTask_methodInvoking, il faut ajouter une ligne pour générer automatiquement un Guid inexistant dans le système:
    • this.taskid = Guid.NewGuid();
  • Basculer en mode design et afficher les propriétés de l'activité createTask. Cliquer dans la case à droit du libellé de la propriété TaskId. Dans la boîte de dialogue qui s'ouvre, sélectionner l'attribut taskId créé à l'étape no. 2.

Task Guid

  • Répéter l'étape précédente pour l'événement onTaskChanged et completeTask.

Définir la propriété TaskProperties

TaskProperties sert à définir les propriétés (titre, description, utilisateur, etc.) de la tâche créée avec l'activité createTask. Il faut créer un objet dans la classe Workflow1 de type Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties. Les propriétés de cet objet seront initialisées lors de l'activité createTask, juste avant que la tâche soit réellement créée.

  • En mode design, sélectionner l'activité createTask, puis ouvrir l'assistant proposé pour la propriété TaskProperties.
  • Dans l'onglet "Bind to a new member", sélectionner le bouton radio Create Property et nommer la nouvelle propriété taskProperties.

Task Properties

  • Basculer en mode d'affichage du code source. Visual Studio a automatiquement déclaré un nouvel attribut:
    • public static DependencyProperty taskPropertiesProperty = DependencyProperty.Register("taskProperties", typeof(Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties), typeof(TestWorkflow3.Workflow1));
    •         [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
              [BrowsableAttribute(true)]
              [CategoryAttribute("Misc")]
              public SPWorkflowTaskProperties taskProperties
              {
                  get
                  {
                      return ((Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties)(base.GetValue(TestWorkflow3.Workflow1.taskPropertiesProperty)));
                  }
                  set
                  {
                      base.SetValue(TestWorkflow3.Workflow1.taskPropertiesProperty, value);
                  }
              }
  • L'attribut taskProperties a été défini mais pas initialisé. On peut effectuer cette opération dans le handler MethodInvoking de l'activité createTask, au même endroit que la génération du Guid de la tâche. Cette méthode s'exécute juste avant que la tâche soit réellement créée. Elle constitue donc l'endroit idéal pour initialiser des données. Ajouter les lignes suivantes:
    •             this.taskProperties = new SPWorkflowTaskProperties();
                  this.taskProperties.Title = "Un titre de tâche";
                  this.taskProperties.Description = "La nouvelle tâche que j'ai créée";
                  this.taskProperties.AssignedTo = "SERVEUR-CLG\\cleglaun";

Définir le suivi de la tâche

Notre tâche est maintenant créée et assignée à un utilisateur. Le but est de détecter le moment où un utilisateur accomplit la tâche, puis de récupérer les données associées. Dans cet exemple, on ne vérifie pas que la tâche soit accomplie par l'utilisateur auquel elle a été assignée.

Il est important de noter que le workflow se met en attente lorsqu'il atteint l'événement onTaskChanged. Dans notre exemple, on aimerait que le workflow reste à l'état "In Progress" tant que le pourcentage complété de la tâche n'est pas égal à 100%.

L'événement onTaskChanged a l'avantage de posséder une propriété fournissant les informations de la tâche saisies par l'utilisateur. On va donc utiliser cette propriété, nommée AfterProperties, pour enregistrer la valeur du champs qui nous intéresse, nommé PercentComplete. Elle est également de type Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties.

  • Créer un attribut de classe Workflow1 pour enregistrer l'état d'avancement de la tâche. Cette variable sera utilisée dans la condition de la boucle while (WhileActivity) englobant l'événement onTaskChanged. Ajouter la ligne suivante dans la classe Workflow1.
    • public float percentComplete = 0.0F;
  • En mode design, cliquer sur l'événement onTaskChanged, puis ouvrir l'assistant pour la propriété AfterProperties. Dans l'onglet "Bind to a new member", créer un nouvel attribut nommé taskAfterModifProperties.

Task After Properties

  • Toujours en mode design, double-cliquer sur l'événement onTaskChanged. Une méthode pour le handler Invoked est créée. Cette méthode se nomme onTaskChanged_Invoked.
  • On veut stocker l'état de la tâche (renseigné par l'utilisateur) dans l'attribut percentComplete. Ajouter la ligne suivante dans la méthode onTaskChanged_Invoked créée à l'étape précédente.
    • this.percentComplete = this.taskAfterModifProperties.PercentComplete;

Il ne reste plus qu'à configurer la boucle while afin qu'elle s'exécute uniquement lorsque le pourcentage complété de la tâche est inférieur à 100%. Il est possible de définir une condition d'exécution pour une whileActivity.

  • En mode design, cliquer sur whileActivity afin d'afficher les propriétés.
  • Pour la propriété "Condition", sélectionner "Code Condition" dans la liste. Il faut ensuite saisir un nom de méthode pour le handler Condition.
  • Appuyer sur "enter" dans la zone de texte Condition afin d'afficher la méthode permettant de gérer la condition. Elle doit ressembler au code ci-dessous:
    •         private void whileActivity_Condition(object sender, ConditionalEventArgs e)
              {
              }
  • On doit retourner true ou false par la propriété Result de l'objet ConditionalEventArgs fournie en paramètre. Ajouter le code suivant pour retourner true (la boucle s'exécute) si la valeur de l'attribut percentComplete n'est pas égal à 100%.
    • e.Result = (this.percentComplete < 1.0F);

Tester le workflow

Si Visual Studio est exécuté sur une machine possédant MOSS 2007, on peut utiliser les fonctionnalités de débuggage. Il suffit de cliquer sur "Start debugging" (la flèche verte). Une fenêtre Internet Explorer affiche automatiquement une vue contenant la liste pour tester le workflow. Il faut avoir préalablement défini les paramètres de débuggage. Pour y parvenir, faire un click droite sur la racine du projet et cliquer sur le menu "Sharepoint Debug Settings..."

Après avoir testé le workflow, il est possible d'appuyer sur le bouton Stop dans VS. A ce moment, le workflow est automatiquement désinstallé et la fenêtre Internet Explorer fermée.

Déployer le workflow

Un autre article de ce blog traitera plus en détail les aspects liés au déploiement d'une feature.

Références
CorrelationToken - "Notice that the CorrelationToken and TaskId properties are set to the variables used in the createTask1 activity. This binds this activity to the same task created by the createTask1 activity, and ensures that the workflow is receiving the change event for the correct task." - http://msdn.microsoft.com/en-us/library/ms580283.aspx
 
L'extranet du RCSO-TIC

Voici, en quelques mots, la description de ce site, dédié aux échanges et à la collaboration du RCSO-TIC (Réseau de Compétences de Suisse Occidentale pour les Technologies de l'Information et de la Communication).

Formé d'un comité scientifique de 12 membres, cet organisme encourage la collaboration entre les différentes établissements et instituts des HES concernées et dirige les travaux de Recherches appliquée et Développement (Ra&D) en sélectionnant et assurant le suivi des projets de recherche financés par les fonds de la réserve stratégique de la HES-SO.

 Cliquez sur l'image pour agrandir.

Ce site est basé sur MOSS2007. Les principales fonctionnalités sont les suivantes:

  • Utilisation des type de contenu.
  • Utilisation des enquêtes.
  • Utilisation de webparts maisons
    • Un "compositeur": il permet l'affichage et les liens vers a) un document PDF à évaluer, b) une enquête permettant l'évaluation et c) les résultats de l'enquête.
    • Un Webpart SOAP: il permet d'utiliser les webservices SharePoint et passe le XML-Soap résultant à la moulinette XSL pour afficher les résultats des enquêtes. En effet, pour certains types de questions, l'affichage standard des résultats n'est pas satisfaisant.
  • Création de workflows. Par exemple, lors du chargement d'un fichier PDF à évaluer, le workflow va:
    • Créer une enquête associée à ce document sur la base d'un modèle d'enquête.
    • Ajouter une méta donnée au type de contenu du document pour le lier à l'enquête.
    • Créer des tâches (une par "évaluateur" potentiel) lui indiquant la nouvelle évaluation à faire.

Ce site est toujours en cours d'amélioration :)

Bienvenue

Bienvenue sur le blog du Centre de Compétences SharePoint!

Le CC-Sharepoint et ses partenaires mettront à profit ce blog pour mettre en avant des informations de tout poil concernant SharePoint.

Vos réactions à nos billets démontreront l'utiliité et la pertinence de ce blog. Vous pouvez en tout temps nous donner vos impressions et vos suggestion par l'intermédiaire du formulaire de contact.

 ‭(Masqué)‬ Liens d'administration