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.
- Weitere Informationen finden Sie unter Entwickeln von SharePoint 2013-Workflows mit Visual Studio (MSDN-Artikel), in dem beide Optionen zusammengefasst und die Vor- und Nachteile der einzelnen Workflows erläutert 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 einer SharePoint-Workflow-App mit Visual Studio 2012 (MSDN-Artikel)
- Vorgehensweise: Erstellen von SharePoint 2013-Workflows mit Visual Studio (MSDN-Artikel)
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 .
Verwandte Links
- SharePoint 2013-Workflowobjektmodell (MSDN-Artikel)
- Häufige Fehlermeldungen in der SharePoint-Workflowentwicklung (MSDN-Artikel)
- Verwenden von Workflowinterop für SharePoint 2013 (MSDN-Artikel)
- Entwickeln von SharePoint 2013-Workflows mit Visual Studio (MSDN-Artikel)
- Websitebereitstellung (SharePoint-Add-In-Rezept)
- Erstellen einer SharePoint-Workflow-App mit Visual Studio 2012 (MSDN-Artikel)
- Vorgehensweise: Erstellen von SharePoint 2013-Workflows mit Visual Studio (MSDN-Artikel)
- Vorgehensweise: Erstellen und Bereitstellen von benutzerdefinierten Workflowaktionen (MSDN-Artikel)
- Vorgehensweise: Erstellen benutzerdefinierter SharePoint Server 2013-Workflowformulare mit Visual Studio 2012 (MSDN-Artikel)
- Abfragen eines Remotediensts mithilfe des Webproxys in SharePoint 2013 (MSDN-Artikel)
- Module (SharePoint-Add-In-Rezept)
- Websitebereitstellung (SharePoint-Add-In-Rezept)
- Leitfadenartikel unter https://aka.ms/OfficeDevPnPGuidance
- Verweise in MSDN unter https://aka.ms/OfficeDevPnPMSDN
- Videos bei https://aka.ms/OfficeDevPnPVideos
PnP-Beispiele
- Workflow.Activities (O365 PnP-Beispiel)
- Workflow.CustomEvents (O365 PnP-Beispiel)
- Workflow.CustomTasks (O365-PnP-Beispiel)
- Workflow.CallCustomService (O365 PnP-Beispiel)
- Workflow.CallServiceUpdateSPViaProxy (O365 PnP-Beispiel)
- Beispiele und Inhalte bei Microsoft 365 Patterns and Practices (PnP)
Gilt für
- Office 365 mit mehreren Mandanten (MT)
- Office 365 dediziert (D)
- SharePoint 2013 lokal