Muster widerruf abofalle

Die meisten der untersuchten Angebote unterstützen dieses Muster in ihren Prozessmodellen. Die meisten unterstützen die erste Variante, wie in Abbildung 25 dargestellt: Staffware tut dies mit dem Rückzugskonstrukt, COSA erlaubt Token, von den Stellen vor Aufgaben zu entfernen, iPlanet stellt die AbortActivity-Methode bereit, FileNet stellt das Konstrukt „Terminate Branch“ bereit und SAP Workflow stellt den Prozesssteuerungsschritt für diesen Zweck bereit, obwohl er nur begrenzt genutzt wird. BPEL unterstützt die zweite Variante über Fehlerkompensationshandler, die an Aufgaben angefügt sind, ebenso wie BPMN und XPDL mithilfe von Fehlertyptriggern, die an die Grenze der zu löschenden Aufgabe angefügt sind. UML 2.0-ADs bieten eine ähnliche Funktion, indem sie die Aufgabe, die abgebrochen werden soll, in einem unterbrechbaren Bereich platzieren, der durch ein Signal oder eine andere Aufgabe ausgelöst wird. FLOWer unterstützt das Muster nicht direkt, obwohl Aufgaben übersprungen und neu ausgeführt werden können. Nebenbei gesehen sollten Sie wahrscheinlich einen Verweis auf die Aufgabe speichern, die von Task.Factory.StartNew(() => StartSearchInternal(s.Token), s.Token) zurückgegeben wird, irgendwo in Ihrer ViewModel-Klasse. Sie möchten höchstwahrscheinlich das Ergebnis und jede Ausnahme, die es ausgelöst haben könnte, beobachten. Vielleicht möchten Sie Lucian Wischiks „Async re-entrancy, and the patterns to deal with it“ überprüfen. Ein Angebot erhält die volle Unterstützung für dieses Muster, wenn es ein Konstrukt bereitstellt, das die Beschreibung für das Muster erfüllt. Wenn mit der Stornierung Nebenwirkungen verbunden sind (z. B. erzwungener Abschluss anderer Aufgaben, wobei die abgebrochene Aufgabe als abgeschlossen markiert wird), wird das Angebot als teilweise Unterstützung eingestuft.

Es ist auch ein gutes API-Muster, um Ihr CancellationToken als letzten Parameter zu behalten, den Ihre Methode akzeptiert. Dies passt sowieso gut zu optionalen Parametern, da sie nach allen erforderlichen Parametern angezeigt werden müssen. Dem Muster sind keine spezifischen Kontextbedingungen zugeordnet. Dies ist mein Kommentar, der in eine Antwort mit Code umgestaltet wurde. Es enthält ein paar Alternativen für die Verwendung von Task.Wait und das asynchrone Muster, dessen Auswahl davon abhängt, ob Sie die Methode aus dem UI-Thread aufrufen. Die allgemeine Interpretation des Abbruchaufgabenmusters wird in Abbildung 25 veranschaulicht. Der Trigger, der Aufgabe B aktiviert hat, wird entfernt, sodass die Aufgabe nicht fortgesetzt werden kann. Das Muster „Task abbrechen“ bietet die Möglichkeit, eine Aufgabe zurückzuziehen, die aktiviert wurde oder bereits ausgeführt wird. Dadurch wird sichergestellt, dass die Ausführung nicht beginnt oder abgeschlossen wird. Dieses Muster wird bei den untersuchten Angeboten angemessen unterstützt.

SAP Workflow stellt den Prozesssteuerungsschritt zu diesem Zweck bereit, FileNet stellt das Konstrukt „Terminate Process“ bereit, BPEL bietet die construct, BPMN und XPDL bieten Unterstützung, indem sie den gesamten Prozess in eine Transaktion mit einem zugeordneten Endereignis einbeziehen, das das Beenden aller ausführenden Aufgaben in einer Prozessinstanz ermöglicht.