Freigeben über


Empfehlungen für die Entwicklung von Hintergrundaufträgen

Gilt für diese Empfehlungen bezüglich der Power Platform Zuverlässigkeits-Checkliste:

RE:05 Stärken Sie die Belastbarkeit Ihrer Workload durch die Implementierung der Fehlerbehandlung und der Behandlung vorübergehender Fehler. Integrieren Sie Funktionen zur Handhabung von Komponentenausfällen und vorübergehenden Fehlern in die Lösung.

In diesem Handbuch werden die Empfehlungen zur Entwicklung von Hintergrundaufträgen beschrieben. Hintergrundaufträge werden automatisch ausgeführt, ohne dass eine Benutzerinteraktion erforderlich ist. Viele Anwendungen erfordern Hintergrundaufträge, die unabhängig von der Benutzeroberfläche (UI) ausgeführt werden.

Beispiele für Hintergrundaufträge sind Batchaufträge, intensive Verarbeitungsaufgaben und Prozesse mit langer Laufzeit, z. B. Workflows. Die Anwendung startet den Auftrag und verarbeitet interaktive Anfragen von Benutzenden.

Beispielsweise muss eine Anwendung möglicherweise eine Zusammenfassung erstellen und Stimmungen und wichtige Punkte aus den von Benutzenden hochgeladenen Dokumenten extrahieren. Um die KI-Aktionen auszuführen und die Zusammenfassung und die wichtigsten Punkte in der Datenbank zu speichern, kann ein Hintergrundauftrag ausgeführt werden. Der Benutzende muss nicht warten, bis der Vorgang abgeschlossen ist. Ein weiteres Beispiel: Ein Benutzender reicht möglicherweise einen Ausgabenanspruch ein. Dadurch wird ein Hintergrund-Workflow gestartet, der den Ausgabenanspruch verarbeitet und zur Genehmigung einreicht. Während der Hintergrundauftrag ausgeführt wird, kann der Benutzende mit der Einreichung eines weiteren Ausgabenanspruchs fortfahren oder die Anwendung verlassen. Nachdem der Hintergrundauftrag abgeschlossen ist, wird dem Benutzenden eine E-Mail gesendet, um zu bestätigen, dass der Ausgabenanspruch zur Genehmigung übermittelt wurde.

Hintergrundaufträge helfen dabei, die Belastung der Anwendungs-UI zu minimieren, was die Verfügbarkeit verbessert und die interaktive Antwortzeit verkürzt.

Wichtige Designstrategien

Um zu entscheiden, welche Aufgabe als Hintergrundauftrag ausgewiesen werden soll, berücksichtigen Sie, ob die Aufgabe ohne Benutzerinteraktion ausgeführt wird und ob die Benutzeroberfläche auf den Abschluss der Aufgabe warten muss. Aufgaben, bei denen der Benutzende oder die Benutzeroberfläche während ihrer Ausführung warten muss, sind in der Regel keine geeigneten Hintergrundaufträge.

Arten von Hintergrundaufträgen

Einige Beispiele für Hintergrundaufträge sind:

  • Ressourcenintensive Aufträge, deren Ausführung viel Zeit in Anspruch nimmt, z. B. das Ausführen einer Reihe von Transaktionen.

  • Batchaufträge, beispielsweise nächtliche Datenaktualisierungen oder geplante Verarbeitungen.

  • Workflows mit langer Laufzeit, wie etwa die Auftragserfüllung oder die Bereitstellung von Diensten und Systemen.

  • Workflows, die eine asynchrone Zusammenarbeit erfordern, wie etwa Genehmigungen.

  • Verarbeitung sensibler Daten, bei der die Aufgabe zur Verarbeitung an einen sichereren Ort übertragen wird. Beispielsweise möchten Sie möglicherweise keine vertraulichen Daten in einer Web-App verarbeiten. Stattdessen können Sie ein Muster wie das Gatekeeper-Muster verwenden, um die Daten an einen isolierten Hintergrundprozess zu übertragen, der Zugriff auf geschützten Speicher hat.

Trigger

