Projektzeitplan-API-Leistung

Gilt für: Die Basisbereitstellung ist für die Szenarien Project Operations für Szenarien basierend auf vorrätigen/nicht-vorrätigen Ressourcen und Lite-Bereitstellung – Abschluss zur Pro-forma-Rechnungsstellung verfügbar, Project for the web

Dieser Artikel enthält Informationen zu den Leistungsmerkmalen der Projektplan-APIs (Application Programming Interfaces) und nennt die bewährten Verfahren zur Optimierung der Nutzung.

Projektplanungsservice

Der Projektplanungsservice ist ein Service für mehrere Mandanten, der in Microsoft Azure ausgeführt wird. Er wurde entwickelt, um die Interaktion zu verbessern, indem er eine schnelle und flüssige Erfahrung bietet, wenn Benutzer an Projekten arbeiten. Diese Verbesserung wird erreicht, indem Änderungsanforderungen angenommen und bearbeitet werden und anschließend das Ergebnis sofort zurückgegeben wird. Der Service bleibt asynchron zu Dataverse und hindert Benutzer nicht daran, andere Vorgänge auszuführen.

Die Projektzeitplan-APIs stützen sich auf den Project Scheduling Service, um Anfragen auszuführen, die in späteren Abschnitten dieses Artikels genauer beschrieben werden.

Die Projektzeitplan-APIs sind so konzipiert, dass sie mit den folgenden Projektstrukturplan-Entitäten (PSP) funktionieren:

  • Project
  • Projektaufgabe
  • Abhängigkeit der Projektaufgaben
  • Projektteammitglied
  • Ressourcenzuweisung

Sowohl Standardfelder als auch benutzerdefinierte Felder werden unterstützt. Sofern nicht anders angegeben, werden alle gängigen Operationen unterstützt, z. B. Erstellen, Aktualisieren und Löschen. Weitere Informationen finden Sie unter Projektzeitplan-APIs verwenden, um Vorgänge mit Planungsentitäten auszuführen.

Als Teil der Projektzeitplan-APIs wurde ein Arbeitseinheitsmuster hinzugefügt. Dieses Muster wird als OperationSet bezeichnet und kann verwendet werden, wenn mehrere Anforderungen in einer einzigen Transaktion verarbeitet werden müssen.

Die folgende Abbildung zeigt den Flow, den ein Partner erlebt, wenn diese Funktion verwendet wird.

Dataverse und Projektzeitplanungsservice-Flow.

Schritt 1: Ein Client macht einen API-Aufruf an einen Open Data Protocol (OData)-Endpunkt in Dataverse, um ein OperationSet zu erstellen.

Schritt 2: Nachdem das neue OperationSet erstellt wurde, wird ein OperationSetId-Wert zurückgegeben.

Schritt 3: Der Client verwendet den OperationSetId-Wert, um eine weitere Projektzeitplan-API-Anfrage zu stellen. Das Ergebnis ist eine Erstellungs-, Aktualisierungs- oder Löschanforderung für eine Planungsentität. Wenn diese Anfrage gestellt wird, wird die Metadatenvalidierung durchgeführt. Wenn die Validierung fehlschlägt, wird die Anfrage beendet und ein Fehler zurückgegeben.

Schritte 4a–4c: Diese Schritte repräsentieren die ACCEPT-Phase. Der Client ruft die ExecuteOperationSetV1-API auf, die alle Änderungen in einem Batch an den Projektplanungsservice sendet. Der Projektplanungsservice führt seine eigenen Validierungen für Anforderungen im Batch aus. Validierungsfehler machen den Batch rückgängig und geben eine Ausnahme an den Aufrufer zurück. Wenn der Batch erfolgreich vom Projektplanungsservice akzeptiert wird, wird der OperationSet-Status aktualisiert, um die Tatsache widerzuspiegeln, dass das OperationSet vom Projektplanungsservice verarbeitet wird.

Schritt 5: Dieser Schritt stellt die PERSIST-Phase dar. Der Projektplanungsservice schreibt den Batch bei einer Transaktion asynchron in Dataverse. Wenn der Schreibvorgang erfolgreich ist, wird das OperationSet markiert als Abgeschlossen. Bei Fehlern wird die Transaktion und der Batch zurückgesetzt und das OperationSet wird als Fehlgeschlagen markiert.

Leistungsmethodik

