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.
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.
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.
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.
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.