Partager via


Flux de travail, actions (activités), événements et formulaires dans le modèle de complément SharePoint

Résumé

L’approche que vous utilisez pour implémenter des flux de travail et leurs composants associés est différente dans le nouveau modèle de complément SharePoint de celui du code de confiance totale. Dans un scénario ftC (Full Trust Code) /Solution de batterie de serveurs classique, les flux de travail et leurs composants associés ont été générés avec du code côté serveur et déployés via des solutions SharePoint. Les flux de travail et les composants associés s’exécutaient sur le serveur SharePoint.

Dans un scénario de modèle de complément SharePoint, les flux de travail et les composants associés sont développés avec du code qui s’exécute sur des serveurs distants. Les workflows et leurs composants associés sont inscrits auprès du service de flux de travail, mais tout le code s’exécute sur des serveurs distants.

Conseils importants

En règle générale, nous aimerions fournir les instructions générales suivantes pour la création de flux de travail et de leurs composants associés dans le nouveau modèle de complément SharePoint.

  • Les flux de travail code-behind ne sont pas disponibles dans Office 365 locations, ni avec le modèle de complément SharePoint en général.
  • Tout le code-behind associé aux workflows et à leurs composants associés doit être placé dans un service web externe s’exécutant sur un serveur distant.

Options pour créer des flux de travail personnalisés et leurs composants associés

Vous avez plusieurs options pour créer des workflows personnalisés et leurs composants associés.

  • Créer des flux de travail personnalisés
  • Créer des activités de flux de travail personnalisées
  • Créer des événements de flux de travail personnalisés
  • Créer des formulaires de flux de travail personnalisés

Créer des flux de travail personnalisés

Dans cette option, des flux de travail personnalisés sont créés, déployés et associés à host-web dans SharePoint.

  • Des flux de travail personnalisés peuvent être créés avec Visual Studio ou SharePoint Designer.
  • Les flux de travail personnalisés peuvent être déployés et associés à Host-web dans SharePoint de plusieurs façons.
    • Les flux de travail créés dans Visual Studio sont automatiquement empaquetés à l’intérieur des fonctionnalités pour le déploiement.
    • Les flux de travail créés dans SharePoint Designer doivent être exportés et importés pour les déployer d’un serveur de développement vers un serveur de production.
    • Les flux de travail peuvent également être déployés et associés à Host-web dans SharePoint via le modèle d’approvisionnement à distance. Pour plus d’informations sur le modèle d’approvisionnement à distance, consultez approvisionnement de site (recette de complément SharePoint).

L’exemple de code suivant montre comment utiliser CSOM pour provisionner un flux de travail et les listes qui prennent en charge le flux de travail.

	public void ProvisionIncidentWorkflowAndRelatedLists(string incidentWorkflowFile, string suiteLevelWebAppUrl, string dispatcherName)
    {
		//Return the list the workflow will be associated with
        var incidentsList = CSOMUtil.GetListByTitle(clientContext, "Incidents");

		//Create a new WorkflowProvisionService class instance which uses the 
		//Microsoft.SharePoint.Client.WorkflowServices.WorkflowServicesManager to
		//provision and configure workflows
        var service = new WorkflowProvisionService(clientContext);

		//Read the workflow .XAML file
        var incidentWF = System.IO.File.ReadAllText(incidentWorkflowFile);

		//Create the WorkflowDefinition and use the 
		//Microsoft.SharePoint.Client.WorkflowServices.WorkflowServicesManager
		//to save and publish it.  
		//This method is shown below for reference.
        var incidentWFDefinitionId = service.SaveDefinitionAndPublish("Incident",
            WorkflowUtil.TranslateWorkflow(incidentWF));

		//Create the workflow tasks list
        var taskListId = service.CreateTaskList("Incident Workflow Tasks");

		//Create the workflow history list
        var historyListId = service.CreateHistoryList("Incident Workflow History");

		//Use the Microsoft.SharePoint.Client.WorkflowServices.WorkflowSubscriptionService to 
		//subscibe the workflow to the list the workflow is associated with, register the
		//events it is associated with, and register the tasks and history list. 
		//This method is shown below for reference.
        service.Subscribe("Incident Workflow", incidentWFDefinitionId, incidentsList.Id,
            WorkflowSubscritpionEventType.ItemAdded, taskListId, historyListId);
    }
	
	public Guid SaveDefinitionAndPublish(string name, string translatedWorkflows)
    {
        var definition = new WorkflowDefinition(ClientContext)
        {
            DisplayName = name,
            Xaml = translatedWorkflows
        };

        var deploymentService = workflowServicesManager.GetWorkflowDeploymentService();
        var result = deploymentService.SaveDefinition(definition);
        ClientContext.ExecuteQuery();

        deploymentService.PublishDefinition(result.Value);
        ClientContext.ExecuteQuery();

        return result.Value;
    }

	public Guid Subscribe(string name, Guid definitionId, Guid targetListId, WorkflowSubscritpionEventType eventTypes, Guid taskListId, Guid historyListId)
    {
        var eventTypesList = new List<string>();
        foreach (WorkflowSubscritpionEventType type in Enum.GetValues(typeof(WorkflowSubscritpionEventType)))
        {
            if ((type & eventTypes) > 0)
                eventTypesList.Add(type.ToString());
        }

        var subscription = new WorkflowSubscription(ClientContext)
        {
            Name = name,
            Enabled = true,
            DefinitionId = definitionId,
            EventSourceId = targetListId,
            EventTypes = eventTypesList.ToArray()
        };

        subscription.SetProperty("TaskListId", taskListId.ToString());
        subscription.SetProperty("HistoryListId", historyListId.ToString());

        var subscriptionService = workflowServicesManager.GetWorkflowSubscriptionService();
        var result = subscriptionService.PublishSubscriptionForList(subscription, targetListId);

        ClientContext.ExecuteQuery();
        return result.Value;
    }

