Utilisation des services Web dans SharePoint flux de travail à l’aide Visual Studio 2012
Montre comment utiliser les services web dans les flux de SharePoint à l’aide Visual Studio 2012.
Fourni par : Andrew Connell, Voitanos
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. Vous trouverez le code téléchargeable dans la galerie de code MSDN, ici : Utilisation des services Web dans les flux de travail SharePoint à l’aide de Visual Studio 2012.
L’équipe de flux de travail a travaillé avec l’équipe Azure pour créer un produit appelé Gestionnaire de flux de travail. Gestionnaire de flux de travail joue le rôle d’hébergement de la dernière version du runtime Windows Workflow Foundation (version 4) et de tous les services nécessaires d’une manière hautement disponible et évolutive. Il tire parti des Microsoft Azure Service Bus pour les performances et l’évolutivité, et lorsqu’il est déployé, il s’exécute de la même manière que dans un déploiement local ou dans le cloud. SharePoint est ensuite connectée et configurée pour remettre l’exécution du flux de travail et les tâches associées à la batterie Gestionnaire de flux de travail serveurs. L’une des modifications les plus importantes dans la nouvelle architecture de flux de travail est que tous les flux de travail personnalisés dans SharePoint sont entièrement déclaratifs, y compris ceux créés à l’aide de Visual Studio 2012.
Dans les versions précédentes de SharePoint, les flux de travail développés avec Visual Studio 2012 n’étaient pas exclusivement déclaratifs. Au lieu de cela, il s’agit d’un jumelage de XAML déclaratif avec un assembly compilé. L’assembly géré contenait la logique métier du flux de travail. Cette situation peut sembler difficile pour les développeurs SharePoint qui se posent peut-être la question suivante : « Comment implémenter ma logique métier personnalisée sans assembly compilé ? ». Microsoft suggère plutôt de créer un service web personnalisé, dans l’idéal un service web WCF, OData ou RESTful qui renvoie des données au format JavaScript Object Notation (JSON), et d’utiliser certaines des nouvelles activités et objets dans cette nouvelle version.
Scénarios d’utilisation des services web dans SharePoint flux de travail
Il n’est pas difficile de concevoir des scénarios dans lequel vous utiliseriez des services web personnalisés dans un flux SharePoint de travail. Les développeurs qui a créé le flux de travail à l'aide de SharePoint 2007 ou SharePoint 2010 sont habitués à travailler avec du code personnalisé, dans la mesure où ces flux de travail ont été fondamentalement par programme. Vous deviez pas ajouter du code personnalisé à ces flux de travail, mais donc était assez courant.
Les flux de travail SharePoint étant purement déclaratifs, de nombreux cas où vous avez écrit du code personnalisé doivent maintenant être gérés avec du code écrit dans un service web externe appelé et consommé par le flux de travail.
SharePoint flux de travail peuvent consommer n’importe quel type de service web. Ceci étant dit, il est plus facile pour les flux de travail d'interagir avec les services web qui transmet les données à l'aide du Kit de développement Open Data protocol ( OData ), comme prévu dans un des formats Atom ou json. OData est la meilleure approche, car elle est entièrement prise en charge par les outils de création de flux de travail SharePoint (SharePoint Designer 2013 et Visual Studio 2012).
En outre, les services web anonyme ainsi que celles protégé avec différents types d'authentification sont pris en charge. En fait, vous disposez d'un contrôle total sur la demande et la réponse de gestion pour chaque appel de service. Par conséquent, par exemple, vous pouvez utiliser une série d'activités au sein d'un flux de travail tout d'abord s'authentifier à l'aide d'un seul service pour obtenir un jeton OAuth et incluant ce jeton dans les futures demandes aux services sécurisés à l'aide d'OAuth 2.0.
Tirer parti des services web dans des flux de travail
L’travail avec les services web SharePoint flux de travail implique deux étapes. La première consiste simplement à appeler le service web, ce que vous faites à l’aide d’une nouvelle activité HttpSend introduite avec SharePoint. HttpSend vous permet de vous appelez dans les services web plus simples ou, pour des tâches plus complexes, fournit les verbes HTTP, des en-têtes HTTP spécifiques. La figure 1 montre la plupart des propriétés qui sont disponibles sur l'activité HttpSend.
La figure 1. Fenêtre d'outils de propriétés de l'activité HttpSend

