Asynchroner Service
Der asynchrone Dienst führt zeitaufwändige Vorgänge unabhängig vom Microsoft Dataverse-Kernvorgang aus. Zum Ausführen zeitintensiver Vorgänge führt dies zu einer optimierten Gesamtsystemleistung und Skalierbarkeit. Der asynchrone Dienst verfügt über eine verwaltete First-In, First-Out (FIFO)-Warteschlange für die Ausführung von asynchron registrierten Plug-Ins, Workflows und Operationen wie Massenmail, Massenimport und Verbreitung von Aktivitätsweitergaben. Diese Vorgänge werden beim asynchronen Dienst registriert und in regelmäßigen Intervallen ausgeführt, wenn der Dienst die Warteschlange verarbeitet.
Nachdem ein Ereignis eingetreten ist und alle synchronen Erweiterungen verarbeitet wurden, serialisiert Dataversedie Plattform den Kontext für alle asynchronen Erweiterungen und speichert ihn in der Datenbank als Systemvorgang in der (AsyncOperation) Tabelle. Der Systemauftrag definiert und verfolgt die Ausführung des asynchronen Betriebs. Wenn Ressourcen verfügbar werden, verarbeitet Dataverse die Systemaufträge und führt die von ihnen definierten Vorgänge aus. Dataverse verarbeite alle Datenvorgänge, die in der Erweiterung definierte sind erneut in der der Ereignisausführungspipeline, diesmal jedoch als synchronen Vorgang.
Ausführungsauftrag und Abhängigkeiten
Systemaufträge werden als Warteschlange mithilfe des Datums CreatedOn ausgewertet. Wenn es keine Bedingungen für eine Verschiebung der Ausführung gibt, werden diese ausgeführt, sobald Ressourcen verfügbar sind. Es ist nicht immer garantiert, dass die Ausführung in der bis zum CreatedOn
Datum festgelegten Reihenfolge erfolgt, da verschiedene Arten von Operationen unterschiedliche Ressourcen erfordern.
Ein Systemauftrag kann von einem anderen Systemauftrag abhängig sein, so dass er erst beginnt, wenn der andere Systemauftrag abgeschlossen ist. Der Spaltenwert Abhängigkeitstoken etabliert diese Abhängigkeit, wenn ein Systemauftrag erstellt wird. Wenn der DependencyToken
-Wert Null ist, hat der Systemauftrag keine Abhängigkeiten. Abhängige Systemaufträge haben den gleichen DependencyToken
-Wert und werden in der Reihenfolge ihrer Erstellung ausgeführt. Wenn ein Systemauftrag verschoben wird, warten alle nachfolgenden abhängigen Systemaufträge weiterhin, bis der aufgeschobene Systemauftrag ausgeführt wird.
Hinweis
Dieses Abhängigkeitssystem kann nicht von Plug-Ins verwendet werden, die für den asynchronen Betrieb registriert sind, da die Systemaufträge für sie vom System erstellt werden.
Verwalten von Systemaufträgen
Mit der AsyncOperation Table können Sie die folgenden Operationen zur Verwaltung von Systemjobs durchführen.
- Abrufen von Systemaufträgen
- Systemaufträge löschen
- Verwalten von Systemauftragsstatus
- Verschieben von Systemaufträgen
Hinweis
Das Erstellen von Systemaufträgen mit Code wird nicht unterstützt. Obwohl die AsyncOperation
-Tabelle mehrere beschreibbare Spalten und Erstellungsoperationen unterstützt, werden nur die folgenden Spalten für die Aktualisierung unterstützt:
Abrufen von Systemaufträgen
Sie können Systemaufträge in der Anwendung anzeigen, indem Sie zu Einstellungen > System > Systemaufträge navigieren; Sie können sie auch über Erweiterte Suche in modellgesteuerten Apps suchen.
Mit Hilfe von Code können Sie Systemaufträge wie jede andere Tabelle abrufen. In der folgenden Tabelle sind ausgewählte Spalten aufgeführt, die für das Verständnis von Systemjobs wichtig sind:
Column | Description |
---|---|
AsyncOperationId |
Eindeutiger Bezeichner des Systemauftrags. |
CompletedOn |
Datum und Uhrzeit der Fertigstellung des Systemauftrags. |
CreatedBy |
Eindeutiger Bezeichner des Benutzers, der den Systemauftrag erstellt hat. |
CreatedOn |
Datum und Uhrzeit der Erstellung des Systemauftrags. |
Data |
Dem Systemauftrag zugeordnete unstrukturierte Daten. |
DependencyToken |
Die Ausführung aller Vorgänge mit demselben Abhängigkeitstoken wird serialisiert. Erfahren Sie mehr über den Ausführungsauftrag und Abhängigkeiten |
Depth |
Anzahl von SDK-Aufrufen seit dem ersten Aufruf. |
ErrorCode |
Fehlercode, der von einem abgebrochenen Systemauftrag zurückgegeben wurde. |
ExecutionTimeSpan |
Die zur Ausführung des Systemauftrags benötigte Zeit. |
FriendlyMessage |
Die vom Systemauftrag ausgegebene Meldung. |
IsWaitingForEvent |
Gibt an, dass der Systemauftrag auf ein Ereignis wartet. |
Message |
Nachricht zum Systemauftrag. |
MessageName |
Der Name der Nachricht, von der dieser Systemauftrag aufgerufen wurde. |
ModifiedBy |
Eindeutiger Bezeichner des Benutzers, der den Systemauftrag zuletzt geändert hat. |
ModifiedOn |
Datum und Uhrzeit der letzten Änderung des Systemauftrags. |
Name |
Name des Systemauftrags. |
OperationType |
Typ des Systemauftrags. Mehr über Vorgangstypen erfahren |
OwnerId |
Eindeutiger Bezeichner des für den Systemauftrag zuständigen Benutzers oder Teams. |
OwningBusinessUnit |
Eindeutiger Bezeichner der Unternehmenseinheit, die im Besitz des Systemauftrags ist. |
OwningExtensionId |
Eindeutiger Bezeichner der besitzenden Erweiterung, der der Systemauftrag zugeordnet ist. |
OwningTeam |
Eindeutiger Bezeichner des Teams, das im Besitz des Datensatzes ist. |
OwningUser |
Eindeutiger Bezeichner des Benutzers, der im Besitz des Datensatzes ist. |
PostponeUntil |
Zeigt an, ob der Systemauftrag nach dem angegebenen Datum und der angegebenen Uhrzeit ausgeführt werden soll. Lernen Sie, Systemaufträge zu verschieben |
PrimaryEntityType |
Typ der Tabelle, mit der der Systemauftrag primär verknüpft ist. |
RecurrencePattern |
Serienmuster von Systemaufträgen. ;ejr er Wiederholungsstartzeiten und -Muster erfahren |
RecurrenceStartTime |
Startzeit in UTC für das Serienmuster. ;ejr er Wiederholungsstartzeiten und -Muster erfahren |
RegardingObjectId |
Eindeutiger Bezeichner des Objekts, dem der Systemauftrag zugeordnet ist. |
RetryCount |
Anzahl der Wiederholungsversuche für den Systemauftrag. |
Sequence |
Reihenfolge, in der Vorgänge übermittelt wurden. |
StartedOn |
Datum und Uhrzeit des Starts des Systemauftrags. |
StateCode |
Status des Systemauftrags. Mehr über das Verwalten von Systemauftragsstatus erfahren |
StatusCode |
Grund für den Status des Systemauftrags. Mehr über das Verwalten von Systemauftragsstatus erfahren |
UTCConversionTimeZoneCode |
Zeitzonencode, der bei der Datensatzerstellung verwendet wurde. |
WorkflowStageName |
Name einer Workflowphase. |
Beispiele
Sie können die folgenden Beispiele verwenden, um Systemauftragsdaten abzurufen.
Verwenden Sie die folgende Web-API-Abfrage, um die Spalten in der obigen Tabelle abzurufen. [Erfahren Sie, wie Sie Daten mithilfe der Web-API abfragen](webapi/query/overview.md
GET <organization URL>/api/data/v9.2/asyncoperations?$top=1000
&$select=
asyncoperationid,
completedon,
createdon,
data,
dependencytoken,
depth,
errorcode,
executiontimespan,
friendlymessage,
iswaitingforevent,
message,
messagename,
modifiedon,
name,
operationtype,
_ownerid_value,
postponeuntil,
primaryentitytype,
recurrencepattern,
recurrencestarttime,
_regardingobjectid_value,
retrycount,
sequence,
startedon,
statecode,
utcconversiontimezonecode,
workflowstagename
&$expand=
createdby($select=fullname),
modifiedby($select=fullname),
owningbusinessunit($select=name),
owningextensionid($select=name),
owningteam($select=name),
owninguser($select=fullname)
Hinweis
Mit der Web-API gibt es eine einwertige Navigationseigenschaft für jede Tabelle, die Systemaufträge unterstützt. Der Name dieser Navigationseigenschaft folgt dem Muster regardingobjectid_<table logical name>
.
Vorgangstypen
Die Spalte OperationType beschreibt Kategorien von Systemjobs. Dataverse initiiert viele dieser Typen, um Wartungsaufgaben durchzuführen.
Hinweis
Sie können keine Abbruch-, Halte- oder Fortsetzungsvorgänge für von der Plattform generierte Systemaufträge durchführen.
Einige der Typen dieser plattformgenerierten Aufträge sind in der folgenden Tabelle aufgeführt:
OperationType-Wert | OperationType-Beschriftung |
---|---|
9 | SQM-Datensammlung |
16 | Organisationsstatistiken werden gesammelt. |
18 | Speicherplatzgröße der Organisation wird berechnet. |
19 | Organisationsdatenbankstatistiken werden gesammelt. |
20 | Statistiken zur Organisationsgröße werden gesammelt. |
22 | Maximale Speicherplatzgröße der Organisation wird berechnet. |
24 | Statistikintervalle werden aktualisiert. |
25 | Volltextkatalog-Index der Organisation |
27 | Vertragsstatus aktualisieren |
31 | Speicherlimitbenachrichtigung |
Eine vollständige Liste finden Sie unter Vorgangsypen Auswahl/Optionen
Wiederholungsstartzeiten und -muster
Wiederkehrende Systemaufträge benötigen Informationen darüber, wann sie beginnen sollten und wie oft sie wiederkehren. Diese Werte werden in der Tabelle AsyncOperation
in den Spalten RecurrenceStartTime
und RecurrencePattern
gespeichert.
Da Sie die AsyncOperation
-Tabellen nicht direkt mit Code erstellen können, müssen Sie diese Werte nur interpretieren, wenn Sie die Daten abfragen. Diese Eigenschaftswerte werden Sie nur indirekt festlegen, indem Sie Meldungen verwenden, die neue Systemaufträge erstellen. Die BulkDelete
- und BulkDeleteDuplicates
-Meldungen enthalten beide Parameter oder Eigenschaften in den entsprechenden Web-API-Aktionen oder SDK für .NET-Anforderungsklassen. Mehr Informationen: BulkDetectDuplicatesRequest Klasse, BulkDetectDuplicates-Aktion, BulkDeleteRequest Klasse, und BulkDelete-Aktion
Der RecurrenceStartTime
ist lediglich ein Datumszeitwert, der angibt, wann der Systemauftrag gestartet werden soll. Wenn er nicht festgelegt ist, wird erwartet, dass der Systemauftrag sofort gestartet wird.
Die Spalte RecurrencePattern
speichert Informationen darüber, wie häufig wiederkehrende Systemaufträge auftreten. Diese Plattform legt manchmal diesen Wert fest, wenn ein neuer Asynchronisations-Datensatz erstellt wird. Sie können diesen Wert festlegen, um das Muster zu ändern.
Die Werte für diese Spalte verwenden Teile des Internet-Standards RFC2445 (Internet Calendaring and Scheduling Core Object Specification).
Die folgende Tabelle enthält einige Beispiele:
Serienmuster | Häufigkeit der Auftragsausführung |
---|---|
FREQ=MONTHLY; |
Einmal im Monat |
FREQ=WEEKLY; |
Einmal die Woche |
FREQ=DAILY; |
Einmal täglich |
FREQ=DAILY;INTERVAL=3; |
Alle drei Tage |
FREQ=HOURLY; |
Einmal pro Stunde |
Wenn kein INTERVAL
-Wert festgelegt ist, wird er als 1
interpretiert.
Diagnoseabfragen
Verwenden Sie die Abfragen in diesem Abschnitt, um bei der Diagnose von Problemen zu helfen.
Aufträge nach Bundesstaat, Status und Typ
Verwenden Sie diese Abfrage, um die Verteilung und Häufigkeit verschiedener Arten von Jobs zu verstehen. Die Ergebnisse können Ihnen Aufschluss darüber geben, welche Jobs ein Problem verursachen.
Diese Abfrage sortiert nicht nach count
absteigend. Möglicherweise möchten Sie stattdessen FetchXml mit Web-API verwenden. Daten mithilfe von FetchXml abfragen
GET [Organization URI]/api/data/v9.2/asyncoperations?$apply=groupby((statecode,statuscode,operationtype),aggregate($count as count))
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
Top-Systemaufträge, die sich im angehaltenen Zustand befinden, nach Anzahl
Verwenden Sie diese Abfrage, um die Anzahl aller Jobs innerhalb der AsyncOperation
Tabelle zu extrahieren, die in einem Ausgesetzt-Status sind. Diese Abfrage hilft Ihnen bei:
- Verstehen Sie den Umfang und die Art der Warteauftrags.
- Identifizieren Sie, wo es zu Verzögerungen kommt.
- Treffen Sie fundierte Entscheidungen darüber, wie Sie diese beheben können, um die Systemleistung und den Durchsatz zu verbessern.
Diese Abfrage sortiert nicht nach count
absteigend. Möglicherweise möchten Sie stattdessen FetchXml mit Web-API verwenden. Daten mithilfe von FetchXml abfragen
GET [Organization URI]/api/data/v9.2/asyncoperations?$apply=filter((statecode eq 1))/groupby((statecode,statuscode,operationtype),aggregate($count as count))
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
Darauf sollten Sie bei den Ergebnissen achten:
Angehaltene Aufträge quantifizieren: Die Abfrage zielt speziell auf Aufträge ab, die angehalten (
statecode
=1
) sind. Die Ergebnisse geben Ihnen eine Zählung aller dieser Aufträge, kategorisiert nach ihrenstatuscode
undoperationtype
.Aufschlüsselung der Vorgangstypen: Die Anzahl der ausgesetzten Aufträge gruppiert
operationtype
und zeigt Ihnen, welche Arten von Vorgängen am häufigsten in einem Suspendierter Status vorkommen.Identifizieren potenzieller Engpässe: Eine hohe Anzahl ausgesetzter Aufträge über längere Zeiträume kann auf Ressourcenbeschränkungen, Abhängigkeiten von anderen Prozessen oder Systemen-Fehlkonfigurationen zurückzuführen sein.
Kapazitäts- und Ressourcenmanagement: Wenn sich bestimmte Jobs dauerhaft im Status Angehalten befinden, könnte dies darauf hindeuten, dass dem System die notwendigen Ressourcen zur effizienten Verarbeitung dieser Aufträge fehlen.
Systemzustandsprüfung: Die Aufträge im Status Angehalten dienen als Integritätsindikator. Ein fehlerfreies System sollte idealerweise nur minimale Aufträge in einem Angehaltenen Status haben oder zumindest einen schnellen Wechsel von Angehalten zur aktiven Verarbeitung zeigen.
Workflow-Effizienz: Die Ergebnisse können Aufschluss über die Workflow-Effizienz geben. Wenn ein bestimmter
operationtype
eine hohe Anzahl angehaltener Aufträge aufweist, kann dies auf Ineffizienzen oder Optimierungsbedarf innerhalb dieses Workflows hinweisen.
Workflows nach Anzahl
Diese Abfrage bietet eine detaillierte Aufschlüsselung von Workflow-bezogenen Aufträgen, gefiltert nach einem operationtype
Wert für Workflows. Nutzen Sie die Abfrageergebnisse, um einen umfassenden Überblick über Workflow-Aufträge zu erhalten, Systemressourcen effektiver zu verwalten und sicherzustellen, dass Workflows reibungslos und effizient ablaufen.
GET [Organization URI]/api/data/v9.2/asyncoperations?$apply=filter((operationtype eq 10))/groupby((statecode,statuscode,operationtype),aggregate($count as count))
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
Darauf sollten Sie bei den Ergebnissen achten:
Workflowspezifische Aufträge: Der
operationtype
=10
Filter beschränkt die Ergebnisse auf Workflow-Aufträge. Sie können sehen, wie viele Aufträge mit Workflows verknüpft sind und welchen aktuellen Status sie haben. Sie können diese Beispielabfrage auch auf andere Arten von Vorgängen anwenden. Weitere Informationen zu VorgangstypenAuftragsverteilung: Die
statecode
zeigt Ihnen den aktuellen Status dieser Workflow-Aufträge, z. B. ob sie Bereit Angehalten, Gesperrt oder Abgeschlossen sind.Statuscode-Analyse: Die
statuscode
kann spezifische Einblicke zum Grund für den aktuellen Status eines Auftrags geben. Sie könnte beispielsweise angeben, ob ein Auftrag Warten auf Ressourcen, Warten, In Bearbeitung, Pausiert, Wird abgebrochen, Erfolgreich, Fehlgeschlagen oder Abgebrochen ist.Anzahl jeder Kategorie: Die Gesamtzahl der Aufträge für jede
statecode
undstatuscode
Kombination. Dies hilft bei der Identifizierung der häufigsten Ergebnisse von Workflow-Vorgängen.Identifizieren gemeinsamer Ergebnisse: Mit den nach Anzahl in absteigender Reihenfolge sortierten Ergebnissen können Sie die häufigsten Ergebnisse oder Engpässe bei der Workflow-Verarbeitung identifizieren.
Fehlerbehebung und Optimierung: Hohe Zahlen im Status Fehlgeschlagen oder im Status Unterbrochen können Bereiche hervorheben, in denen Arbeitsabläufe möglicherweise fehlschlagen oder stecken bleiben, was darauf hindeutet, dass eine Fehlerbehebung oder Prozessoptimierung erforderlich ist.
Leistungsmetriken: Wenn Sie wissen, welche Workflows am häufigsten vorkommen und wie sie auf verschiedene Zustände verteilt sind, können Sie die Leistung und Zuverlässigkeit des Workflow-Management-Systems beurteilen.
Kapazitätsplanung: Eine konstant hohe Anzahl an In Bearbeitung oder Wartenden Workflows könnte darauf hindeuten, dass mehr Ressourcen erforderlich sind, um die Last zu bewältigen, oder es besteht die Notwendigkeit, die Workflow-Ausführungsumgebung zu optimieren.
Workflow-Management: Die Abfrageergebnisse können Administratoren dabei helfen, Workflows effektiver zu verwalten, z. B. zu entscheiden, welche Workflows priorisiert werden sollen, oder Workflows zu identifizieren, die optimiert oder deaktiviert werden können.
Systemzustandsprüfung: Die Gesamtergebnisse können als Zustandsprüfung für Ihr Workflow-System dienen und anzeigen, ob das System optimal funktioniert oder ob es Bereiche gibt, die Aufmerksamkeit erfordern.
Aufträge, die darauf warten, dass Systemressourcen verfügbar werden
Verwenden Sie diese Abfrage, um eine detaillierte Analyse von Aufträgen aus der Tabelle AsyncOperation
abzurufen, die sich in einem bestimmten Bereitschaftszustand befinden, aber aufgrund der Nichtverfügbarkeit von Systemressourcen auf die Ausführung warten. Diese Abfrage kann Faktoren identifizieren, die zur Langsamkeit beitragen, und Entscheidungen für mehr Effizienz und eine bessere Bearbeitung des Rückstands treffen.
GET [Organization URI]/api/data/v9.2/asyncoperations?$apply=filter((statecode eq 0 and statuscode eq 0))/groupby((statecode,statuscode,operationtype),aggregate($count as count))
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
Darauf sollten Sie bei den Ergebnissen achten:
Filtern nach bereiten Aufträgen, die auf Ressourcen warten: Einschränken der Ergebnisse bei
statecode
=0
undstatuscode
=0
Filtern für Aufträge, die sich in einem bereiten Zustand und Warten auf Ressourcen befinden. Diese Kombination weist auf Aufträge hin, die in der Warteschlange stehen und zur Ausführung bereit sind, sich aber in der Warteschleife befinden.Optimierung der Auftragsplanung: Das Erkennen von Mustern in der Auftragsbereitschaft und bei Wartezeiten kann zu Verbesserungen bei der Auftragsplanung und möglicherweise zu einer ausgewogeneren Verteilung der Systemlast führen.
Identifizieren zugrunde liegender Probleme: In einigen Fällen sind Aufträge, die auf Ressourcen warten, möglicherweise nicht nur ein Ressourcenproblem, sondern können auch ein Hinweis auf zugrunde liegende Probleme wie Deadlocks oder ineffiziente Ressourcensperrmechanismen sein.
Abfragen zur Dateispeicherung
Abhängig von der Größe der Datenspalte der AsyncOperation
Tabelle können die Daten in dieser Spalte im Dateispeicher gespeichert werden. Die DataBlobId-Spalte hat einen Wert, wenn die Zeile Dateispeicher verwendet. Um Platz zu sparen, möchten Sie diese Datensätze möglicherweise identifizieren und löschen. Verwenden Sie die folgenden Abfragen, um diese Datensätze zu ermitteln
AsyncOperation Dateispeicher DataBlobId-Anzahl
Verwenden Sie diese Abfrage, um die Anzahl der Datensätze in der AsyncOperation
-Tabelle zu zählen, in der die datablobid
-Spalte nicht null ist.
GET [Organization URI]/api/data/v9.2/asyncoperations?$apply=filter((datablobid ne null))/aggregate($count as FileStorageCount)
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Darauf sollten Sie bei den Ergebnissen achten:
Auswirkungen auf die Datenspeicherung: Möglicherweise möchten Sie die Datensätze löschen, indem Sie den Dateispeicher verwenden, um Platz zu sparen. Dies ist daher hilfreich zu wissen. Große Zahlen deuten möglicherweise darauf hin, dass diese Blobs viel Platz beanspruchen, was für die Verwaltung der Datenbankgröße wichtig sein kann.
Überlegungen zur Systemleistung: Wenn die
FileStorageCount
unerwartet hoch ist, möchten Sie möglicherweise weitere Maßnahmen ergreifen, z. B. Massenlöschung und Bereinigung.
AsyncOperations nicht im Blobspeicher
Verwenden Sie diese Abfrage, um die Anzahl der Datensätze in der AsyncOperation
Tabelle zu zählen, in der das datablobid
Feld NULL
ist.
GET [Organization URI]/api/data/v9.2/asyncoperations?$apply=filter((datablobid eq null))/aggregate($count as DBCount)
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Darauf sollten Sie bei den Ergebnissen achten:
Grundlegendes zu asynchronen Vorgängen, die nicht in Blob Storage enthalten sind: Das
DBCount
Ergebnis gibt das Volumen der asynchronen Vorgänge an, denen keine Datenblobs zugeordnet sind. Dies zeigt uns den Speicherstatus, wenn die Blobs nicht berücksichtigt werden.Ineffizienzen erkennen Sofern nicht beabsichtigt, kann eine hohe Anzahl hier darauf hindeuten, dass eine Bereinigung geplant und eine Massenlöschung durchgeführt werden muss. Eine niedrige Anzahl im Blob-Speicher und eine hohe Anzahl würde dies hier als den primären Volumenteilnehmer bezeichnen.
Suchen Sie mithilfe der Dateispeicherung nach Auftragsnamen
Die Ergebnisse dieser Abfrage zeigen die Auftragstypen, den Namen der Aufträge und die Häufigkeit, mit der dieser Auftrag in der Tabelle vorhanden ist und Dateispeicher verbraucht. Verwenden Sie dies, um die spezifischen Auftragsnamen zu identifizieren, die den größten Einfluss auf die Dateinutzung haben, und erstellen Sie einen Massenlöschauftrag für Datensätze mit diesem Namen.
Dies ermöglicht die Identifizierung der spezifischen Auftragsnamen, die den größten Einfluss auf den Dateiverbrauch haben. Dadurch kann der Kunde einen Massenlöschvorgang für diesen bestimmten Auftrag einleiten, indem er auf dessen Namen abzielt.
Diese Abfrage sortiert nicht nach der jobs
-Spalte absteigend. Möglicherweise möchten Sie stattdessen FetchXml mit Web-API verwenden. Daten mithilfe von FetchXml abfragen
GET [Organization URI]/api/data/v9.2/asyncoperations?$apply=filter((datablobid ne null))/groupby((operationtype,name,friendlymessage),aggregate($count as jobs))
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
AsyncOperation-Dateigröße und Datensatzanzahl
Verwenden Sie diese Abfrage, um die Gesamtdateigröße und die Datensatzanzahl für Systemaufträge nach Zustand, Status und besitzender Erweiterung abzurufen.
In diesem Beispiel wird das codierte FetchXml verwendet, um die Abfrage mithilfe der Web-API zu senden. Daten mithilfe von FetchXml abfragen
GET [Organization URI]/api/data/v9.2/asyncoperations?fetchXml=%3Cfetch%20aggregate%3D%27true%27%3E%20%3Centity%20name%3D%27asyncoperation%27%3E%20%3Cattribute%20name%3D%27owningextensionid%27%20alias%3D%27owningextension%27%20groupby%3D%27true%27%20%2F%3E%20%3Cattribute%20name%3D%27statecode%27%20alias%3D%27statecode%27%20groupby%3D%27true%27%20%2F%3E%20%3Cattribute%20name%3D%27statuscode%27%20alias%3D%27statuscode%27%20groupby%3D%27true%27%20%2F%3E%20%3Cattribute%20name%3D%27operationtype%27%20alias%3D%27operationtype%27%20groupby%3D%27true%27%20%2F%3E%20%3Clink-entity%20name%3D%27fileattachment%27%20to%3D%27datablobid%27%20from%3D%27fileattachmentid%27%20alias%3D%27fileattachment%27%20link-type%3D%27inner%27%3E%20%3Cattribute%20name%3D%27filesizeinbytes%27%20alias%3D%27TotalSize%27%20aggregate%3D%27sum%27%20%2F%3E%20%3Cattribute%20name%3D%27filesizeinbytes%27%20alias%3D%27RecordCount%27%20aggregate%3D%27count%27%20%2F%3E%20%3Cfilter%3E%20%3Ccondition%20attribute%3D%27objectidtypecode%27%20operator%3D%27eq%27%20value%3D%274700%27%20%2F%3E%20%3C%2Ffilter%3E%20%3Corder%20alias%3D%27TotalSize%27%20descending%3D%27true%27%20%2F%3E%20%3C%2Flink-entity%3E%20%3C%2Fentity%3E%20%3C%2Ffetch%3E
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
Darauf sollten Sie bei den Ergebnissen achten:
- Datensatzanzahl:
RecordCount
gibt Ihnen an, wie viele Datensätze für jede Gruppierung von Systemauftragsdatensätzen zurückgegeben werden. Dadurch erhalten Sie eine Vorstellung davon, wie viele asynchrone Vorgänge ausgeführt werden und welche Typen am häufigsten vorkommen. - Gesamtdateigröße:
TotalSize
gibt Ihnen die Datenmenge an, die diese Vorgänge verarbeiten. Auf diese Weise können Sie feststellen, ob ungewöhnlich große Dateien vorhanden sind, die die Systemleistung beeinträchtigen könnten. - Gruppierung nach besitzenden Entitäten: Die Abfrage gruppiert Ergebnisse nach
owningextensionid
,owningextensionidname
,statecode
,statuscode
undoperationtype
. Sehen Sie sich diese Gruppierungen an, um festzustellen, welche Erweiterungen die meiste Aktivität generieren und ob bestimmte Vorgangstypen vorherrschen. - Betriebszustände und -Status: Die Einbeziehung von
statecode
undstatuscode
in die Gruppierung hilft Ihnen dabei, den aktuellen Status und Status dieser Vorgänge zu bestimmen, z. B. welche sind ausstehend, in Bearbeitung oder abgeschlossen. - Sortierung nach Gesamtgröße: Da die Ergebnisse in absteigender Reihenfolge nach
TotalSize
geordnet sind, achten Sie auf die obersten Ergebnisse, da diese die Vorgänge hervorheben, die den meisten Speicher verbrauchen. Dies könnte wichtig sein, um potenzielle Bereiche für Optimierung oder Bereinigung zu identifizieren.
Systemaufträge löschen
Sie können Systemjobs in der Anwendung oder im Code wie jede andere Tabelle löschen, wenn Sie die nötigen Rechte dazu haben.
Hinweis
Bei der Registrierung von asynchronen Plugins gibt es die Möglichkeit, erfolgreiche Operationen automatisch zu löschen. Die Verwendung wird empfohlen. Erfahren, wie ein Plug-In geschrieben wird
Die gängige Praxis ist es, einen wiederkehrenden Massenlöschauftrag zu erstellen, der die erfolgreichen Aufträge löscht. Erfahren, wie ein umfangreicher Betrag von bestimmten, gezielten Massenlöschung von Daten entfernt wird
Verwalten von Systemauftragsstatus
Der Status des Systemauftrags ändert sich mehrmals, bis der Vorgang abgeschlossen ist. Nachfolgend sind die StateCode
- und StatusCode
-Optionen aufgeführt, die die verfügbaren Werte für Zustand und Statusgrund darstellen:
StateCode-Wert | StateCode-Beschriftung | StatusCode-Wert | StatusCode-Beschriftung |
---|---|---|---|
0 |
Bereit | 0 |
Auf Ressourcen wird gewartet |
1 |
Angehalten | 10 |
Es wird gewartet |
2 |
Gesperrt | 20 |
In Bearbeitung |
2 |
Gesperrt | 21 |
Wird angehalten |
2 |
Gesperrt | 22 |
Wird storniert |
3 |
Abgeschlossen | 30 |
Erfolgreich |
3 |
Abgeschlossen | 31 |
Fehler |
3 |
Abgeschlossen | 32 |
Abgesagt |
Sie können den Status von Systemaufträgen in der Anwendung ändern, indem Sie zu Einstellungen > System > Systemauftrag navigieren und die im Menü Weitere Aktionen verfügbaren Befehle verwenden.
Hinweis
Jede Aktion, die Sie über diese Benutzeroberfläche ausführen können, kann auch per Code durchgeführt werden. Sie können keine Abbruch-, Halte- oder Fortsetzungsvorgänge für von der Plattform generierte Systemaufträge durchführen. Mehr über Vorgangstypen erfahren
Zusammen mit den Optionen zur Verwaltung von Ansichten stehen die folgenden Optionen zur Verfügung, um Systemaufträge zu verwalten:
Option | Beschreibung |
---|---|
Entf | Verwenden des s Befehls. Löscht einen Systemauftrag |
Massenlöschung | Verwenden des Menüs Weitere Aktionen. Öffnet einen Assistenten, um Bedingungen zu definieren und einen neuen Systemauftrag Massenlöschung zu erstellen, um die passenden Systemaufträge zu löschen. |
Abbrechen | Verwenden des Menüs Weitere Aktionen. Storniert den Systemauftrag. |
Weiter | Verwenden des Menüs Weitere Aktionen. Setzt einen angehaltenen Systemauftrag fort. |
Später durchführen | Verwenden des Menüs Weitere Aktionen. Terminiert einen Systemauftrag neu |
Anhalten | Verwenden des Menüs Weitere Aktionen. Pausiert einen Systemauftrag. |
Ob der angeforderte Vorgang eintritt, hängt vom Zustand des Systemauftrags ab. Beispielsweise können Sie einen Auftrag, der bereits abgeschlossen ist oder noch nicht gestartet wurde, nicht pausieren. Die folgende Tabelle beschreibt die Bedingungen für jede Änderung und was passiert, wenn sie ausgewählt wird.
Option | Gültige StateCode-Werte | Ändern |
---|---|---|
Entf | Beliebig | Systemauftrag wurde gelöscht |
Abbrechen | 0 (Bereit) 1 (Angehalten) 2 (Gegesperrt) |
StateCode geändert auf 3 (Abgeschlossen) und StatusCode geändert auf 32 (Storniert) |
Weiter | 1 (Angehalten) |
StateCode geändert auf 0 (Bereit) |
Später durchführen | 0 (Bereit) 2 (Gesperrt) |
Der Zurückstellen eines Auftrags-Dialog fordert den Benutzer auf, den Datums-Zeitwert einzugeben, um den Systemauftrag zu verschieben. Lernen Sie, Systemaufträge zu verschieben |
Anhalten | 2 (Gegesperrt) |
StateCode geändert auf 1 (Unterbrochen) |
Verschieben von Systemaufträgen
Die Spalte PostPoneUntil
enthält einen Datumswert, wann der Systemjob den Status von 1
(Angehalten) auf 0
(Bereit) ändert. Die Spalten PostPoneUntil
, StateCode
und StatusCode
sind die einzigen AsyncOperation
Tabellenspalten, die für die Aktualisierung unterstützt werden.
Siehe auch
Schreiben eines Plug-Ins
Schreiben von Plug-Ins zur Erweiterung von Geschäftsprozessen
Hinweis
Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)
Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).