Massenaktualisierung von benutzerdefinierten Feldern und Erstellen von Projektwebsites aus einem Workflow in Project Online
Um Kunden dabei zu helfen, die Project Online optimal zu nutzen und die Erweiterbarkeit und Flexibilität des Diensts zu verbessern, haben wir dem clientseitigen Objektmodell zwei Methoden hinzugefügt, die Sie in Project Online Apps und Workflows verwenden können.
Wert | |
---|---|
UpdateCustomFields |
Benutzerdefinierte Felder des Projekts werden per Massenaktualisierung aktualisiert. Nur für Project Online. Nur in der REST-API verfügbar. |
CreateProjectSite |
Erstellt eine Project-Website. Nur für Project Online. Verfügbar in der REST-API, dem verwalteten Clientobjektmodell und dem JavaScript-Clientobjektmodell. |
Diese Methoden bieten nicht nur mehr Flexibilität, sie bieten auch erhebliche Leistungsverbesserungen beim Speichern und Veröffentlichen von Projekten in einem Workflow. In diesem Artikel wird beschrieben, wie Sie die Methoden in der REST-API verwenden, und es wird beschrieben, wie Sie einen Workflow erstellen, der benutzerdefinierte Felder per Massenaktualisierung aktualisiert, sowie einen Workflow, der eine Project-Website erstellt.
Hinweis
Weitere Informationen zum Aufrufen von REST-APIs aus SharePoint 2013-Workflows finden Sie unter Grundlegendes und Verwenden der SharePoint 2013-REST-Schnittstelle und Aufrufen der SharePoint 2013-Rest-API aus einem SharePoint Designer Workflow.
Massenaktualisierung von benutzerdefinierten Projektfeldern aus einem Workflow
Bisher konnten Workflows jeweils nur ein benutzerdefiniertes Feld aktualisieren. Die aktualisierung von benutzerdefinierten Projektfeldern nacheinander kann zu einer schlechten Endbenutzererfahrung führen, wenn Benutzer zwischen Projektdetailseiten wechseln. Jedes Update erforderte eine separate Serveranforderung mithilfe der Aktion Projektfeld festlegen , und das Aktualisieren mehrerer benutzerdefinierter Felder in einem Netzwerk mit hoher Latenz und geringer Bandbreite führte zu einem nicht trivialen Mehraufwand. Um dieses Problem zu beheben, haben wir der REST-API die UpdateCustomFields-Methode hinzugefügt, mit der Sie benutzerdefinierte Felder per Massenaktualisierung aktualisieren können. Um UpdateCustomFields zu verwenden, übergeben Sie ein Wörterbuch, das die Namen und Werte aller benutzerdefinierten Felder enthält, die Sie aktualisieren möchten.
Die REST-Methode befindet sich am folgenden Endpunkt:
https://<site-url>/_api/ProjectServer/Projects('<guid>')/Draft/UpdateCustomFields()
Hinweis
Ersetzen Sie den <site-url>
Platzhalter in den Beispielen durch die URL Ihrer Project Web App-Website (PWA) und den <guid>
Platzhalter durch Ihre Projekt-UID.
In diesem Abschnitt wird beschrieben, wie Sie einen Workflow erstellen, der benutzerdefinierte Felder für ein Projekt per Massenaktualisierung aktualisiert. Der Workflow folgt den folgenden allgemeinen Schritten:
Warten Sie, bis das Projekt, das Sie aktualisieren möchten, eingecheckt wird.
Erstellen Sie ein Dataset, das alle Aktualisierungen benutzerdefinierter Felder für das Projekt definiert.
Sehen Sie sich das Projekt an.
Rufen Sie UpdateCustomFields auf, um die Aktualisierungen des benutzerdefinierten Felds auf das Projekt anzuwenden.
Protokollieren Sie relevante Informationen in der Workflowverlaufsliste (falls erforderlich).
Veröffentlichen Sie das Projekt.
Checken Sie das Projekt ein.
Der endgültige End-to-End-Workflow sieht wie folgt aus:
So erstellen Sie einen Workflow, der benutzerdefinierte Felder per Massenaktualisierung aktualisiert
Optional. Speichern Sie die vollständige URL Ihres Projekts in einer Variablen, die Sie im gesamten Workflow verwenden können.
Fügen Sie dem Workflow die Aktion Auf Projektereignis warten hinzu, und wählen Sie das Ereignis Beim Einchecken eines Projekts aus.
.
Erstellen Sie mithilfe der Aktion Wörterbuch erstellen ein requestHeader-Wörterbuch. Sie verwenden denselben Anforderungsheader für alle Webdienstaufrufe in diesem Workflow.
Fügen Sie dem Wörterbuch die folgenden beiden Elemente hinzu.
Name Typ Wert Annehmen Zeichenfolge application/json; odata=verbose Content-Type Zeichenfolge application/json; odata=verbose Erstellen Sie mithilfe der Aktion Wörterbuch erstellen ein requestBody-Wörterbuch. Dieses Wörterbuch speichert alle Feldaktualisierungen, die Sie anwenden möchten.
Jede Aktualisierung eines benutzerdefinierten Felds erfordert vier Zeilen: den Metadatentyp (1), (2) den Schlüssel, den Wert (3) und den Werttyp (4).
__metadata/Typ Der Metadatentyp des Felds. Dieser Datensatz ist immer gleich und verwendet die folgenden Werte:
Name: customFieldDictionary(i)/__metadata/type (wobei i der Index jedes benutzerdefinierten Felds im Wörterbuch ist, beginnend mit 0)
Typ: Zeichenfolge
Wert: SP. Keyvalue
Schlüssel Der interne Name des benutzerdefinierten Felds im folgenden Format: Custom_ce23fbf43fa0e411941000155d3c8201
Sie können den internen Namen eines benutzerdefinierten Felds finden, indem Sie zum InternalName-Endpunkt navigieren:
https://<site-url>/_api/ProjectServer/CustomFields('<guid>')/InternalName
Wenn Sie Ihre benutzerdefinierten Felder manuell erstellt haben, unterscheiden sich die Werte von Website zu Website. Wenn Sie planen, den Workflow an mehreren Standorten wiederzuverwenden, stellen Sie sicher, dass die benutzerdefinierten Feld-IDs korrekt sind.
Wert Der Wert, der dem benutzerdefinierten Feld zugewiesen werden soll. Für benutzerdefinierte Felder, die mit Nachschlagetabellen verknüpft sind, müssen Sie die internen Namen der Nachschlagetabelleneinträge anstelle der tatsächlichen Nachschlagetabellenwerte verwenden.
Sie finden den internen Namen des Nachschlagetabelleneintrags am folgenden Endpunkt:
https://<site-url>/_api/ProjectServer/CustomFields('<guid>')/LookupEntries('<guid>')/InternalName
Wenn Sie ein benutzerdefiniertes Nachschlagetabellenfeld eingerichtet haben, das mehrere Werte akzeptiert, verwenden Sie
;#
, um Werte zu verketten (wie im Beispielwörterbuch unten gezeigt).Valuetype Der Typ des benutzerdefinierten Felds, das Sie aktualisieren.
Verwenden Sie Edm.String für die Felder Text, Dauer, Flag und LookupTable.
Verwenden Sie für Zahlenfelder Edm.Int32, Edm.Double oder einen anderen von OData akzeptierten Zahlentyp.
Verwenden Sie für Datumsfelder Edm.DateTime.
Im folgenden Beispielwörterbuch werden Updates für drei benutzerdefinierte Felder definiert. Die erste ist für ein benutzerdefiniertes Nachschlagetabellenfeld mit mehreren Werten, das zweite für ein Zahlenfeld und das dritte für ein Datumsfeld. Beachten Sie, wie der customFieldDictionary-Index inkrementiert wird.
Hinweis
Diese Werte dienen nur zu Veranschaulichungszwecken. Die Schlüssel-Wert-Paare, die Sie verwenden, hängen von Ihren PWA-Daten ab.
Name Typ Wert customFieldDictionary(0)/__metadata/type Zeichenfolge SP. Keyvalue customFieldDictionary(0)/Key Zeichenfolge Custom_ce23fbf43fa0e411941000155d3c8201 customFieldDictionary(0)/Value Zeichenfolge Entry_b9a2fd69279de411940f00155d3c8201;#Entry_baa2fd69279de411940f00155d3c8201 customFieldDictionary(0)/ValueType Zeichenfolge Edm.String customFieldDictionary(1)/__metadata/type Zeichenfolge SP. Keyvalue customFieldDictionary(1)/Key Zeichenfolge Custom_c7f114c97098e411940f00155d3c8201 customFieldDictionary(1)/Value Zeichenfolge 90.5 customFieldDictionary(1)/ValueType Zeichenfolge Edm.Double customFieldDictionary(2)/__metadata/type Zeichenfolge SP. Keyvalue customFieldDictionary(2)/Key Zeichenfolge Custom_c6fb67e0b9a1e411941000155d3c8201 customFieldDictionary(2)/Value Zeichenfolge 2015-04-01T00:00:00 customFieldDictionary(2)/ValueType Zeichenfolge Edm.DateTime
Fügen Sie die Aktion HTTP-Webdienst aufrufen hinzu, um das Projekt auszuchecken.
Bearbeiten Sie die Eigenschaften des Webdienstaufrufs, um den Anforderungsheader anzugeben. Klicken Sie zum Öffnen des Dialogfelds Eigenschaften mit der rechten Maustaste auf die Aktion, und wählen Sie Eigenschaften aus.
Fügen Sie die Aktion HTTP-Webdienst aufrufen hinzu, um die UpdateCustomFields-Methode aufzurufen.
Notieren Sie sich das
/Draft/
Segment in der Webdienst-URL. Die vollständige URL sollte wie folgt aussehen:https://<site-url>/_api/ProjectServer/Projects('<guid>')/Draft/UpdateCustomFields()
.
Bearbeiten Sie die Eigenschaften des Webdienstaufrufs, um die Parameter RequestHeader und RequestContent an die von Ihnen erstellten Wörterbücher zu binden. Sie können auch eine neue Variable zum Speichern von ResponseContent erstellen.
Optional. Lesen Sie das Antwortwörterbuch, um den Status des Warteschlangenauftrags zu überprüfen und die Informationen in der Workflowverlaufsliste zu protokollieren.
Fügen Sie dem Veröffentlichungsendpunkt einen Webdienstaufruf hinzu, um das Projekt zu veröffentlichen. Verwenden Sie immer denselben Anforderungsheader.
.
Fügen Sie dem Checkin-Endpunkt einen endgültigen Webdienstaufruf hinzu, um das Projekt einzuchecken.
Erstellen einer Projektwebsite aus einem Workflow
Jedes Projekt kann über eigene dedizierte SharePoint-Websites verfügen, auf denen Teammitglieder zusammenarbeiten, Dokumente freigeben, Probleme auslösen können usw. Bisher konnten Websites nur automatisch bei der ersten Veröffentlichung oder manuell vom Projektmanager in Project Professional oder vom Administrator in PWA-Einstellungen erstellt werden, oder sie konnten deaktiviert werden.
Wir haben die CreateProjectSite-Methode hinzugefügt, damit Sie auswählen können, wann Projektwebsites erstellt werden sollen. Dies ist besonders nützlich für Organisationen, die ihre Websites automatisch erstellen möchten, wenn ein Projektvorschlag eine bestimmte Phase in einem vordefinierten Workflow erreicht, anstatt bei der ersten Veröffentlichung. Durch das Verschieben der Erstellung einer Projektwebsite wird die Leistung beim Erstellen eines Projekts erheblich verbessert.
Voraussetzung: Bevor Sie CreateProjectSite verwenden können, muss die Einstellung Benutzern die Auswahl erlauben für die Projektwebsiteerstellung in PWA-Einstellungen>Verbundene SharePoint-Websites-Einstellungen> festgelegt werden.
So erstellen Sie einen Workflow, der eine Project-Website erstellt
Erstellen oder bearbeiten Sie einen vorhandenen Workflow, und wählen Sie den Schritt aus, in dem Sie Ihre Projektwebsites erstellen möchten.
Erstellen Sie mithilfe der Aktion Wörterbuch erstellen ein requestHeader-Wörterbuch.
Fügen Sie dem Wörterbuch die folgenden beiden Elemente hinzu.
Name Typ Wert Annehmen Zeichenfolge application/json; odata=verbose Content-Type Zeichenfolge application/json; odata=verbose Fügen Sie die Aktion HTTP-Webdienst aufrufen hinzu. Ändern Sie den Anforderungstyp, um POST zu verwenden, und legen Sie die URL im folgenden Format fest:
https://<site-url>/_api/ProjectServer/Projects('<guid>')/CreateProjectSite('New web name')
Übergeben Sie den Namen der Project-Website als Zeichenfolge an die CreateProjectSite-Methode . Um den Projektnamen als Websitenamen zu verwenden, übergeben Sie eine leere Zeichenfolge. Achten Sie darauf, eindeutige Namen zu verwenden, damit die nächste Von Ihnen erstellte Projektwebsite funktioniert.
Bearbeiten Sie die Eigenschaften des Webdienstaufrufs, um den RequestHeader-Parameter an das erstellte Wörterbuch zu binden.