Quand est-elle adaptée ?

Lorsque vous devez créer des flux de travail personnalisés avec du code derrière eux, cette option est adaptée.

Prise en main

Les articles suivants montrent comment créer des workflows personnalisés.

Créer des activités de flux de travail personnalisées

Dans cette option, des activités de flux de travail personnalisées sont créées et déployées sur SharePoint.

  • Des activités de flux de travail personnalisées peuvent être créées avec Visual Studio.
  • Les activités de flux de travail personnalisées ne peuvent pas être créées avec SharePoint Designer.
  • Les activités de flux de travail personnalisées peuvent être utilisées dans SharePoint Designer après leur déploiement dans un environnement SharePoint.

Quand est-elle adaptée ?

Lorsque vous devez implémenter des flux de travail dans des processus métier dont les exigences ne sont pas satisfaites par la bibliothèque prête à l’emploi d’actions de flux de travail dans SharePoint Designer

Prise en main

L’article suivant montre comment créer une activité de workflow personnalisée avec Visual Studio.

Workflow.Activities (exemple PnP O365) inclut plusieurs activités de flux de travail personnalisées créées avec Visual Studio. Il montre également comment utiliser les activités de flux de travail personnalisées dans un flux de travail.

Créer des événements de flux de travail personnalisés

Dans cette option, des événements de flux de travail personnalisés sont créés et déployés sur SharePoint.

  • Des événements de flux de travail personnalisés peuvent être créés avec Visual Studio.
  • Les événements de flux de travail personnalisés ne peuvent pas être créés avec SharePoint Designer.
  • Les événements de flux de travail personnalisés peuvent être utilisés dans SharePoint Designer après leur déploiement dans un environnement SharePoint.

Quand est-elle adaptée ?

Lorsque vous devez implémenter des flux de travail dans des processus métier dont les exigences exigent que les flux de travail attendent un événement personnalisé avant de continuer.

Prise en main

Workflow.CustomEvents (exemple PnP O365) montre comment créer un workflow qui attend qu’un personnalisé se déclenche avant de continuer. Il montre également comment utiliser le modèle JSOM (Client Side Object Model) JavaScript pour le Gestionnaire des services de workflow afin de déclencher un événement personnalisé.

Créer des formulaires de flux de travail personnalisés

Dans cette option, des formulaires de flux de travail personnalisés sont créés et déployés sur SharePoint.

  • Des formulaires de flux de travail personnalisés peuvent être créés avec Visual Studio.
  • Les formulaires de flux de travail personnalisés ne peuvent pas être créés avec SharePoint Designer.
  • Les formulaires de flux de travail personnalisés peuvent être utilisés dans SharePoint Designer après leur déploiement dans un environnement SharePoint.

