Insight · ·

Hintergrundjobs sind Produktfunktionen

Eine angenommene Anfrage ist noch keine erledigte Aufgabe. Dauerhafte Jobs brauchen sichtbare Zustände, abrufbare Ergebnisse und sichere Wiederholungen.

Hintergrundjobs sind Produktfunktionen

Der Tab schliesst vor dem fertigen Export

Ein Kunde schliesst den Browser, während ein Export läuft. Nach der Rückkehr zeigt die Oberfläche wieder dieselbe Schaltfläche, aber keine Erklärung. Er startet erneut. Im Hintergrund läuft womöglich doppelte Arbeit, während unklar bleibt, welcher Auftrag überhaupt eine brauchbare Datei liefern wird.

HTTP 202 Accepted bestätigt die Annahme zur Verarbeitung, nicht deren erfolgreichen Abschluss. MDN erläutert diesen Unterschied. Das Produkt muss die übrigen Fragen beantworten: Was wurde angenommen, wo bleibt sein Zustand sichtbar und wie erfährt die Person das Ergebnis?

Arbeit in eine Queue zu stellen ist eine Infrastrukturentscheidung. Sie nach Ende der ursprünglichen Anfrage verständlich zu halten ist eine Produktaufgabe.

Der Auftrag braucht eine wiederauffindbare Identität

Für einen gedachten Katalogexport entsteht ein dauerhafter Auftrag mit Besitzer und angefordertem Umfang. Nach der Rückkehr muss die Anwendung ihn wieder anzeigen können. Dazu darf sie nicht auf den Speicher des ursprünglichen Tabs angewiesen sein. Wartend, laufend, abgeschlossen, fehlgeschlagen und abgebrochen werden in einer zur Aufgabe passenden Sprache unterschieden.

Auch das Ergebnis braucht einen festen Ort. Ein fertiger Export kann eine Datei mit sichtbarer Gültigkeitsbedingung anbieten. Ein gescheiterter Auftrag behält eine Erklärung, mit der sich über Wiederholung entscheiden lässt. Beide Zustände dürfen nicht allein an einer längst verschwundenen Benachrichtigung hängen.

Die Zugriffsrechte gelten weiterhin. Eine bekannte Auftragskennung darf keinen Einblick in Fortschritt, Quelldaten oder Ergebnis einer fremden Organisation geben. Statusabfrage und Download gehören zur selben Zuständigkeitsgrenze.

Beobachtbaren Fortschritt zeigen

Ein Fortschrittsbalken sollte etwas darstellen, das das System tatsächlich beobachten kann. Ist die Gesamtarbeit unbekannt, helfen eine benannte Phase und ein ehrlicher Status mehr als ein erfundener Prozentwert. Datensätze zu verarbeiten und ein Archiv zum Download vorzubereiten sind verschiedene Phasen, auch wenn sich die letzte nicht bequem zählen lässt.

Die Meldung erklärt, was gerade passiert und ob der Kunde anwesend bleiben muss. Darf er die Seite verlassen, sollte das dort stehen. Fehlen Angaben, werden diese benannt und bereits erledigte Arbeit bleibt erhalten.

Stille wirkt leicht wie ein Fehler, obwohl ein Worker gesund ist. Umgekehrt kann eine laufende Animation verdecken, dass er längst steht. Betriebliche Signale sollten diese Situationen unterscheiden. Bleibt eine erwartete Zustandsänderung aus, braucht die Oberfläche eine verständliche Erklärung.

Wiederholen, ohne Wirkungen zu verdoppeln

Eine Wiederholung ist mehr als ein weiterer Funktionsaufruf. Beim Export mag doppelte Berechnung hinnehmbar sein. Versendet der Auftrag Einladungen oder verändert er Bestellungen, können wiederholte Teilwirkungen erheblich verwirren.

Festgelegt wird deshalb, welche Schritte erneut laufen dürfen und welche eine dokumentierte Abschlussentscheidung benötigen. Einzelne Versuche bleiben vom eigentlichen Auftrag unterscheidbar, damit der Support den Verlauf erklären kann. Der Kunde sollte nicht erraten müssen, ob ein Klick einen neuen Auftrag erzeugt oder den bestehenden fortsetzt.

Auch Abbrechen verlangt ehrliche Sprache. Die Aufforderung kann nach einer nicht rücknehmbaren Aktion eintreffen. Verhindert das System lediglich die restliche Arbeit, muss es das sagen. Ein Abbruchstatus darf nicht behaupten, versendete Nachrichten oder bereits angewandte Änderungen seien zurückgenommen worden.

Diese Woche den Browser im Test schliessen

Einen für Kunden wichtigen Hintergrundauftrag starten, die Seite verlassen und sich an anderer Stelle anmelden. Dort muss der Zustand wieder auffindbar sein. Danach einen Worker stoppen, nach einem Teilergebnis erneut versuchen und kurz vor Abschluss einen Abbruch anfordern.

Bei jedem Übergang werden Kundenerklärung, dauerhafter Datensatz und tatsächliche Wirkung miteinander verglichen. Der Support sollte den betreffenden Versuch ohne Browserkonsole identifizieren können. Ein Hintergrundjob ist als Produktfunktion fertig, wenn sein Ergebnis auch dann verständlich bleibt, wenn ursprünglicher Spinner, Tab und Verbindung längst verschwunden sind.