Hintergrundaufträge starten mit:

  • Ereignisgesteuerte Auslöser: Ein Ereignis, entweder eine Benutzeraktion in der Anwendung oder ein Ereignis, das bei einer Datenquelle auftritt, löst die Aufgabe aus.

  • Zeitplangesteuerte Auslöser: Ein auf einem Timer basierender Zeitplan ruft die Aufgabe auf. Der Auftrag kann regelmäßig oder als einmalige Ausführung geplant werden.

Ereignisgesteuerte Auslöser

Eine Aktion löst einen ereignisgesteuerten Aufruf aus, der die Hintergrundaufgabe startet. Beispiele für ereignisgesteuerte Auslöser sind:

  • Die Benutzeroberfläche oder ein anderer Auftrag löst den Hintergrundauftrag aus und übergibt Daten von der ausgeführten Aktion an den Hintergrundauftrag. Beispielsweise reicht ein Benutzender einen Ausgabenanspruch über ein Formular ein und die Formulardetails werden zur Verarbeitung an den Hintergrundauftrag übergeben.

  • Die Benutzeroberfläche oder ein anderer Auftrag speichert oder aktualisiert einen im Speicher befindlichen Wert. Der Hintergrundauftrag überwacht den Speicher und erkennt Änderungen, wie z. B. das Hinzufügen neuer Werte oder das Ändern vorhandener Werte, und löst den Hintergrundauftrag basierend auf dieser Änderung aus.

  • Die Benutzeroberfläche oder ein anderer Auftrag stellt eine Anforderung an ein Endpunkt, beispielsweise eine HTTPS-URI oder eine API, die als Webdienst verfügbar gemacht wird. Im Rahmen der Anfrage überträgt die UI bzw. der Auftrag die Daten, die die Hintergrundaufgabe benötigt. Der Endpunkt oder Webdienst ruft die Hintergrundaufgabe auf, die die Daten als Eingabe verwendet.

Andere Beispiele für ereignisgesteuerte Trigger sind ein Formular, das in einer Anwendung gesendet wird, eine neue Zeile, die dem Datenspeicher hinzugefügt wird, ein Triggerausdruck in einem Agenten, der das Thema startet, das einen Flow aufruft, der Wert eines Felds, das sich im Datenspeicher ändert, eine E-Mail mit einem bestimmten Betreff oder von einem bestimmten Absender, die im Posteingang eintrifft, und eine Datei, die in einen Dateispeicherort hochgeladen wird.

Verwenden Sie Auslöserbedingungen, um Ihre Workflows zu optimieren und die Anzahl unnötiger Ausführungen zu reduzieren. Auslöserbedingungen legen mehrere Bedingungen fest, die erfüllt sein müssen, bevor ein Workflow ausgelöst wird.

Anmerkung

Stellen Sie sicher, dass Sie Auslöserbedingungen verwenden, um Endlosschleifen zu vermeiden, wenn Sie als Teil des Workflows die Datenquelle ändern, die den Workflow startet. Beispielsweise kann die Anwendung Felder in einer Microsoft Dataverse-Tabellenzeile ändern und der Workflow kann auf der Grundlage dieser geänderten Felder zusätzliche Abfragen ausführen und so dieselbe Zeile weiter ändern. Verwenden Sie Auslöserbedingungen, um den Workflow nur zu starten, wenn von der Anwendung geänderte Felder aktualisiert werden, nicht jedoch andere Felder.

Zeitplangesteuerte Auslöser

Ein Timer löst einen zeitplangesteuerten Aufruf aus, der die Hintergrundaufgabe startet. Beispiele für zeitplangesteuerte Auslöser sind:

  • Ein Hintergrundauftrag wird täglich oder wöchentlich ausgeführt und führt eine Reihe von Aktionen aus.

  • Ein separater Prozess oder eine Anwendung startet einen Timer, der die Hintergrundaufgabe nach einer Zeitverzögerung oder zu einem bestimmten Zeitpunkt aufruft.

Weitere Beispiele für Aufgaben, die sich für einen zeitplangesteuerte Aufruf eignen, sind Batchverarbeitungsroutinen (wie etwa die Aktualisierung von Listen mit verwandten Produkten für die Kundschaft auf der Grundlage ihres jüngsten Verhaltens), routinemäßige Datenverarbeitungsaufgaben (wie etwa die Generierung kumulierter Ergebnisse), Datenanalysen für Tagesberichte, die Bereinigung der Datenaufbewahrung und Prüfungen der Datenkonsistenz.