Quand est-elle adaptée ?

Lorsque vous devez implémenter des flux de travail dans des processus métier dont les exigences nécessitent des formulaires personnalisés.

Prise en main

L’article suivant montre comment créer des formulaires d’association et d’initiation de flux de travail personnalisés et les utiliser dans un flux de travail.

Workflow.CustomTasks (exemple PnP O365) montre comment créer des formulaires de tâche et d’initiation personnalisés et les utiliser dans un flux de travail.

Options de mise à jour des données SharePoint à partir d’un flux de travail personnalisé

Vous disposez de deux options pour mettre à jour les données SharePoint à partir d’un flux de travail personnalisé.

  • Utilisez le jeton de contexte et l’URL du site web de complément pour vous authentifier auprès de SharePoint.
  • Utilisez l’URL du site web de complément et le proxy web SharePoint pour vous authentifier auprès de SharePoint.

Utiliser le jeton de contexte et l’URL du site web de complément pour s’authentifier auprès de SharePoint

Dans cette option, vous transmettez le jeton de contexte et l’URL du site web de complément du flux de travail au service que le workflow appelle via des en-têtes HTTP. Le service utilise le jeton de contexte et l’URL du site web de complément pour s’authentifier auprès de SharePoint et retourner un jeton d’accès avant de mettre à jour les données SharePoint.

  • Cette approche nécessite le passage du jeton de contenu du flux de travail au service web.

Quand est-elle adaptée ?

Lorsque vous souhaitez que la communication avec SharePoint se produise au niveau du client.

Prise en main

L’exemple suivant montre comment utiliser le jeton de contexte et l’URL du site web de complément pour s’authentifier auprès de SharePoint et mettre à jour les données SharePoint.

Pour plus d’informations sur le passage du jeton de contexte et de l’URL du site web de complément à partir du flux de travail à partir du flux de travail vers le service, consultez la section Service d’API Web d’appel dans le lisez-moi Workflow.CallCustomService (exemple PnP O365).

Les autres sections du fichier README Workflow.CallCustomService (exemple PnP O365) fournissent des informations détaillées sur l’ensemble du flux de travail et du service distant, et vous guident également dans la configuration de tous les composants dans Microsoft Azure.

Utiliser l’URL du site web de complément et le proxy web SharePoint pour s’authentifier auprès de SharePoint

Dans cette option, lorsque le flux de travail démarre, vous passez l’URL du site web de complément du flux de travail au service que le workflow appelle. Le service transmet l’URL du site web de complément au proxy web SharePoint. Le proxy web SharePoint utilise l’URL du site web de complément pour s’authentifier auprès de SharePoint et retourner un jeton d’accès. Ensuite, le proxy web SharePoint ajoute le jeton d’accès aux en-têtes HTTP avant d’effectuer l’appel à la mise à jour des données SharePoint.

  • Cette approche ne nécessite pas de passer le jeton de contenu du flux de travail au service web.

Quand est-elle adaptée ?

Lorsque vous souhaitez que la communication avec SharePoint se produise au niveau du serveur.

Prise en main

L’exemple suivant montre comment utiliser l’URL du site web de complément et le proxy web SharePoint pour s’authentifier auprès de SharePoint et mettre à jour les données SharePoint.

Pour plus d’informations sur l’appel du proxy web SharePoint, consultez la section Appeler le service API web via un proxy web dans le FICHIER LISEZ-moi Workflow.CallServiceUpdateSPViaProxy (exemple PnP O365 ).

Les autres sections du fichier LISEZ-moi Workflow.CallServiceUpdateSPViaProxy (exemple PnP O365) fournissent des informations détaillées sur l’ensemble du flux de travail et du service distant et vous guident tout au long de la configuration de tous les composants dans Microsoft Azure.

Consultez l’article Interroger un service distant à l’aide du proxy web dans SharePoint 2013 (MSDN) pour plus d’informations sur le proxy web SharePoint.

Exemples PnP

S’applique à

  • Office 365 multi-locataire (MT).
  • Office 365 dédiés (D)
  • SharePoint 2013 en local