Créer des flux de travail SharePoint à l’aide de Visual Studio
Découvrez les principes fondamentaux de la création d'un flux de travail SharePoint dans la nouvelle plateforme de flux de travail SharePoint.
Fourni par : Andrew Connell, www.AndrewConnell.com
Notes
Les flux de travail SharePoint 2010 ont été retirés depuis le 1er août 2020 pour les nouveaux locataires et retirés des locataires existants le 1er novembre 2020. Si vous utilisez des flux de travail SharePoint 2010, nous vous recommandons de migrer vers Power Automate ou d'autres solutions prises en charge. Pour plus d'informations, voir la retraite du flux de travail SharePoint 2010.
[!REMARQUE] Cet article est accompagné par un exemple de code de bout en bout que vous pouvez utiliser pour suivre l'article ou sous la forme d'un starter pour vos propres projets de flux de travail SharePoint.
Microsoft utilise une approche très différente pour les flux de travail dans SharePoint par rapport aux versions précédentes. flux de travail SharePoint reposent sur Windows Workflow Foundation 4 et leur exécution est pilotée par un nouveau composant appelé Workflow Manager, qui s'exécute en externe à SharePoint.Workflow Manager remplit le rôle en tant qu'hôte pour le runtime Windows Workflow Foundation et tous les services nécessaires d'une manière hautement disponible et évolutive. Il s'appuie sur le Bus des services de performances et d'évolutivité et lorsqu'il déployé s'exécute exactement la même dans un déploiement sur site en tant que lorsque déployé sur un service en nuage, tels qu'Office 365, car elle est configurée à remettre désactive l'exécution de tous les flux de travail et les tâches liées à la batterie de serveurs Workflow Manager.La modification de l'architecture de flux de travail d'énormes nécessaire certaines modifications apportées à deux outils de création de flux de travail principal pour la création de flux de travail personnalisés - des Visual Studio et SharePoint Designer. Cet article sera Explorer à l'aide de Visual Studio 2012 en tant que votre workflow authoring tool pour créer des flux de travail personnalisés pour les utiliser dans des déploiements sp15allshort - locale ou Office 365 déploiements
Types de flux de travail dans Visual Studio 2012
Bien que SharePoint Designer 2013 peut créer uniquement composé des étapes de flux de travail, Visual Studio prend en charge un autre type de puissant du flux de travail : le flux de travail de machine d'état. En effet, puis, les environnements de développement de flux de travail Visual Studio 2012 (et Visual Studio 2013 ) prennent en charge trois types de création de flux de travail : séquentiel, organigramme et machine à états.
Séquentiel
Un flux de travail séquentiel est celui qui suit un chemin d'accès spécifique. Il peut y avoir des branches de décision, boucles et le flux de travail n'est peut-être pas un point de terminaison, mais il est facile de suivre le chemin d'accès prévisible dans le processus de conception. En fait, comment tous les flux de travail démarre lorsque vous utilisez le modèle de projet de flux de travail dans Visual Studio.
Un flux de travail séquentiel contient une seule activité de séquence et puis n'importe quel nombre d'activités qu'il contient. Certains d'entre eux peuvent être autres activités de séquence qui vous permet de regrouper une série d'étapes plus petites.
Diagramme de flux
Dans le flux de travail de diagramme de flux, l'itinéraire de l'exécution peut passer à différentes sections du flux de travail en fonction des conditions que vous spécifiez, comme le montre la Figure 1. L'activité de l'organigramme, en même temps que la FlowDescision associée et l'activité de FlowSwitch, sont généralement placées dans un acte soit une instruction traditionnel if like, ou comme instruction switch en commun les langages de programmation et de l'activité de séquence.
Au sein d'un flux de travail SharePoint Designer 2013 en fonction de la construction de phase est basée sur les principes d'un organigramme. Ces types de flux de travail, à la différence d'un flux de travail séquentiel, n'ont pas d'un chemin d'accès préconisée dans lequel ils suivent. Au lieu de cela, les opérations qui se produisent pendant le flux de travail déterminent le chemin suit le flux de travail.
La figure 1. Flux de travail organigramme dans Visual Studio 2012