Vous devez également spécifier le type de méthode que vous souhaitez utiliser dans la demande de service. Notez que dans la Figure 1 qui, dans la demande, vous bloquez peut spécifier le type de méthode (dans ce cas, GET). Les options disponibles sont GET, PUT, POST et DELETE (bien qu'il existe d'autres personnes). C'est le principal moyen pour indiquer les services web, notamment les services RESTful, à ce qu'il faut faire la ressource définie dans l'URI de l'activité.
Par exemple, pour obtenir toutes les propriétés d'un élément spécifique, la Uri contient l'adresse unique de l'élément et la méthode doit être définie sur GET. Pour supprimer l'élément, le Uri reste la même adresse unique de l'élément, mais la méthode doit être définie sur DELETE. Cela vaut également pour mettre à jour un élément sauf la méthode doit être définie sur POST. Lors de la création d'un élément, la Uri doit pointer vers l'adresse unique de la collection où l'élément doit être créé et la méthode doit être définie sur POST. Lors de la création ou mise à jour des éléments, services exigent que les données à utiliser ce qui est transmis en tant que contenu dans la demande, indiquée à l'aide de la propriété RequestContent sur l'activité HttpSend.
La deuxième étape de l'utilisation des services web qui nous allons couvrir implique l'envoi ou la réception de données à partir d'un service web. En fonction de si vous utilisez les propriétés RequestContent ou ResponseContent sur l'activité HttpSend ) vous pouvez passer les données comme une structure complexe, ce qui sont mis en forme en tant que chaînes de JavaScript Object Notation (JSON). La bonne nouvelle est que vous n'êtes pas obligé de créer et manipuler ces chaînes json manuellement. Au lieu de cela, Microsoft vous offre un nouveau type d'objet, le DynamicValue, qui facilite la tâche.
les objets DynamicValue peuvent stocker des données hiérarchique ainsi que stocker la réponse d'un appel de service web. En outre, il est une série d'activités associées aux objets DynamicValue que vous pouvez utiliser pour compter le nombre d'éléments dans la réponse, extraire des valeurs à partir de la réponse ou créer une nouvelle structure de mise à jour ou la création d'éléments.
Création de services web pour les flux de travail SharePoint
Avec la prise en charge pour appeler des services web et le manque de prise en charge du code personnalisé au sein de flux de travail, les développeurs devrez maintenant savoir comment créer des services. De nombreuses options s’offrent à vous pour créer des services web personnalisés à utiliser dans SharePoint flux de travail. Le type de données DynamicValue et de l'activité de HttpSend sont mieux adaptées pour les services RESTful et ceux qui sont conformes au protocole OData.
OData est un protocole pour créer et consommer des données basées sur les principes de services REST. Il a été développé dans le but de normaliser l'échange de données à l'aide du protocole HTTP évolué, fiable et robust. Une fois que la spécification OData n'ait abouti, différentes organisations implémenté le protocole sur leurs propres piles de technologie. Microsoft mis en œuvre son propre version de OData et Windows Communication Foundation (WCF) Data Services 5.0de marque.
Les services RESTful implémentés par SharePoint prise en charge OData car ils ont été créés à l’aide de WCF Data Services, en particulier WCF Data Services 5.0, qui implémente la spécification OData 3.0.
Implémenter des opérations CRUD de Service OData-Q
Une utilisation courante pour les services web effectue simple créer, lire, mettre à jour, supprimer et opérations (CRUD-Q) sur des données au sein d'une base de données de requête. La création d’un service OData à utiliser avec un flux SharePoint flux de travail est assez simple à l’aide de WCF. En supposant que vous avez une base de données existante, il existe quatre étapes courtes qui nécessitent très peu de codage :
- Créer un modèle de votre base de données à l'aide de l' Entity Framework. Il n'existe aucun code requis (Visual Studio, fournit un Assistant).
- Créer un nouveau service de données WCF. Il n'existe aucun code requis (Visual Studio fournit un Assistant).
- Dans le fichier de code de service, définissez le nom du modèle d'entité (étape créée dans #1) à la source du service, puis définissez l'accessibilité et l'autorisation des entités dans le modèle. Les deux étapes requièrent aussi peu que deux lignes de code.
- Publier le service vers un emplacement accessible que Workflow Manager.
Implémenter des opérations de service OData
Une autre tâche, que vous souhaiterez accomplir à l'aide des services web s'exécute une logique métier qui ne peut-être pas ajuster le modèle CRUDQ. Par exemple, imaginons un service OData qui prend en charge des opérations CRUD-Q pour la création de nouveaux prêts de la banque. Supposons que ce service prend également en charge les consommateurs de l'appel du service et fourniture d'une note de crédit pour récupérer un taux d'intérêt actuel pour un prêt potentiel. Ce type de tâche n'est pas inclus le modèle CRUDQ, dans la mesure où elle appelle une méthode et les transmet un entier pour recevoir une réponse.
Services de données OData et WCF prennent en charge ce scénario en vous fournissant des opérations de service. Les opérations de service sont courantes et sont même utilisées dans SharePoint services, par exemple, lors de la récupération d’une liste spécifique à l’aide de http://[..]/_api/web/lists/GetByTitle('ListTitle') l’adresse. La méthode GetByTitle est un opérateur de service que l SharePoint a créé. Les développeurs de créer leurs propres opérations de service personnalisé dans les services web personnalisés créés à l'aide de WCF Data Services.
Procédure pas à pas : Créer un flux de travail avec Visual Studio 2012
La procédure suivante montre comment créer un flux de travail personnalisée qui appelle un service web de OData sur la base de données Northwind. Vous pouvez trouver la base de données Northwind hébergée à OData.org.
Le flux de travail est terminé, les utilisateurs permet d'entrer un ID client, puis démarrer le flux de travail. Lors du démarrage, le flux de travail récupère des informations client supplémentaires et met à jour l'élément de liste avec les données qu'il a récupérées.
Démarrez Visual Studio 2012 et créez un nouveau projet d'application hébergée par SharePoint.
Dans ce projet, créez une nouvelle liste personnalisée et nommez-la « Clients ».
Dans cette nouvelle liste, créez les champs suivants. Laissez le type de données par défaut pour chaque champ en tant que string:
-
- CustomerId (renommé à partir du champ « Title » par défaut)
- Nom du client
- Fonction
- Address
- Pays/Région
- Téléphone (bureau)
- Numéro de télécopie
Maintenant, ajoutez un flux de travail au projet en cliquant sur dans L'Explorateur de solutions sur Ajouter > Nouvel élément; puis, 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.
Nommez le flux de travail « CompleteCustomerDetails », puis cliquez sur suivant.
Lorsque vous y êtes invité par l' Assistant de personnalisation, nommez le flux de travail « Obtenir des détails complets client » et déclarer qu'elle doit être un flux de travail de liste. Cliquez sur suivant.
Dans la page suivante de l'Assistant, cochez la case pour créer une association, sélectionnez la liste des clients, puis cliquez sur Créer pour les listes de tâches et de l'historique des flux de travail. Cliquez sur suivant.
Dans la page finale de l'Assistant, cochez la case pour démarrer le flux de travail manuellement. Laissez l'option Démarrer automatiquement Nations unies -vérifiée. Cliquez sur Terminer.
À ce stade, Visual Studio affiche l'aire du Concepteur de flux de travail qui contient une activité unique Sequence.
Modifiez le nom de l'activité de séquence pour la racine.
Ajoutez quatre activités Sequence plus à l'intérieur de l'activité racine et leur attribuer un nom comme suit :
- Init
- Obtenir des données client à partir du Service
- Réponse du processus de Service
- Mettre à jour l'élément de la liste
À ce stade, le flux de travail s'affiche comme indiqué dans la Figure 2.
La figure 2. Flux de travail client complète détails avec quatre Sequences vides

