Muster widerruf klarmobil

    0
    8

    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. In ähnlicher Weise erzielen UML 2.0-ADs den gleichen Effekt mithilfe des InterruptibleActivityRegions-Konstrukts. FLOWer bietet teilweise Unterstützung für das Muster durch seine Fähigkeit, ganze Anfragen zu überspringen oder zu wiederholen. 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. Dem Muster sind keine spezifischen Kontextbedingungen zugeordnet.

    Abbildung 27: Abbrechen des Aufgabenmusters mit garantierter Beendigung Es ist auch ein gutes API-Muster, um Ihren 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. Unabhängig davon, ob Sie asynchronarbeiten oder nicht, ist das Akzeptieren eines CancellationToken als Parameter für Ihre Methode ein großartiges Muster, um ihrem Aufrufer zu ermöglichen, verlorenes Interesse am Ergebnis auszudrücken. 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 gibt auch eine zweite Variante des Musters, bei der die Ausführung der Aufgabe bereits begonnen, aber noch nicht abgeschlossen ist. Dieses Szenario wird in Abbildung 26 dargestellt, in dem eine Aufgabe, die aktiviert wurde oder gerade ausgeführt wird, abgebrochen werden kann.