Notes
Vous pouvez trouver le flux de travail illustré dans la Figure 1 comme un exemple de flux de travail sur le site MSDN ici : SharePoint : flux de travail d'approbation qui utilise un formulaire d'initiation personnalisé.
Machine d’état
Flux de travail machine à états, comme Organigramme des flux de travail, ne suivre pas généralement un chemin spécifique de l'exécution. Au lieu de cela, ils sont constitués de deux ou plusieurs États, comme le montre la Figure 2.
La figure 2. Flux de travail de machine à états dans Visual Studio 2012

Notes
Vous pouvez trouver le flux de travail illustré dans la Figure 1 comme un exemple de flux de travail sur le site MSDN ici : SharePoint : router les flux de travail pour les États en fonction des actions et des événements.
Considérez chaque état comme un flux de travail plus petit qui contient plusieurs activités de flux de travail. Vous pouvez définir les activités spécifiques au démarrage du flux de travail rejoint ou quitte un état donné. Ce qui rend réellement les ordinateurs d'état intéressante est les transitions que vous pouvez définir. Chaque état peut avoir une ou plusieurs transitions qui indiquent le moteur de flux de travail comment passer d'un état à un autre état.
Le flux de travail est toujours sur le point d'être dans un des États dans un flux de travail de machine d'état. Une transition détermine le déclencheur pour le flux de travail passer d'un état à l'autre. De nombreuses personnes favoriser les workflows de machine d'état sur les autres types de flux de travail, car elles peuvent être rendues au plus étroitement les processus d'entreprise miroir réelle. Cependant ces types de flux de travail peuvent se compliquer rapidement.
Interface de développement de flux de travail Visual Studio 2012
Lorsque vous ajoutez un nouveau flux de travail à un projet SharePoint, le modèle ajoute une activité de séquence unique qui sert de conteneur principal. Si vous souhaitez créer un flux de travail de machine organigramme ou état simplement supprimer cette activité par défaut et faites glisser un organigramme ou StateMachine activité sur l'aire de conception.
Avant de construire un flux de travail personnalisé, les développeurs doivent avoir une idée précise sur les fenêtres Outil et l'aire de conception qui fournit de Visual Studio 2012. De nombreux éléments sont relativement courantes, comme le montre la Figure 3 :
La figure 3. Visual Studio 2012 workflow authoring interface