Die Ausführungszeit ist definiert als die Zeit vom Aufruf der ExecuteOperationSetV1-API, bis der Projektplanungsservice fertig in Dataverse geschrieben hat. Alle Operationen werden zusammen 2.200 Mal ausgeführt, und die P99-Ausführungszeitmessungen werden gemeldet. Einzeldatensatz- und Massenoperationen werden gemessen.

Für eine Operation mit einem einzigen Datensatz enthält das OperationSet eine Anforderung. Bei Massenvorgängen enthält es 20, 50 oder 100 Anfragen. Jede Bulk-Größe wird separat gemeldet.

Diese Vorgänge werden in einer UR 15 Project Operations Lite-Bereitstellung in Nordamerika ausgeführt.

Ergebnisse

Vorgänge erstellen

Erstellen von Einzeldatensätzen

Die folgende Tabelle zeigt die Ausführungszeiten für die Erstellung eines einzelnen Datensatzes. Die Zeiten sind in Sekunden angegeben.

Datensatztyp    Zeit
Erforderliche Felder Alle unterstützten Felder
Project 2.5 3.78
Aufgabe 8.82 9.34
Zuweisung 9.19 9.19
Teammitglied 0.84 4.2
Abhängigkeit 8.84 8.84

Massenerstellungsvorgänge

Die folgende Tabelle zeigt die Ausführungszeiten für die Erstellung zahlreicher Datensätze. Insbeondere hat Microsoft die Ausführungszeiten für die Erstellung von 20, 50 und 100 Datensätzen in einem einzigen OperationSet gemessen. Die Zeiten sind in Sekunden angegeben.

Datensatztyp    Zeit
20 Datensätze 50 Datensätze 100 Datensätze
Erforderliche Felder Alle unterstützten Felder Erforderliche Felder Alle unterstützten Felder Erforderliche Felder Alle unterstützten Felder
Aufgabe 19.92 38.35 36.67 99.13 116.77 174.06
Zuweisung 13.94 13.94 43.95 43.95 69.38 69.38
Dependency 30.04 30.04 77.82 77.82 176.89 176.89

Notiz

Massenerstellungsvorgänge in den Projekt- und Teammitglied-Entitäten sind in dieser Tabelle nicht enthalten, da die Laufzeit für diese Vorgänge der Laufzeit ähnelt, bei der die API zum Erstellen eines einzelnen Datensatzes mehrmals aufgerufen wird. Diese APIs werden sofort in Dataverse ausgeführt.

Die folgende Abbildung zeigt eine grafische Darstellung der Ausführungszeiten für die Entitäten Aufgabe, Zuweisung und Abhängigkeit, wenn 20, 50 und 100 Datensätze erstellt und alle unterstützten Felder verwendet werden.

Erstellen Sie ein Diagramm zur Ausführungszeit eines Datensatzes.

Vorgänge aktualisieren

Einzeldatensatz-Aktualisierungsvorgänge

Die folgende Tabelle zeigt die Ausführungszeiten für die Aktualisierung eines einzelnen Datensatzes. Die Zeiten sind in Sekunden angegeben.

Datensatztyp    Zeit
Erforderliche Felder Alle unterstützten Felder
Project 9.53 13.91
Task 8.82 9.91
Teammitglied 9 8.96

Notiz

Aktualisierungsvorgänge der Entitäten Ressourcenzuweisungen und Abhängigkeit der Projektaufgaben werden nicht unterstützt.

Massenaktualisierungsvorgänge

Die folgende Tabelle zeigt die Ausführungszeiten für die Aktualisierung zahlreicher Datensätze. Insbeondere hat Microsoft die Ausführungszeiten für die Aktualisierung von 20, 50 und 100 Datensätzen in einem einzigen OperationSet gemessen. Die Zeiten sind in Sekunden angegeben.

Datensatztyp    Zeit
20 Datensätze 50 Datensätze 100 Datensätze
Erforderliche Felder Alle unterstützten Felder Erforderliche Felder Alle unterstützten Felder Erforderliche Felder Alle unterstützten Felder
Aufgabe 8.91 38.71 20.92 87.13 36.68 190.34
Teammitglied 20.52 26.06 41.93 44.51 38.63 66.53

Notiz

Aktualisierungsvorgänge der Entitäten Ressourcenzuweisungen und Abhängigkeit der Projektaufgaben werden nicht unterstützt.