Rückgabeergebnisse

Hintergrundaufträge werden asynchron in einem separaten Prozess von der Benutzeroberfläche oder dem Prozess ausgeführt, der den Hintergrundauftrag aufgerufen hat. Im Idealfall sind Hintergrundaufträge Auslösen und Löschen-Vorgänge. Ihr Runtime-Fortschritt beeinflusst weder die Benutzeroberfläche noch den aufrufenden Prozess, was bedeutet, dass der aufrufende Prozess nicht auf die Fertigstellung der Aufgaben wartet. Die Benutzeroberfläche und der aufrufende Prozess können nicht erkennen, wann die Aufgabe endet.

Wenn Sie möchten, dass eine Hintergrundaufgabe mit der aufrufenden Aufgabe kommuniziert, um den Fortschritt oder die Fertigstellung anzuzeigen, müssen Sie einen Mechanismus implementieren, beispielsweise den folgenden:

  • Schreiben Sie einen Statusindikatorwert in einen Speicher, auf den die Benutzeroberfläche oder die Anruferaufgabe zugreifen kann, die diesen Wert überwachen oder überprüfen kann. Andere Daten, die die Hintergrundaufgabe an den Anrufer zurückgibt, können im selben Speicher abgelegt werden.

  • Stellen Sie eine API oder Endpunkt aus der Hintergrundaufgabe bereit, auf die die Benutzeroberfläche oder der Anrufer zugreifen kann, um Statusinformationen abzurufen. Die Antwort kann die Daten enthalten, die die Hintergrundaufgabe an den Anrufer zurückgibt.

  • Konfigurieren Sie die Hintergrundaufgabe so, dass sie mit dem Status oder den von ihr verarbeiteten Daten an die Benutzeroberfläche antwortet.

Koordination

Hintergrundaufgaben können komplex sein und zur Ausführung mehrerer Aufgaben erfordern. In diesen Szenarien ist es üblich, die Aufgabe in kleinere, diskrete Schritte oder Unteraufgaben aufzuteilen, die von mehreren Verbrauchenden ausgeführt werden können. Mehrstufige Aufträge sind effizienter und flexibler, da einzelne Schritte oft in mehreren Aufträgen wiederverwendet werden können. Außerdem können Sie die Reihenfolge der Schritte ganz einfach hinzufügen, entfernen oder ändern.

Das Koordinieren mehrerer Aufgaben und Schritte kann eine Herausforderung sein, aber es gibt drei gängige Muster, die Ihnen bei der Lösung helfen können:

  • Zerlegen Sie eine Aufgabe in mehrere wiederverwendbare Schritte. Eine Anwendung muss möglicherweise verschiedene Aufgaben mit unterschiedlicher Komplexität für die von ihr verarbeiteten Informationen ausführen. Ein einfacher, aber unflexibler Ansatz zur Implementierung einer solchen Anwendung besteht darin, diese Verarbeitung als monolithisches Modul durchzuführen. Dieser Ansatz verringert jedoch wahrscheinlich die Möglichkeiten, den Code umzugestalten, zu optimieren oder wiederzuverwenden, wenn die Anwendung Teile derselben Verarbeitung an anderer Stelle erfordert.

  • Verwalten Sie die Orchestrierung der Schritte für eine Aufgabe. Eine Anwendung kann Aufgaben ausführen, die aus vielen Schritten bestehen, von denen einige Remotedienste aufrufen oder auf Remoteressourcen zugreifen können. Manchmal sind die einzelnen Schritte unabhängig voneinander, werden aber von der Anwendungslogik orchestriert, die die Aufgabe implementiert.

  • Verwalten Sie die Wiederherstellung für fehlgeschlagene Aufgabenschritte. Wenn einer oder mehrere Schritte fehlschlagen, muss eine Anwendung möglicherweise die von einer Reihe von Schritten ausgeführte Arbeit rückgängig machen, die zusammen einen letztendlich konsistenten Vorgang definieren.

Überlegungen zur Resilienz