Obtenez l'ID de client entré par l'utilisateur
La première chose que le flux de travail doit effectuer est récupérer l'ID client, comme entré par l'utilisateur. Pour ce faire, vous devez créer deux variables.
Cliquez sur l'onglet Variables situé au bas du Concepteur de flux de travail et créez deux variables
- CustomerItemProperties (type de données = DynamicValue; étendue = Init). Utilisez cette variable pour stocker le jeu de résultats renvoyé par l'activité qui obtient toutes les propriétés de l'élément de liste.
Notes
[!REMARQUE] Le type de données DynamicValue n'est pas affiché par défaut. Pour le rechercher, sélectionnez l'option Parcourir pour les Types dans la colonne Type de Variable. Dans la zone de recherche en haut de la boîte de dialogue, entrez DynamicValue, puis sélectionnez le Microsoft.Activities.DynamicValue.
- CustomerId (type de données = String; étendue = Root): utilisez cette variable pour stocker l'ID de client entrée par l'utilisateur.
Recherchez l'activité LookupSpListItem dans la section SP - liste de la boîte à outils et faites-le glisser vers la séquence Init. Définissez les propriétés de l'activité comme indiqué dans la Figure 3.
La figure 3. Fenêtre d'outils de propriétés de l'activité LookupSPListItem

