Workflows, Aktionen (Aktivitäten), Ereignisse und Formulare im SharePoint-Add-In-Modell

Zusammenfassung

Der Ansatz, den Sie verwenden, um Workflows und die zugehörigen Komponenten zu implementieren, ist im neuen SharePoint-Add-In-Modell anders als bei voll vertrauenswürdigem Code. In einem typischen FTC-Szenario (Full Trust Code) /Farm Solution wurden Workflows und die zugehörigen Komponenten mit serverseitigem Code erstellt und über SharePoint-Lösungen bereitgestellt. Die Workflows und die zugehörigen Komponenten wurden auf dem SharePoint-Server ausgeführt.

In einem SharePoint-Add-In-Modellszenario werden Workflows und die zugehörigen Komponenten mit Code entwickelt, der auf Remoteservern ausgeführt wird. Workflows und die zugehörigen Komponenten werden beim Workflowdienst registriert, aber der gesamte Code wird auf Remoteservern ausgeführt.

Allgemeine Richtlinien

Als Faustregel möchten wir die folgenden allgemeinen Richtlinien zum Erstellen von Workflows und den zugehörigen Komponenten im neuen SharePoint-Add-In-Modell bereitstellen.

  • CodeBehind-Workflows sind nicht in Office 365 Mandanten oder mit dem SharePoint-Add-In-Modell im Allgemeinen verfügbar.
  • Der gesamte CodeBehind, der Workflows und den zugehörigen Komponenten zugeordnet ist, muss in einem externen Webdienst platziert werden, der auf einem Remoteserver ausgeführt wird.

Optionen zum Erstellen benutzerdefinierter Workflows und der zugehörigen Komponenten

Sie haben einige Optionen, um benutzerdefinierte Workflows und die zugehörigen Komponenten zu erstellen.

  • Erstellen benutzerdefinierter Workflows
  • Erstellen benutzerdefinierter Workflowaktivitäten
  • Erstellen von benutzerdefinierten Workflowereignissen
  • Erstellen von benutzerdefinierten Workflowformularen

Erstellen benutzerdefinierter Workflows

In dieser Option werden benutzerdefinierte Workflows erstellt, bereitgestellt und dem Host-Web in SharePoint zugeordnet.

  • Benutzerdefinierte Workflows können mit Visual Studio oder SharePoint Designer erstellt werden.
  • Benutzerdefinierte Workflows können auf verschiedene Arten bereitgestellt und dem Host-Web in SharePoint zugeordnet werden.
    • Workflows, die in Visual Studio erstellt wurden, werden automatisch in Features für die Bereitstellung gepackt.
    • In SharePoint Designer erstellte Workflows müssen exportiert und importiert werden, um sie von einem Entwicklungsserver auf einem Produktionsserver bereitzustellen.
    • Workflows können auch bereitgestellt und dem Host-Web in SharePoint über das Remotebereitstellungsmuster zugeordnet werden. Weitere Informationen zum Remotebereitstellungsmuster finden Sie unter Websitebereitstellung (SharePoint-Add-In-Rezept).

Im folgenden Codebeispiel wird veranschaulicht, wie CsOM zum Bereitstellen eines Workflows und der Listen verwendet wird, die den Workflow unterstützen.

	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;
    }

Wann ist die Option geeignet?

Wenn Sie benutzerdefinierte Workflows mit dahinter liegendem Code erstellen müssen, eignet sich diese Option gut.

Erste Schritte

Die folgenden Artikel veranschaulichen das Erstellen benutzerdefinierter Workflows.

Erstellen benutzerdefinierter Workflowaktivitäten

In dieser Option werden benutzerdefinierte Workflowaktivitäten erstellt und in SharePoint bereitgestellt.

  • Benutzerdefinierte Workflowaktivitäten können mit Visual Studio erstellt werden.
  • Benutzerdefinierte Workflowaktivitäten können nicht mit SharePoint Designer erstellt werden.
  • Benutzerdefinierte Workflowaktivitäten können in SharePoint Designer verwendet werden, nachdem sie in einer SharePoint-Umgebung bereitgestellt wurden.

Wann ist die Option geeignet?

Wenn Sie Workflows in Geschäftsprozessen implementieren müssen, deren Anforderungen nicht von der vordefinierten Bibliothek von Workflowaktionen in SharePoint Designer

Erste Schritte

Im folgenden Artikel wird veranschaulicht, wie Sie eine benutzerdefinierte Workflowaktivität mit Visual Studio erstellen.

Workflow.Activities (O365 PnP-Beispiel) enthält mehrere benutzerdefinierte Workflowaktivitäten, die mit Visual Studio erstellt wurden. Außerdem wird veranschaulicht, wie die benutzerdefinierten Workflowaktivitäten in einem Workflow verwendet werden.

Erstellen von benutzerdefinierten Workflowereignissen

In dieser Option werden benutzerdefinierte Workflowereignisse erstellt und in SharePoint bereitgestellt.

  • Benutzerdefinierte Workflowereignisse können mit Visual Studio erstellt werden.
  • Benutzerdefinierte Workflowereignisse können nicht mit SharePoint Designer erstellt werden.
  • Benutzerdefinierte Workflowereignisse können in SharePoint Designer verwendet werden, nachdem sie in einer SharePoint-Umgebung bereitgestellt wurden.

Wann ist die Option geeignet?

Wenn Sie Workflows in Geschäftsprozessen implementieren müssen, deren Anforderungen es erfordern, dass die Workflows auf ein benutzerdefiniertes Ereignis warten müssen, bevor sie fortfahren.

Erste Schritte