Erstellen Sie belastbare Hintergrundaufgaben, um zuverlässige Dienste für die Anwendung bereitzustellen. Berücksichtigen Sie beim Planen und Entwerfen von Hintergrundaufgaben die folgenden Punkte:

  • Hintergrundaufgaben müssen Neustarts reibungslos bewältigen, ohne Daten zu beschädigen oder Inkonsistenzen in die Anwendung einzuführen. Für lang andauernde oder mehrstufige Aufgaben sollten Sie die Verwendung von Prüfpunkten in Erwägung ziehen. Verwenden Sie Prüfpunkte, um den Status von Aufträgen im dauerhaften Speicher oder als Nachrichten in einer Warteschlange zu speichern, und konfigurieren Sie eine Wiederholungslogik für den Fall unerwarteter Fehler bei einer Aktion.

  • Wenn Sie Warteschlangen zur Kommunikation mit Hintergrundaufgaben verwenden, können die Warteschlangen als Puffer fungieren, um Anforderungen zu speichern, die an die Aufgaben gesendet werden, während die Anwendung einer höheren Belastung als üblich ausgesetzt ist. Die Aufgaben können in weniger ausgelasteten Zeiten mit der Benutzeroberfläche Schritt halten, und Neustarts blockieren die Benutzeroberfläche nicht.

Überlegungen zu Skalierung und Leistung

Hintergrundaufgaben müssen ausreichende Leistung bieten, um sicherzustellen, dass sie die Anwendung nicht blockieren oder den Betrieb verzögern, wenn das System stark ausgelastet ist. Normalerweise verbessert sich die Leistung, wenn Sie die Compute-Instanzen skalieren, die die Hintergrundaufgaben hosten. Berücksichtigen Sie beim Planen und Entwerfen von Hintergrundaufgaben die folgenden Punkte in Bezug auf Skalierbarkeit und Leistung:

  • Hintergrundaufträge können die Benutzererfahrung beeinträchtigen, wenn dem Benutzenden die Ergebnisse der Hintergrundaufgaben präsentiert werden. Bei Hintergrundaufträgen muss der Benutzende beispielsweise möglicherweise auf eine Benachrichtigung warten, die Seite aktualisieren oder den Status der Aufgabe manuell prüfen. Diese Verhaltensweisen können die Komplexität der Benutzerinteraktion erhöhen und sich negativ auf das Benutzererlebnis auswirken. Erwägen Sie Alternativen zur Datenrücksendung an die Benutzeroberfläche, z. B. das Senden einer Benachrichtigung per E-Mail oder Microsoft Teams oder die Einbeziehung der Möglichkeit, in Ihrer Benutzeroberfläche nach Statusaktualisierungen zu suchen. In unserem Beispiel zum Einreichen von Ausgabenformularen könnten Sie, anstatt den Status an die Benutzeroberfläche zurückzusenden, eine Seite in der Anwendung haben, die alle eingereichten Ausgabenformulare mit ihrem Status auflistet und die Möglichkeit bietet, eine Aktualisierung auszulösen.

  • Hintergrundaufträge können Herausforderungen für die Datensynchronisierung und Prozesskoordination darstellen, insbesondere wenn die Hintergrundaufgaben voneinander oder von anderen Datenquellen abhängig sind. Hintergrundaufträge können sich beispielsweise um die Bearbeitung von Datenkonsistenzproblemen, Race Conditions, Deadlocks oder Timeouts kümmern.

  • Um Leistungsverluste unter Last zu vermeiden, können Sie eine Logik implementieren, damit kein einzelner Punkt der Verarbeitungskette einen Engpass verursacht. Berücksichtigen Sie weitere Einschränkungen, beispielsweise den maximalen Durchsatz von Workflow-Aktionen, Speicher und anderen Diensten, auf die die Anwendung und die Hintergrundaufgaben angewiesen sind.

Nachteil: Hintergrundaufträge führe weitere Komponenten und Abhängigkeiten zum System hinzu, was die Komplexität und die Wartungskosten der Lösung erhöhen kann. Beispielsweise erfordern Hintergrundaufträge möglicherweise einen separaten Überwachungsdienst und Wiederholungsmechanismus.

Power Platform: schnellere Durchführung