Cette activité indique à Workflow Manager à utiliser l'API REST de SharePoint pour récupérer les propriétés de l'élément de liste actuel et à stocker la réponse JSON dans la variable DynamicValue que vous venez de créer.
Récupérer l'ID de client à partir de l'élément de liste en cliquant sur le lien Obtenir les propriétés de l'activité LookupSpListItem. Cette opération ajoute une activité GetDynamicValueProperties à l'aire de conception.
Dans la boîte de dialogue Propriétés, cliquez sur les ellipses ( ???) pour ouvrir le sélecteur de propriétés, illustré à la Figure 4. Dans l’Assistant, définissez le type d’entité sur Élément de liste des clients, puis ajoutez une propriété unique, CustomerId, dont le chemin d’accès est customerid et assigner à définie sur CustomerId (la variable précédemment créée), comme illustré dans la figure suivante.
Cliquez sur Créer une propriété, tapez CustomerId dans la colonne chemin d'accès.
Dans la colonne Assigner à, entrez CustomerId, qui est la variable que nous avons créée précédemment. La figure 4 illustre la boîte de dialogue Propriétés terminée.
La figure 4. Boîte de dialogue Propriétés de l'activité GetDynamicValueProperties.

Appeler le service web Northwind OData
Le flux de travail a maintenant une référence à l'ID client, afin que l'étape suivante consiste à appeler le service web. Pour ce faire, nous allons travailler principalement avec la séquence d'Obtenir les données à partir du Service clientèle.
Sélectionnez la séquence d'Obtenir les données à partir du Service clientèle et créer deux nouvelles variables :
- NorthwindServiceUri (type de données = String; étendue = Obtenir des données de client à partir du Service ). Cette variable stocke l'URI qui est utilisée pour interroger le service web.
- NorthwindServiceResponse (type de données = DynamicValue; étendue = Root): cette variable stockera la réponse du service web.
Pour créer l'URL permettant d'interroger le service web, commencez par rechercher une activité attribuer dans la boîte à outils de flux de travail et faites-le glisser vers la séquence d'Obtenir les données à partir du Service clientèle. Notez que l'activité assigner comprend deux parties représentant une paire nom-valeur.
La partie gauche de l'activité d'affecter la valeur NorthwindServiceUri.
Définir la partie droite de l'activité à la chaîne
"http://services.odata.org/Northwind/Northwind.svc/Customers('" + CustomerId + "')?$format=json". La figure 5 illustre l'activité terminée.La figure 5. Affecter une activité utilisée pour définir une Variable qui contient le Service OData

Faites glisser une activité HttpSend à partir de la boîte à outils à la séquence d'Obtenir les données à partir du Service clientèle, immédiatement après l'activité assigner.
Définissez les propriétés sur l'activité de HttpSend en utilisant les valeurs indiquées dans la Figure 6.
Figure 6. Propriétés HttpSend