Die folgende Abbildung zeigt eine grafische Darstellung der Ausführungszeiten für die Entitäten Aufgabe und Teammitglied, wenn 20, 50 und 100 Datensätze aktualisiert und alle unterstützten Felder verwendet werden.

Aktualisieren Sie ein Diagramm zur Ausführungszeit eines Datensatzes.

Vorgänge löschen

Einzeldatensatz-Löschvorgänge

Die folgende Tabelle zeigt die Ausführungszeiten für die Löschung eines einzelnen Datensatzes. Die Zeiten sind in Sekunden angegeben.

Datensatztyp Zeit
Aufgabe 20.12
Zuweisung 10.86
Teammitglied 12.52
Dependency 20.89

Notiz

Löschvorgänge in der Projekt-Entität werden nicht unterstützt.

Massenlöschungsvorgänge

Die folgende Tabelle zeigt die Ausführungszeiten für die Löschung zahlreicher Datensätze. Insbeondere hat Microsoft die Ausführungszeiten für die Löschung von 20, 50 und 100 Datensätzen in einem einzigen OperationSet gemessen. Die Zeiten sind in Sekunden angegeben.

Datensatztyp    Zeit
20 Datensätze 50 Datensätze 100 Datensätze
Aufgabe 20.91 67.43 71.96
Zuweisung 11.75 25.79 47.66
Teammitglied 9.78 39.73 24.33
Dependency 24.61 54.9 109.16

Notiz

Löschvorgänge in der Projekt-Entität werden nicht unterstützt.

Die folgende Abbildung zeigt eine grafische Darstellung der Ausführungszeiten für die Entitäten Aufgabe, Zuweisung, Teammitglied und Abhängigkeit, wenn 20, 50 und 100 Datensätze gelöscht werden.

Löschen Sie ein Diagramm zur Ausführungszeit eines Datensatzes.

Beobachtungen

Für jeden Datensatzvorgang benötigt die ExecuteOperationSet-API etwa 800 Millisekunden, um eine Anfrage an den Projektplanungsservice zu senden. Der Projektplanungsservice benötigt dann etwa fünf Sekunden, um die Nutzlast zu verarbeiten und Dataverse aufzurufen. Die restliche Ausführungszeit wird damit verbracht, Geschäftslogik auszuführen und Daten in die Datenbank in Dataverse zu schreiben.

Wenn 100 Datensätze erstellt, aktualisiert oder gelöscht werden, wird die ExecuteOperationSet-API dauert etwa drei Sekunden, um die Anfrage an den Projektplanungsservice zu senden. Der Projektplanungsservice benötigt dann etwa fünf Sekunden, um die Anforderung zu verarbeiten und Dataverse aufzurufen. Massenoperationen müssen einmalig Projektplanungsservice-Steuer für alle Datensätze im OperationSet zahlen. Daher haben Massenoperationen eine deutlich kürzere durchschnittliche Ausführungszeit als Operationen mit einem einzigen Datensatz.

Szenarien

Die folgende Tabelle zeigt die Ausführungszeiten, wenn die Projektzeitplan-APIs verwendet werden, um bestimmte Szenarien auszuführen. Die Zeiten sind in Sekunden angegeben.

Szenario Zeit
Erstellen Sie ein Projekt mit 40 Aufgaben. 36.01
Erstellen Sie ein Projekt mit 40 Aufgaben und 20 Abhängigkeiten. 38.11
Erstellen Sie ein Projekt mit 40 Aufgaben und 30 Zuweisungen. 60.17
Erstellen Sie ein Projekt mit 40 Aufgaben, 20 Abhängigkeiten und 30 Zuweisungen. 60.27

Bewährte Vorgehensweisen

Basierend auf den Ergebnissen des vorherigen Szenarios erzielen die APIs unter den folgenden Bedingungen eine bessere Leistung:

  • Gruppieren Sie so viele Operationen wie möglich. Die durchschnittliche Laufzeit für Massenvorgänge ist besser als die durchschnittliche Laufzeit für Einzeldatensatzvorgänge. Je kleiner die Anzahl der verwendeten OperationSets ist, desto schneller ist die durchschnittliche Ausführungszeit.
  • Legen Sie nur die Mindestattribute fest, die zum Ausführen Ihres Szenarios erforderlich sind. Seien Sie wählerisch bei den Typen nicht erforderlicher Felder, die in einer OperationSet-Anforderung enthalten sind. Felder, die Fremdschlüssel oder Rollupfelder enthalten, wirken sich negativ auf die Leistung aus.