L'interface de développement de flux de travail - en d'autres termes, le Concepteur de flux de travail - comprend les éléments clés suivants :
L'Explorateur de solutions affiche votre projet sous la forme d'une arborescence de fichiers.
Boîte à outils de flux de travail contient toutes les activités que vous pouvez utiliser pour assembler un flux de travail. Vous glisser -déposez à partir de la boîte à outils jusqu'à l'aire de conception.
Aire du concepteur du flux de travail est où vous assembler et liez les éléments de flux de travail.
Grille des propriétés affiche les propriétés d'une activité sélectionnée ou d'un élément dans L'Explorateur de solutions. Cela permet de définir ou modifier les valeurs de propriété.
Volet de sortie affiche des informations sur les éléments d'activité de workflow - variables, arguments et l'importation.
Onglets de navigation fil d'Ariane permet d'effectuer un zoom avant ou arrière sur diverses parties d'un flux de travail en cours de développement.
Le volet de sortie (n ° 5 dans la Figure 3) est important, car elle vous permet de voir toutes les variables dans votre flux de travail dans l'étendue actuelle. Définition de l'étendue fonctionne la même manière que dans la conception orientée objet programmation standard : une variable de portée à la racine est accessible à toutes les étendues inférieures (par exemple, les méthodes au sein d'une classe), mais une variable au sein d'une étendue inférieure (par exemple, une méthode dans une classe) est uniquement accessible au sein de cette étendue et de ses enfants, mais pas les étendues parallèle ou parent.
Cliquez sur l'onglet d'Arguments pour voir la liste des arguments qui sont utilisés pour passer des valeurs dans le flux de travail, telles que celles qui sont passées à partir d'un formulaire d'initiation.
Création d’un flux de travail personnalisé
Pour créer un flux de travail personnalisé à l’aide de Visual Studio 2012 ou versions ultérieures, assurez-vous que vous avez accès à un site de développeur SharePoint. Pour cette procédure pas à pas, nous vous recommandons d’utiliser l’installation SharePoint locale. C'est pourquoi testé localement un flux de travail peut écrire des informations de débogage dans l'utilitaire de console de Test Service hôte à l'aide de l'activité WriteLine. Cet utilitaire est inclus avec l' Outils de développement Office pour Visual Studio 2013, qui font partie de l'installation par défaut de Visual Studio 2012 et plus loin dans le professionnel, Premium et Édition intégrale.
Créer un projet d’application
Dans Visual Studio, créez un nouveau projet Compléments SharePoint et configurez-le pour qu'il soit un SharePoint-hosted app.
Dans ce projet, ajoutez une nouvelle instance de la liste annonces. Nous utilisons cette liste en tant que conteneur pour les éléments que nous allons à utiliser pour tester le flux de travail.
Ajoutez un élément de flux de travail pour le projet en double-cliquant sur l'icône de projet dans L'Explorateur de solutions et en sélectionnant Ajouter, puis sur Nouvel élément.
Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez l'élément de projet de flux de travail à partir de la catégorie Office/SharePoint et nommez-la « Mon premier flux de travail ». Cliquez sur suivant.
Lorsque vous y êtes invité par l' Assistant Personnalisation de SharePoint pour un nom, conservez la valeur par défaut, puis déclarer qu'elle doit être un Flux de travail de liste. Cliquez sur suivant.
On the next page of the wizard, check the box to create an association, then select the Announcements list that we just created; select for the required workflow history and task lists and then click Next.
Dans la page finale de l'Assistant, cochez la case pour démarrer le flux de travail manuellement, en laissant les deux options de démarrage automatique est désactivé ; puis cliquez sur Terminer. Visual Studio ajoute les éléments requis pour le projet automatiquement et charge le fichier Workflow.xaml dans le concepteur, comme le montre la Figure 4.
La figure 4. Aire du concepteur par défaut après l'ajout de l'élément de flux de travail

Organiser les étapes d’un flux de travail
Pour automatiser un processus métier donné, flux de travail peut contenir n'importe quel nombre d'activités que vous regroupez entre eux dans une étape ou une séquence. Toutefois, si vous regroupez trop grand nombre de ces activités en une seule séquence, le flux de travail devient surchargé et difficile à suivre et déboguer. Ceci est similaire à comment dans un langage de programmation courante, il est déconseillé de créer très longs et complexes méthodes. Au lieu de cela, vous devez regrouper les activités qui fonctionnent conjointement pour effectuer une tâche spécifique dans une séquence courante.
Cet exemple de flux de travail illustre cette pratique de segmentation votre flux de travail. Dans votre nouveau projet, sur l'aire du concepteur, à l'activité de séquence par défaut existante, ajoutez deux nouvelles activités de séquence et renommez-les « Séquence enfant 1 » et enfants séquence 2 », comme illustré dans la Figure 5. Également (mais ne pas indiqué dans la Figure 5), modifiez le nom de l'activité de la séquence d'origine pour « Racine ».
La figure 5. Ajout des séquences d'enfants à la séquence par défaut, ou racine,

Commenter votre flux de travail à l’aide d’annotations
Lorsque vous utilisez un langage de programmation courante telles que Visual C#, VB.NET ou C++, vous pouvez mettre en commentaire votre code à l'aide de spécificateurs de commentaire approprié. Commentaires de code sont important pour les tests et mettez à jour un code de base. Eh bien, Visual Studio permet également comment votre développement de flux de travail en fournissant une fonctionnalité appelée annotations.
Vous pouvez mettre en commentaire une activité de flux de travail donné en sélectionnant l'activité, les Annotations sélectionner, puis Ajoutez une Annotation. Une petite icône de chevrons inversés sur le côté droit de la barre de titre de l'activité signale qu'il dispose d'une annotation. Pointez sur ou cliquez sur l'icône pour afficher le message (illustré à la Figure 6). Vous avez la possibilité d'épingler l'annotation à l'activité afin qu'il soit toujours visible, comme le montre la Figure 6.
Figure 6. Annotation sur une activité

Obtenir des valeurs à partir des éléments de liste
Une tâche commune, vous serez confronté lors de la création de flux de travail est l'obtention des propriétés d'un élément de liste. Pour accomplir cette tâche, utilisez l'activité LookupSPListItem. Cette activité permet d’effectuer un appel de service web à l’aide de l’API REST SharePoint pour rechercher des informations sur l’élément de liste. La procédure suivante montre comment procéder :
Tout d'abord, faites glisser une activité LookupSPListItem à partir de la boîte à outils et déposez-le dans l'activité enfant séquence 1.
Après avoir ajouté l'activité dans le concepteur, vous devez définir deux propriétés : ListId et ItemId. Ces propriétés peuvent être définies pour les informations de recherche dans n'importe quelle liste, mais à utiliser les raccourcis pour la liste actuelle et l'élément actif dire Workflow Manager deviner automatiquement ces valeurs.
Étant donné que nous apportons appeler un service web, la valeur renvoyée par cette activité, répercutée dans la propriété Result, est de type DynamicValue. Par conséquent, nous devons une variable de ce type de données dans lequel stocker la sortie de la sortie de l'appel de service web. Il s'agit en fait assez facile, car en cliquant sur l'Obtenir les propriétés de lien dans l'activité LookupSPListItem tout cela automatiquement :
Tout d'abord, il crée une variable de type DynamicValue.
Ensuite, elle définit cette nouvelle variable à la source de la propriété Result sur l'activité LookupSPListItem.
Il ajoute ensuite une activité GetDynamicValueProperties pour le flux de travail afin que nous pouvons récupérer la valeur de la variable.
Enfin, il lie la variable à la propriété Source sur l'activité GetDynamicValueProperties.
Bien entendu, vous auriez pu faire tout cela manuellement, mais les outils de simplifient le processus. Si nécessaire, vous pouvez modifier les noms des variables.
Le point est bien entendu, pour obtenir des valeurs à partir de l'élément de liste qui a déclenché le flux de travail : maintenant la colonne assigné à est où les valeurs de ces propriétés sont liés à des variables précédemment créées ou utilisez le lien de remplir les Variables qui créera automatiquement les variables.
Dans la propriété Properties sur l'activité GetDynamicValueProperties, cliquez sur le bouton des points de suspension [ ??? ] pour ouvrir la boîte de dialogue Propriétés, illustrée à la Figure 7.
La figure 7. Extraire des valeurs à l'aide de la boîte de dialogue Propriétés

Modifiez ensuite le Type d'entité pour correspondre au type de l'élément ; Dans ce cas, il est l'élément de liste d'Éléments de liste d'annonces.
Sélectionnez les deux propriétés pour extraire : les champs Title et Created By.
La colonne Assigner à est permettant de lier ces propriétés aux variables que nous avons créée. Autrement, vous pouvez utiliser le lien de Remplir les Variables, qui attribue automatiquement des variables.
Remarquez que l'outil créé les variables et même équilibré correctement les types de données à la Figure 7. Notez également la façon dont le champ Créé par est un entier. Il n'est pas vraiment utile d'afficher l'utilisateur à qu'un numéro de l'auteur est-ce ? Cela sera traité plus loin dans le flux de travail.
Obtenir les propriétés de l’utilisateur
Une autre tâche courante dans le développement de flux de travail personnalisé recherche des utilisateurs. Par exemple, notre flux de travail actuellement sache qui a créé l'élément de l'annonce, mais les connait uniquement par son ID. Cet ID est l'ID de l'utilisateur qui a été ajouté à Liste d'informations utilisateur, qui est une copie mise en cache de leurs informations de profil du site. Ce qui est vraiment souhaité est leur nom ou le nom de connexion.
Pour obtenir des informations utilisateur, procédez comme suit :
Renommer notre première séquence ( enfant séquence 1 ) à « Obtenir des propriétés d'élément » et nommez la deuxième séquence à « Obtenir les propriétés auteur ».
Notes
Assurez-vous que la variable qui contient l'utilisateur sur QU'ID est étendue pour le flux de travail entière et pas seulement à la séquence que nous avons fonctionne. Modifions à présent, la portée de la variable comme indiqué dans la Figure 8.
La figure 8. Modification de l'étendue des variables

Maintenant, pour obtenir les informations utilisateur, glisser-déplacer d'une activité LookupSpUser dans le flux de travail et renommez-le « Obtenir annonce auteur ». Cette activité s'appeler l'API REST de SharePoint et passez dans un ID spécifique. Vérifiez que le service REST ressemble à l'aide du navigateur et en accédant à
http://../_api/web/SiteUsers. Prendre en compte les propriétés renvoyées, trop, comme nous aurons besoin de ces paramètres dans un instant.Notez que chaque utilisateur dispose d'une URL spécifique qui inclut leur ID pour obtenir les informations utilisateur. Notez également que l'activité est susceptible de l'appel de l'opérateur de service GetUserById et en transmettant l'ID de l'utilisateur à rechercher. Passer ceci en spécifiant la propriété PrincipalId de l'activité LookupSPUser à la variable CreatedBy, qui correspond au nombre entier de l'auteur de l'élément de l'annonce.
Tout comme l'activité LookupSPListItem, l'activité LookupSPUser renvoie une valeur de type DynamicValue, donc créer une variable de ce type à associer à notre réponse et lier ensuite cette variable aux propriétés Result de l'activité LookupSPUser, comme illustré à la Figure 9.
La figure 9. Mise à jour de la sortie de l'activité LookupSPUser

Comme nous l'avons fait précédemment, utilisez une activité GetDynamicValueProperties pour extraire les résultats de la valeur AuthorProperties. Toutefois, notez cette fois-ci que le Entity Type n'est pas une option que nous pouvons définie. Cela n'est pas un problème, car la réponse du service web réel du LookupSPUser peut être visible dans le navigateur. Pour le voir, entrez le chemin d'accès à la propriété que vous recherchez, qui, dans ce cas est
d/results/(0)/LoginName; Ensuite, entrez une autre pour obtenir le nom complet de l'auteur, comme indiqué dans la Figure 10.La figure 10. Récupération des valeurs à partir de l'activité LookupSPUser

Test du flux de travail
Enfin, nous allons tester le flux de travail. Commencez par ajouter deux activités WriteLine. Ces permettent à nous permet d'afficher le contenu de nos deux variables. Lorsque vous testez le flux de travail, l'utilitaire de console Test Service hôte écrira les deux valeurs, comme le montre la Figure 11.
La figure 11. Testez à l'aide de la Console d'hôte de Service de Test

Conclusion
Cet article expliquait en premier lieu les différents types de flux de travail pouvant être créés à l’aide de Visual Studio 2012 et versions ultérieures pour SharePoint lorsqu’il est connecté à une batterie de serveurs Workflow Manager. Ensuite il montre comment créer un flux de travail de collecte non seulement les valeurs à partir de l'élément de liste qui a déclenché le flux de travail, mais il décrit également comment effectuer une tâche commune, par exemple, obtenir le nom de connexion d'un utilisateur et afficher le nom à l'aide de l'activité LookupSPUser. En outre, l'article parlé quelques bonnes pratiques pour maintenir les flux de travail organisés et ajouter des commentaires à l'aide d'annotations.