In den folgenden Abschnitten werden die Dienste beschrieben, die Sie zum Hosten, Ausführen, Konfigurieren und Verwalten von Hintergrundaufträgen verwenden können.

Power Automate

Power Automate-Cloud-Flows sind Workflows, die in der Cloud ausgeführt werden. Es kann sich dabei um automatisierte Flows handeln, die durch ein Ereignis ausgelöst werden, beispielsweise durch das Eintreffen einer E-Mail von einer bestimmten Person. Dabei kann es sich um Direktflows handeln, die Sie mit einem Mausklick starten, beispielsweise eine Erinnerung an Ihr Team, die Sie von Ihrem Mobilgerät aus senden. Es kann sich dabei um geplante Flows handeln, die zu einer bestimmten Zeit ausgeführt werden, wie z. B. ein täglicher Datenupload in SharePoint oder eine Datenbank. Sie können sich wiederholende Aufgaben auch von Ihrem Desktop- oder mobilen Gerät aus automatisieren.

Machen Sie sich mit den Grenzen automatisierter, geplanter und Direktflows hinsichtlich Durchsatz, Anforderungen, Parallelität, Schleifen und Debatching vertraut. Stellen Sie sicher, dass Sie diese Beschränkungen bei der Gestaltung Ihres Workflows berücksichtigen.

Reduzieren Sie das Risiko durch Planung der Fehlerbehandlung.

Im Folgenden finden Sie einige Beispiele dafür, wo Sie Power Automate Flows zum Ausführen von Hintergrundaufträgen verwenden können:

Microsoft Dataverse

Berechnete Microsoft Dataverse berechnete Spalten und Rollups:

  • Formelspalten sind Spalten, die einen berechneten Wert in einer Microsoft Dataverse-Tabelle anzeigen.

  • Berechnete Spalten automatisieren manuelle Berechnungen, die in Ihrem Geschäftsprozess verwendet werden. Beispielsweise möchte ein Vertriebsmitarbeiter möglicherweise den gewichteten Umsatz für eine Verkaufschance kennen, die auf dem geschätzten Umsatz einer Verkaufschance multipliziert mit der Wahrscheinlichkeit basiert. Oder er möchte automatisch einen Rabatt anwenden, wenn der Auftrag größer als ein bestimmter Betrag ist. Eine berechnete Spalte kann Werte enthalten, wie das Ergebnis einer einfachen Berechnung oder bedingte Vorgänge, wie größer als oder If-Else.

  • Rollupspalten helfen Benutzern, Einblicke in die Daten zu erhalten, indem Sie Schlüsselunternehmensmetriken überwachen. Eine Rollupspalte enthält einen Gesamtwert, der über die Zeilen berechnet wird, die mit einer bestimmten Zeile verknüpft sind. Dies umfasst reguläre Tabellen und Aktivitätstabellen wie E-Mails und Termine. In den komplexeren Szenarien können Sie Daten über die Hierarchie von Zeilen aggregieren. Wenn Sie Administrator oder Anpasser sind, können Sie Rollupspalten definieren, mithilfe der Anpassungstools in Power Apps, ohne dass hierfür Code geschrieben werden muss.

Hintergrundvorgänge können Anfragen senden, die Dataverse asynchron verarbeitet werden. Hintergrundvorgänge sind nützlich, wenn Sie keine Verbindung aufrechterhalten wollen, während eine Anfrage ausgeführt wird.

Plug-Ins sind benutzerdefinierte Ereignishandler, die als Reaktion auf ein bestimmtes Ereignis ausgeführt werden, das während der Verarbeitung eines Microsoft Dataverse-Datenvorgangs ausgelöst wird.

Microsoft Dataverse bietet außerdem eine leistungsstarke Lösung zur Erreichung einer effizienteren Datenarchitektur und zur Reduzierung der clientseitigen Workload durch Low-Code-Plug-Ins. Diese Plug-Ins sind wiederverwendbare Echtzeit-Workflows, die einen bestimmten Satz von Befehlen in Dataverse ausführen, serverseitig ausgeführt und durch personalisierte Ereignishandler ausgelöst werden.

Zuverlässigkeitscheckliste

Lesen Sie die vollständigen Empfehlungen.