Workflow.CustomEvents (O365 PnP-Beispiel) veranschaulicht, wie Sie einen Workflow erstellen, der darauf wartet, dass ein benutzerdefinierter sogar ausgelöst wird, bevor er fortgefahren wird. Außerdem wird veranschaulicht, wie das JavaScript Client Side Object Model (JSOM) für workflow Services Manager verwendet wird, um ein benutzerdefiniertes Ereignis auszulösen.

Erstellen von benutzerdefinierten Workflowformularen

In dieser Option werden benutzerdefinierte Workflowformulare erstellt und in SharePoint bereitgestellt.

  • Benutzerdefinierte Workflowformulare können mit Visual Studio erstellt werden.
  • Benutzerdefinierte Workflowformulare können nicht mit SharePoint Designer erstellt werden.
  • Benutzerdefinierte Workflowformulare können in SharePoint Designer verwendet werden, nachdem sie in einer SharePoint-Umgebung bereitgestellt wurden.

Wann ist die Option geeignet?

Wenn Sie Workflows in Geschäftsprozessen implementieren müssen, deren Anforderungen benutzerdefinierte Formulare erfordern.

Erste Schritte

Im folgenden Artikel wird veranschaulicht, wie Sie benutzerdefinierte Workflowzuordnungs- und Initiierungsformulare erstellen und in einem Workflow verwenden.

Workflow.CustomTasks (O365 PnP-Beispiel) veranschaulicht, wie benutzerdefinierte Aufgaben- und Initiierungsformulare erstellt und in einem Workflow verwendet werden.

Optionen zum Aktualisieren von SharePoint-Daten aus einem benutzerdefinierten Workflow

Sie haben mehrere Optionen zum Aktualisieren von SharePoint-Daten aus einem benutzerdefinierten Workflow.

  • Verwenden Sie das Kontexttoken und die Add-In-Web-URL, um sich bei SharePoint zu authentifizieren.
  • Verwenden Sie die Add-In-Web-URL und den SharePoint-Webproxy, um sich bei SharePoint zu authentifizieren.

Verwenden des Kontexttokens und der Add-In-Web-URL für die Authentifizierung bei SharePoint

Bei dieser Option übergeben Sie das Kontexttoken und die Add-In-Web-URL aus dem Workflow an den Dienst, den der Workflow über HTTP-Header aufruft. Der Dienst verwendet das Kontexttoken und die Add-In-Web-URL, um sich bei SharePoint zu authentifizieren und ein Zugriffstoken zurückzugeben, bevor SharePoint-Daten aktualisiert werden.

  • Dieser Ansatz erfordert die Übergabe des Inhaltstokens aus dem Workflow an den Webdienst.

Wann ist die Option geeignet?

Wenn die Kommunikation mit SharePoint auf Clientebene erfolgen soll.

Erste Schritte

Im folgenden Beispiel wird veranschaulicht, wie Sie das Kontexttoken und die Add-In-Web-URL verwenden, um sich bei SharePoint zu authentifizieren und SharePoint-Daten zu aktualisieren.

Weitere Informationen zum Übergeben des Kontexttokens und der Add-In-Web-URL vom Workflow.CallCustomService (O365 PnP-Beispiel) finden Sie im Abschnitt Aufrufen des Web-API-Diensts vom Workflow an den Dienst.

Die anderen Abschnitte in der Infodatei Workflow.CallCustomService (O365 PnP-Beispiel) enthalten detaillierte Informationen zum gesamten Workflow und Remotedienst und führen Sie außerdem durch die Einrichtung aller Komponenten in Microsoft Azure.

Verwenden der Add-In-Web-URL und des SharePoint-Webproxys für die Authentifizierung bei SharePoint

In dieser Option übergeben Sie beim Starten des Workflows die Add-In-Web-URL vom Workflow an den Dienst, den der Workflow aufruft. Der Dienst übergibt die Add-In-Web-URL an den SharePoint-Webproxy. Der SharePoint-Webproxy verwendet die Add-In-Web-URL, um sich bei SharePoint zu authentifizieren und ein Zugriffstoken zurückzugeben. Anschließend fügt der SharePoint-Webproxy das Zugriffstoken an die HTTP-Header an, bevor der Aufruf zum Aktualisieren von SharePoint-Daten ausgeführt wird.

  • Dieser Ansatz erfordert keine Übergabe des Inhaltstokens vom Workflow an den Webdienst.

Wann ist die Option geeignet?

Wenn die Kommunikation mit SharePoint auf Serverebene erfolgen soll.

Erste Schritte

Im folgenden Beispiel wird veranschaulicht, wie Sie die Add-In-Web-URL und den SharePoint-Webproxy verwenden, um sich bei SharePoint zu authentifizieren und SharePoint-Daten zu aktualisieren.

Weitere Informationen zum Aufruf des SharePoint-Webproxys finden Sie im Abschnitt Aufrufen des Web-API-Diensts über einen Webproxy in der INFODATEI workflow.CallServiceUpdateSPViaProxy (O365 PnP-Beispiel).

Die anderen Abschnitte in der Infodatei Workflow.CallServiceUpdateSPViaProxy (O365 PnP-Beispiel) enthalten detaillierte Informationen zum gesamten Workflow und Remotedienst und führen Sie außerdem durch die Einrichtung aller Komponenten in Microsoft Azure.

Weitere Informationen zum SharePoint-Webproxy finden Sie im MSDN-Artikel Abfragen eines Remotediensts mithilfe des Webproxys in SharePoint 2013 .

PnP-Beispiele

Gilt für

  • Office 365 mit mehreren Mandanten (MT)
  • Office 365 dediziert (D)
  • SharePoint 2013 lokal