Packen von Listen-, Website- und wiederverwendbaren Workflows und Bereitstellen des Pakets
Veröffentlichung des Originalartikels: 30.08.2012
Hallo. Mein Name ist JongHwa Lim und ich bin Program Manager beim SharePoint Designer-Team (auch als SPD bekannt).
Heute möchte ich ein Feature vorstellen, das seit SharePoint Designer 2010 und SharePoint Server 2010 deutlich erweitert wurde. Dies ist das Feature zum Packen von Workflows. Ein häufiges Szenario, in dem dies in SharePoint Designer 2010 verwendet wurde, war das Entwickeln eines Workflows in einer Entwicklungsumgebung und die anschließende Bereitstellung in einer Produktionsumgebung. Leider wurde dies nur für wiederverwendbare Workflowtypen in SharePoint Designer 2010 unterstützt.
In SharePoint Designer 2013 sowie SharePoint Server 2013 und Azure Workflow Service werden jetzt alle drei Workflowtypen unterstützt – Listenworkflows, Websiteworkflows und wiederverwendbare Workflows. Das ist großartig. So müssen Sie sich nicht mehr auf den wiederverwendbaren Workflow beschränken, und dass hierfür Listenworkflows in wiederverwendbare Workflows migriert werden mussten, ist jetzt Geschichte.
Anhand eines Beispiels kann dies besser veranschaulicht werden. Ich erstelle einen Beispielworkflow und zeige, wie er in einer Zielwebsite wiederverwendet werden kann.
Beispiel: Ein Listenworkflow für Urlaubsanträge
Angenommen, Sie erstellen einen Listenworkflow in einer Entwicklungsumgebung. Der Workflow umfasst zwei Listen – Die Liste „Vacation“ und die Liste „Vacation Request“. In der Liste „Vacation“ wird die Anzahl der verbleibenden Urlaubstage für alle Mitarbeiter aufgeführt, und in „Vacation Request“ erstellt der Antragsteller ein Antragselement, um eine Urlaubgenehmigung anzufordern.
Erstellen der erforderlichen Listen (Entwicklungsumgebung)
Wie bereits erläutert, benötigen wir zwei Listen, daher habe ich, wie unten gezeigt, zwei Listen erstellt: Beachten Sie, dass die Standardeinstellungen für „Task List“ und „History List“ verwendet werden.
Erstellen des Listenworkflows für die Liste „Vacation Request“
Nach dem Erstellen der erforderlichen Listen stellen Sie mit SPD eine Serververbindung her, klicken Sie auf die Option für Listenworkflow, und wählen Sie dann die Liste „Vacation Request“ aus. Es wird das folgende Dialogfeld angezeigt. Achten Sie darauf, „SharePoint 2013 Workflow“ als Typ auszuwählen, nachdem Sie den Workflownamen eingegeben haben.
Ergänzen der Logik und Veröffentlichen des Workflows
Im SPD-Zeichenbereich können Sie einen textbasierten Designer oder – falls Visio Professional installiert ist – den visuellen Designer auswählen, um den Workflow zu erstellen. In diesem Blog verwende ich den textbasierten Designer, wenn Sie jedoch lieber mit dem visuellen Designer arbeiten möchten, finden Sie weitere Informationen in einem bald erscheinenden entsprechenden Blog-Post.
Fügen Sie die folgende Logik hinzu. Im Allgemeinen ist diese mit Ausnahme weniger Punkte leicht verständlich. Sie besteht aus fünf Phasen. Im Titel der einzelnen Phasen wird der Zweck erläutert, darüber hinaus werden sie im Folgenden ausführlich erläutert:
- Phase „Check if remaining vacation exists“: Die verbleibenden Urlaubstage für den Initiator werden abgerufen und mit den beantragten Urlaubstagen verglichen.
- Phase „Approval Process“: Es wird eine Genehmigung der angeforderten Urlaubstage angefordert.
- Phase „Approved“: Nach der Genehmigung wird die Liste „Vacation“ mit dem neu berechneten Wert aktualisiert.
- Phase „Rejected“: Senden der Ablehnungs-E-Mail.
- Phase „Insufficient Vacation“ : Senden einer E-Mail, dass nicht genug verbleibende Urlaubstage vorhanden sind.
Das Komplizierte sind die UI-Elemente für die Suche, um die verbleibenden Urlaubstage aus der Liste „Vacation“ abzurufen bzw. die Liste zu aktualisieren.
Sie können die Option zum automatischen Starten des Workflows beim Erstellen des Elements aktivieren, wenn dies sinnvoll ist.
Wenn Sie den Workflow veröffentlichen, wird die Workflowzuordnung erstellt, und die Statusspalte wird im Hintergrund erstellt.
Packen der Listen in STP-Paketen
Es gibt unterschiedliche Möglichkeiten, um sicherzustellen, dass der Zielserver über die erforderlichen Listen und Schemas verfügt, die Verwendung von STP-Paketen ist jedoch eine bewährte Vorgehensweise. Packen wir also die Listen „Vacationo und „Vacation Request“ in ein STP-Paket.
Dies ist über die Benutzeroberfläche des Servers oder über SPD möglich, wie unten dargestellt.
Danach wird der folgende Bildschirm angezeigt. Hier können Sie den Namen eingeben und auswählen, dass auch der Inhalt gepackt werden soll.
Beachten Sie, dass SharePoint 2013-Listenworkflows nicht zusammen gepackt werden, unabhängig davon, ob Sie die Option zum Einschließen der Inhalte auswählen.
Wenn der Vorgang erfolgreich war, werden Sie weitergeleitet, damit Sie das Paket herunterladen können.
Klicken Sie auf den Link, und laden Sie das Paket zur späteren Verwendung herunter.
Wenn der Vorgang erfolgreich war, müssen Sie jetzt über zwei STP-Pakete verfügen – ein Paket für die Liste „Vacation Request“ und ein weiteres Paket für die Liste „Vacations“ (die Liste mit den verbleibenden Urlaubstagen).
Packen des Workflows in ein WSP-Paket
Gehen Sie zum Packen des Listenworkflows zur Workflow-Zusammenfassungsseite, und klicken Sie im Menüband auf die Schaltfläche zum Speichern als Vorlage.
Das folgende Dialogfeld wird angezeigt.
Sie finden die Bibliothek für Websiteobjekte im Navigationsbereich. Darin befindet sich das Listenworkflowpaket. (Möglicherweise müssen Sie die Seite aktualisieren, um das Paket anzuzeigen.)
Speichern Sie die Datei mit der Schaltfläche zum Exportieren der Datei auf dem lokalen Computer.
Bereitstellen der STP-Pakete
Öffnen Sie die Zielwebsite (oder Produktionsumgebung) in Ihren Browser, und wechseln Sie zu den Websiteeinstellungen. Das Menü „List templates“ befindet sich in der Gruppe „Web Designer Galleries“.
Laden Sie mit der Option für den Dokumentupload im Menü „Datei“ die beiden STP-Pakete hoch.
Erstellen von Listen mit den bereitgestellten Listenvorlagen
Sie können die beiden Listen aus den bereitgestellten Listenvorlagen erstellen. Wechseln Sie im Navigationsmenü zum Websiteinhalt auf dem Server, und klicken Sie, um eine App hinzuzufügen. Die Symbole für „Vacation“ und „Vacation Request“ sollten angezeigt werden.
Erstellen Sie die Listen „Vacation“ und „Vacation Request“ mit diesen Menüoptionen.
Bereitstellen des WSP-Pakets und Aktivieren des Pakets
Das Bereitstellen des WSP-Pakets unterscheidet sich etwas vom Bereitstellen von STP-Listenvorlagen. Sie müssen das Paket in die Bibliothek „Solutions“ unter der Gruppe „Web Designer Galleries“ in den Websiteeinstellungen hochladen.
Daraufhin wird ein Dialogfeld angezeigt, in dem Sie das Paket (die Lösung) aktivieren müssen.
Aktivieren des Features
Nach dem Aktivieren der Lösung wird in den Websiteeinstellungen ein neues Websitefeature in „Manage site features“ unter „Site Actions“ angezeigt.
Das war's schon. Sie können den Workflow finden, indem Sie nach dem Namen suchen, den Sie beim Packen verwendet haben. Klicken Sie auf die Aktivierungsschaltfläche, und warten Sie, bis die Schaltfläche zu „Deaktivieren“ geändert wird bzw. das Symbol „Aktiv“ angezeigt wird. Dies bedeutet, dass das Feature aktiviert wurde.
(Optional) Öffnen des Workflows aus SPD
Es gibt Situationen, in denen Sie den Workflow auf der Zielwebsite aktualisieren möchten. Kein Problem. Dies ist nicht anders als in der Entwicklungsumgebung. Der bereitgestellte Workflow wird in SPD ordnungsgemäß aufgeführt.
Und er wird ohne Probleme geöffnet. Sie können sehen, dass die Werte auf der Übersichtsseite gleich geblieben sind. Und natürlich wird auch die Logik beibehalten.
(Optional) Ausführen des Workflows
Nachdem Sie den Workflow auf dem Server ausgeführt haben, werden möglicherweise zwei Spalten mit dem gleichen Namen angezeigt (Workflowstatus-Spalte). Dies ist ein bekanntes Problem. Eine Spalte stammt vom Quellserver (in STP gepackt), und die andere Spalte wird auf der Zielwebsite erstellt. Aktualisieren Sie die Listenansicht, um die alte Spalte auszublenden.
Alternativen zum Verwenden von STP-Paketen
Die Lösung wird korrekt bereitgestellt, wenn die Zielwebsite über die erforderlichen Listen verfügt – Listen, die in der Workflowlogik verwendet werden, sowie die Listen für Workflowaufgabe und Workflowverlauf. Am besten erstellen Sie jedoch die Listen und Listenspalten, auf die im Workflow verwiesen wird, mit der gleichen Listenvorlage und dem gleichen Feldtyp. Wenn Typen nicht übereinstimmen, kann beim Paket bei der Featureaktivierung ein Fehler auftreten, oder beim Workflow tritt zur Laufzeit ein Fehler auf.
Was geschieht, wenn das Workflowpaket auf einer Website bereitgestellt wird, auf der die Listen „Vacation“ und „Vacation Request“ nicht vorhanden sind?
Bei der Aktivierung des Websitefeatures tritt ein Fehler auf.
Die Fehlermeldung ist nicht besonders ausführlich, wenn Sie jedoch das ULS-Protokoll betrachten, finden Sie z. B. folgende Hinweise:
Fehler bei der Validierung des Workflow-XAML aufgrund der folgenden Fehler: Es konnte keine „ListId“ aus dem Text „$ListId:Lists/Vacation;“ erstellt werden.
Wenn bei der Featureaktivierung einmal ein Fehler aufgetreten ist, kann bei der erneuten Aktivierung wieder ein Fehler auftreten, auch wenn Sie die erforderlichen Listen erstellen. Dies liegt daran, dass die Workflowdefinition unvollständig bereitgestellt wird. Sie müssen die folgenden Schritte ausführen:
- Öffnen Sie SPD, und löschen Sie die Workflowdefinition, bei der während der Featureaktivierung ein Fehler aufgetreten ist.
- Deaktivieren Sie die Lösung, und entfernen Sie sie.
- Laden Sie die Lösung hoch, und aktivieren Sie sie.
- Aktivieren Sie das Websitefeature.
Hiermit sollte das Problem behoben werden.
Bekannte Probleme
Im Folgenden werden die bekannten Probleme für Workflowpakete aufgeführt.
- Sie müssen garantieren, dass die relativen Listen-URLs (z. B. „Lists/Vacation“) gleich sind. Auch wenn Sie eine Liste mit einem bestimmten Namen erstellen und diesen Namen dann ändern, wird die Listen-URL nicht geändert. Dies liegt daran, dass die URL auf dem ursprünglichen Anzeigenamen basiert. Wenn Sie also den Workflow mit dem aktualisierten Namen der Liste gepackt haben, wird auf der Zielwebsite weiterhin nach einer Listen-URL auf Grundlage des alten Namens gesucht. Wenn Sie daher die Listen auf der Zielwebsite erneut erstellen, müssen Sie sicherstellen, dass Sie den Listen zuerst den ursprünglichen Namen und nicht den aktualisierten Namen zuweisen. So wird die Listen-URL beibehalten. Nach dem Erstellen der Liste können Sie den Listennamen in den aktualisierten Namen ändern.
- Workflows mit Unicode- oder DBCS-Namen werden in WSP-Dateien mit dem hartcodierten Standardnamen „WorkflowSolution.wsp“ gepackt.
- Sie müssen die Seite manuell aktualisieren, wenn Sie unter „Websiteobjekte“ die aktualisierte Lösungsliste anzeigen.
- Wenn auf dem Zielserver die Liste für Workflowaufgaben und die Liste für den Workflowverlauf nicht vorhanden sind, kann der unten dargestellte Fehler angezeigt werden, wenn Sie auf der Seite „Workfloweinstellungen“ auf den Workflow klicken. Dies geschieht, wenn Sie den Workflow auf einem Zielserver bereitstellen, auf dem zuvor noch keine Workflows erstellt wurden. Zur Problemumgehung können Sie einen Dummyworkflow aus SPD erstellen und veröffentlichen, um die Listen für die Workflowaufgaben und den Workflowverlauf zu erstellen. Danach können Sie den bereitgestellten Workflow in SPD öffnen, die Einstellungen für die Listen für Workflowaufgabe und Workflowverlauf anpassen und den Workflow erneut veröffentlichen.
- Projektworkflows werden wie normale Websiteworkflows gepackt. Damit jedoch die Funktionsfähigkeit sichergestellt ist, müssen Sie auch Projektentitäten wie EPT, Phasen, benutzerdefinierte Spalten usw. packen. In den Richtlinien zu Projektworkflows vom Project-Team finden Sie weitere Informationen.
Vielen Dank,
JongHwa
Dies ist ein übersetzter Blogbeitrag. Sie finden den Originalartikel unter Packaging List, Site, and Reusable Workflow and How to Deploy the Package