Allgemein gilt: alle Eigenschaften von WorkItemBase sind von außen (public) read-only (protected set). Nur die Workerklasse selbst darf sie zuweisen.
Die Eigenschaften in diesem Kapitel sollten im allgemeinen vor der Einplanung eines Work-Items im Konstruktor oder spätestens in WorkItemCreating zugewiesen werden – natürlich nur die erforderlichen.

Guid InstanceGuid

Logischer Primärschlüssel der Arbeitsaufgabe. Dieser muss systemweit eindeutig sein. Der Schlüssel wird in allen Workmanager-API Methoden zum Zugriff auf existierende Work-Items verwendet.

Wird eine noch nicht laufende Aufgabe mit demselben Schlüssel erneut angelegt, so ersetzt diese die vorherige Version.
Eine bereits laufende Aufgabe kann nicht mehr überschrieben werden (Fehlercode). Die Aufgabe kann sich nur selbst erneut einplanen.

Systemweite Aufgaben, die nur einmal existieren dürfen, sollten im Konstruktor eine beliebige, konstante GUID zuweisen.

Wenn immer eine neue Aufgabe erzeugt werden soll, kann die Zuweisung dieses Feldes entfallen. Dann vergibt das System eine GUID.

Wenn die Existenz eines Work-Items an ein anderes Objekt gebunden werden soll, dann kann auch dessen Guid verwendet werden, beispielsweise bei einem an eine Konfiguration gebundenen Worker. Es muss allerdings darauf geachtet werden, dass nicht zwei verschiedene und gleichzeitig erwünschte Worker-Klassen dieselbe GUID verwenden.

Dieses Property darf pro Instanz nur einmal zugewiesen werden.

String Name

Name des Workers. Wird in Administrativen Ansichten von Work-items verwendet sowie als Standard-Titel beim Anlegen des zugehörigen Worker-Protokolls.
Wenn kein Name angegeben wird, wird der Name der implementierenden Worker-Klasse verwendet.

Guid UserContextGuid

Der User-Kontext in dem dieses Work-Item arbeiten soll, z. B. Constants.SystemUser.

Standardmäßig wird der aktuelle Benutzer verwendet, unter dem das Work-Item erzeugt wurde.

EnumExpectedRunTime ExpectedRunTime

Priorität des Work-Items (siehe Scheduling/Prioritäten), standardmäßig Normal.

DateTime ScheduledStartTime

Wann soll das Work-Item starten (UTC!), standardmäßig: sofort.

bool IsSystemWorkItem

Ist dies ein System- oder ein User-WorkItem? System-Work-Items tauchen nicht in der Progress Bar auf, auch dann nicht, wenn sie unter der dem angemeldeten User laufen.

bool IsVisibleForAllUsers

Soll dieses Work-Item allen Benutzern im Progress Bar angezeigt werden?

bool IsCancellable

Darf dieses Work-Item vom Benutzer abgebrochen werden?

Die Eigenschaft kann auch davon abhängen, in welchem Zustand sich das WorkItem befindet. Es kann beispielsweise beim Beginn der eigentlichen Arbeit wieder auf false gesetzt werden.

int NumberOfStarts, MaxNumberOfRestarts

Wie oft wurde diese Instanz des Work-Items bereits gestartet und wie oft darf eine Neustart maximal erfolgen.

Diese Parameter werden verwendet, um zu entscheiden, ob ein automatischer Neustart nach einem Fehler oder einem Timeout noch angemessen ist. Standardmäßig werden maximal 3 Neustarts durchgeführt.

WorkerLoggingMode LoggingMode

Soll automatisch ein Worker-Protokoll mit dem Namen der Work-Items für dieses Work-Item angelegt werden?

  • Auto Beim Schreiben des ersten Ereignisses wird ein Applikationsprotokoll erstellt. (Standard)
  • Always Vor dem Start des Work-Items eine Applikationsprotokoll angelegt.
  • Never Es wird kein Applikationsprotokoll erstellt. Die Worker-Implementierung kann dies aber per InitLogger() explizit tun.

Dieses Property darf nur im Konstruktor zugewiesen werden.

EnumLogProcesses LoggingProcess

Das Log soll mit diesem Wert für die Eigenschaft OrmLogBase.Process erstellt werden.

Dieses Property sollte nur im Konstruktor zugewiesen werden.
Wenn eine dynamische Berechnung gefordert ist, kann diese Alternativ in einer Überladung von InitLogger() erfolgen, und zwar vor dem Aufruf von base.InitLogger().

Guid LoggerGuid

GUID des zugehörigen Worker-Protokolls.

Wird hier eine GUID eines existierenden Protokolls verwendet, so wird kein neues angelegt, sondern dieses fortgeschrieben.

Ist das Feld leer und LoggingMode aktiviert, wird ein neues Protokoll angelegt.

Dieses Property wird beim Erstellen eines Protokolls automatisch aktualisiert.
Wenn man eine abweichende GUID zuweist, wird das Logging beendet bis wieder InitLogger() aufgerufen wird.

EnumWorkItemState State (read-only)

Aktueller Zustand des Work-Items. Siehe Work-Items / Zustände.
Für einige, häufig benötigte Zustände gibt es eigene Properties:

bool IsRunning

Der Prozess ist gerade aktiv und hat kein Signal zu Abbrechen bekommen. (EnumWorkItemState.Running)

bool IsError

Der Prozess ist mit einer Exception abgebrochen:

  • EnumWorkItemState.Error Es gab eine unbehandelte Ausnahme in der Methode Run.
  • EnumWorkItemState.Killed Der Prozess hat nicht auf die Anforderung zum Beenden nach Zeitüberschreitung (EnumWorkItemState.CancellingBySystem) reagiert und wurde mit einer ThreadAbortException abgebrochen.
  • EnumWorkItemState.Aborted Der Prozess hat nicht auf die Anforderung zum Beenden wegen Anwendungsneustart (EnumWorkItemState.ShutdownRequest reagiert und wurde mit einer ThreadAbortException abgebrochen.

bool IsDone

Der Prozess hat seine aktive Arbeit beendet un ist in seinem finalen Status. Das ist jeder Status ab der Kategorie “final”, und es bedeutet nicht, dass die Arbeit auch erfolgreich (fehlerfrei) war.