Traiter la réponse du service web Northwind OData
Une fois la demande de service web a été effectuée et les résultats sont stockés dans une variable locale, l'étape suivante consiste à traiter la réponse. Chaque valeur de la réponse doit être ajouté à une autre variable.
Créer une variable pour chacun des champs que nous avons créée au début de cette procédure pas à pas (sauf le champ code client), illustré ici :
- Nom du client
- Fonction
- Address
- Pays/Région
- Téléphone (bureau)
- Numéro de télécopie
Nom de chacun de ces variables en fonction de son nom de champ respectif.
Toutes les variables doivent être de type String; toutes les variables doivent être étendus à Root.
Ajouter une activité GetDynamicValueProperties à la séquence de Processus de demande de Service.
Dans la fenêtre Propriétés, définissez la valeur de la Source à NorthwindServiceResponse, comme illustré à la Figure 7.
Cliquez sur le bouton de ??? sur la propriété Properties, puis fournissez des valeurs dans les colonnes Chemin d’accès et Affecter à, comme illustré dans la figure 7. Notez que les valeurs de la colonne Affecter à sont la variable que vous avez créée pour chacun des champs de liste Clients.
La figure 7. Fenêtre outil Propriétés GetDynamicValueProperties et le contenu de la boîte de dialogue Propriétés

Mettre à jour l'élément de liste du client
La dernière étape consiste à mettre à jour l'élément de liste.
Ajouter une activité UpdateListItem à la séquence d'Élément de liste de mise à jour et utiliser la fenêtre Propriétés pour définir les valeurs suivantes :
- ListId: (liste actuelle)
- ItemId: (élément en cours)
Cliquez sur le bouton de point de suite ( ???) sur la propriété ListItemPropertiesDynamicValues et, dans la boîte de dialogue qui en résulte, définissez le type d’entité sur Élément de liste des clients.
Enfin, pour chacune des valeurs extraites du service web, définissez les valeurs sur l'élément de liste pour les variables dans le flux de travail, comme le montre la Figure 8.
La figure 8. Boîte de dialogue ListItemPropertiesDynamicValue avec ensemble de valeurs

Test du flux de travail
Le flux de travail est maintenant terminée et devrait fonctionner correctement. Pour confirmer sa stabilité, vous devez le tester.
Appuyez sur F5 pour démarrer le débogage ; Visual Studio génère et déploie l'application hébergée par SharePoint.
Lorsque le navigateur s'ouvre, accédez à la liste des clients, créer un enregistrement de client unique avec un Id client « ALFKI », comme illustré à la Figure 9, puis enregistrez l'élément.
Figure 9. Nouvel élément de liste

Ensuite, démarrer manuellement le flux de travail et puis revenez à l'élément de liste. Continuez d'actualiser la page pour afficher le flux de travail mettre à jour l'élément de liste, comme le montre la Figure 10
Figure 10. Élément de liste mis à jour

Notez que l'élément de liste a été mis à jour l'application SharePoint hébergée au nom de la personne qui a démarré le flux de travail. Dans cette procédure pas à pas, toutefois, elle a été lancée par l'administrateur.
Conclusion
SharePoint introduit une nouvelle architecture de flux de travail facilitée par un nouveau produit : Gestionnaire de flux de travail 1.0. Pour vous assurer que tous les flux de travail personnalisés fonctionnaient indépendamment du choix de déploiement SharePoint, local ou hébergé dans Office 365, tous les flux de travail sont désormais déclaratifs à 100 %. Par conséquent, une logique métier personnalisée précédemment implémentée en tant que code personnalisé dans le flux de travail Visual Studio créés dans les versions précédentes de SharePoint ne sont plus pris en charge.
Microsoft a introduit la prise en charge pour appeler des services web dans Workflow Manager à l'aide de la nouvelle activité HttpSend. Workflow Manager introduit également la prise en charge pour la création de structures à envoyer aux services web, ainsi que la consommation de leurs réponses appelés le type de données DynamicValue. Lorsque vous créez des flux de travail, utilisez ce type de données et les actions associées pour faciliter la création et l’exploitation de processus d’entreprise robustes dans SharePoint flux de travail à l’aide de services web externes.