Wenn ein Work-Item, nachdem es fertig ist, oder zum Aufräumen, ein weiteres, anderes Work-Item starten will, sollte die Methode Api.Worker.CreateOrUpdate
mit der UnitOfWork
des aktuellen Work-Items verwendet werden. Beispiel:
Api.Worker.CreateOrUpdate(new MassEMailSendWorkerTask(_ControlOrm, LoggerGuid)
{
MessageOnSuccess = MessageOnSuccess,
MessageOnError = MessageOnError
}, UnitOfWork);
Dadurch ist sichergestellt, dass das neue Item nur startet, wenn auch die begleitenden Änderungen am aktuellen Item gespeichert wurden. So ist nach einem unerwarteten Anwendungsneustart klar, ob der Nachfolger noch gestartet werden muss oder nicht.
Falls der Nachfolger nicht aus WorkItemFinished
heraus gestartet wird, sollte sich das Work-Item einer internen, persistierten Eigenschaft merken, dass dies erledigt ist, um doppelte Starts zu vermeiden.
Ein Nachfolge-Worker unterscheidet sich von einer Neueinplanung dadurch, dass er eine andere InstanceGuid
und im allgemeinen auch eine andere Worker-Klasse verwendet.
Es können auch mehrere Nachfolge-Worker in einem Schritt gestartet werden.