GetQueryable
protected abstract IQueryable<OrmBABase> GetQueryable();
Die wird benutzt, um den Arbeitsvorrat zu ermitteln, der von ProcessSingleOrm
bearbeitet werden soll. Der zurückgelieferten Query werden weitere Where-Bedingungen hinzugefügt, um die Paketierung und das Wiederaufsetzen zu steuern.
Die Implementierung sollte für die Query die UnitOfWork
des Work-Items benutzen, wenn die später gemachten Änderungen mit dem Status des Workers in einer Transaktion gespeichert werden sollen. Dies ist der einfachste Weg, um sicher zu stellen, dass Änderungen niemals doppelt ausgeführt werden, falls der Worker mal unterbrochen wird. Andernfalls muss man sich selbst um die Vermeidung von Doppelausführungen kümmern.
ProcessSingleOrm
protected abstract void ProcessSingleOrm(OrmBABase ormBABase);
Hier erfolgt die eigentliche Arbeit. Der Worker kann mit dem Datensatz letztlich machen, was er will, und auch andere Datensätze verändern.
Falls GetQueryable
die UnitOfWork
des Work-Items verwendet hat, ist kein explizites Speichern erforderlich. Dies erfolgt nach jedem Aufruf der Methode automatisch.