Zum Hauptinhalt springen
Version: 7.3

Workflow-Aufgabe: Pre- und Postconditions bearbeiten

Überschreibt die Pre- und Postconditons basierend auf der bereitgestellten JSON-Definition

Bezeichnung​

Name
mc.WorkflowTaskModifyConditions
Aliase
WorkflowModifyTaskConditions

Konfiguration​

Test-Modus (test-mode)
Aktiviert einen Simulationsmodus
Eingabemodus (conditions-input-mode)
Legt fest, ob die Bedingungen über eine JSON-Datei oder als JSON-Text übergeben werden
Mögliche Werte
Datei (file), Freitext (text)
Datei (conditions-file)
Datei mit der JSON-Definition
Freitext (conditions-text)
Freitext mit den JSON-Definition
Aufgabe (task)
Name der Workflow-Aufgabe
Aufgaben-Nummer (task-no)
Laufende Nummer der Workflow-Aufgabe

Beschreibung​

Mit diesem Modul lassen sich die Pre- und Postconditions von Aufgaben in Workflows bearbeiten. Die Eingabe erfolgt als JSON-Datei oder als Freitext.

Das JSON enthält zwei Listen:

  • preconditions: werden vor dem Start der Aufgabe geprüft
  • postconditions: werden nach dem Ende der Aufgabe geprüft

Für beide Listen gilt:

AngabeWirkung
nullDie bestehenden Einträge bleiben unverändert
[] (leere Liste)Die bestehenden Einträge werden gelöscht
Liste mit EinträgenDie bestehenden Einträge werden durch die neuen ersetzt

Einschränkungen im Text-Modus​

Der Text-Modus (--conditions-input-mode text) ist für kurze Definitionen und Tests gedacht und funktioniert nur in der grafischen Oberfläche zuverlässig.

Beim Start über die Kommandozeile kann es zu Problemen kommen, z. B. durch Sonderzeichen, Leerzeichen oder sehr lange Eingaben. Verwende dort den Datei-Modus:

--conditions-input-mode file --conditions-file <Pfad zur JSON-Datei>

Aufbau eines Eintrags​

Jeder Eintrag ist entweder eine Bedingung oder eine Aktion.

{
"type": "UserDefinedCondition",
"active": true,
"once": false,
"params": { "value1": "&ENV#", "operator": "=", "value2": "PROD" },
"ifTrue": [],
"ifFalse": []
}
FeldBeschreibung
typeName der Bedingung oder Aktion (siehe Verfügbare Bedingungen und Aktionen)
activetrue: Eintrag ist aktiv, false: Eintrag ist deaktiviert
oncetrue: Eintrag wird nur einmal ausgeführt
paramsEinstellungen des Eintrags (siehe Einstellungen je Eintrag)
ifTrueEinträge, die ausgeführt werden, wenn die Bedingung zutrifft (nur bei Bedingungen)
ifFalseEinträge, die ausgeführt werden, wenn die Bedingung nicht zutrifft (nur bei Bedingungen)

Verschachtelung mit ifTrue und ifFalse​

In ifTrue und ifFalse können sowohl Aktionen als auch weitere Bedingungen stehen. So lassen sich beliebig tiefe Wenn-Dann-Sonst-Abläufe bauen (siehe Beispiele).

Pre- oder Postcondition​

Nicht jede Bedingung oder Aktion ist in beiden Bereichen erlaubt. Welche wo zulässig ist, steht in der Tabelle Verfügbare Bedingungen und Aktionen. Wird ein Eintrag im falschen Bereich verwendet, gibt das Modul eine Fehlermeldung aus.

Fehlerbehandlung​

Kann eine Einstellung in params nicht übernommen werden, gibt das Modul eine Fehlermeldung aus. Sie enthält alle Einstellungen, die für diesen Eintrag möglich sind. Häufige Ursachen:

  • Der Name der Einstellung ist falsch geschrieben. Beispiel: valueOne statt value1
  • Der Wert hat die falsche Form. Beispiel: 1900 statt ENDED_OK
  • Der Wert ist nicht erlaubt. Beispiel: ein Operator, der nicht in der Liste steht

Verfügbare Bedingungen und Aktionen​

Diese Namen können als type verwendet werden:

BedingungenPrüft …PrePost
CheckActivitiesConditionAnzahl laufender Aktivitäten eines Objekts✓✓
CheckConnectionConditionob eine Verbindung erreichbar ist✓✓
CheckFileConditionob eine Datei existiert✓✓
CheckHistoryConditionob ein Objekt mit einem Status beendet wurde✓✓
CheckProcessConditionob ein Prozess läuft✓✓
CurrentQueueConditionin welcher Queue die Aufgabe läuft✓✓
CurrentTimeConditiondie aktuelle Uhrzeit✓✓
ReturnCodeConditionden Return Code der Aufgabe–✓
StatusConditionden Endstatus der Aufgabe–✓
TimeSinceActivationConditiondie Zeit seit dem Start der Aufgabe✓✓
UserDefinedConditionzwei frei wählbare Werte, z. B. Variablen✓✓
AktionenBewirkt …PrePost
AbortActionAufgabe abbrechen–✓
BlockActionWorkflow blockieren✓✓
CancelProcessFlowActionWorkflow abbrechen✓✓
ChangeQueueActionQueue der Aufgabe ändern✓–
ClearVariableActionEinträge eines Variablen-Objekts löschen✓✓
ExecuteObjectActionanderes Objekt starten✓✓
ModifyStateActionEndstatus der Aufgabe ändern–✓
PublishValueActionWert im Workflow bereitstellen✓✓
ReEvaluateAtActionzu einem Zeitpunkt erneut prüfen✓–
ReEvaluateInActionnach einer Wartezeit erneut prüfen✓–
RestartTaskActionAufgabe neu starten–✓
RollbackActionRollback ausführen–✓
RunTaskActionAufgabe starten✓–
SetValueActionWert einer Variable setzen✓✓
SetVariableActionWert in ein Variablen-Objekt schreiben✓✓
SkipTaskActionAufgabe überspringen✓–

Einstellungen je Eintrag​

Wertarten​

In den Tabellen unten steht bei jeder Einstellung, welche Art von Wert erwartet wird:

WertartSo angebenBeispiel
Textin Anführungszeichen"&ENV#"
Zahlganze Zahl, mit oder ohne Anführungszeichen0 oder "0"
Booleantrue oder falsetrue
ObjektnameName des Objekts als Text"JOBS.WIN.TEST"
AgentName des Agenten als Text"WIN01"
AliasAlias als Text"MEIN_ALIAS"
UhrzeitText im Format HH:MM, HH:MM:SS oder HHMM"06:30"
StatusStatuswert, exakt in Großbuchstaben (siehe Statuswerte)"ENDED_OK"
Auswahleiner der genannten Werte, Groß-/Kleinschreibung egal"BEFORE"
ParameterlistePaare aus Name und Wert, Werte als Text{ "&PARAM#": "1" }

Wichtig:

  • Text immer in Anführungszeichen angeben.
  • Statuswerte exakt in Großbuchstaben schreiben. Eine falsche Schreibweise (z. B. "ended_ok") wird nicht als Fehler gemeldet, sondern unverändert übernommen und funktioniert dann nicht wie erwartet.
  • Der Wert null leert eine Einstellung. Bei Zahl und Boolean ist null nicht erlaubt.
  • Erlaubte Vergleichsoperatoren: =, <>, <, <=, >, >=

Bedingungen​

CheckActivitiesCondition​

Prüft, wie viele Aktivitäten eines Objekts einen bestimmten Status haben.

EinstellungWertartBeschreibung
nameObjektnameObjekt, dessen Aktivitäten geprüft werden
operatorTextVergleichsoperator
countZahlAnzahl, mit der verglichen wird
statusStatusStatus der Aktivitäten

CheckConnectionCondition​

Prüft, ob eine Verbindung erreichbar ist.

EinstellungWertartBeschreibung
agentAgentAgent, von dem aus geprüft wird
connectionObjektnameVerbindungs-Objekt

Die Option „eigener Agent“ kann über dieses Modul nicht gesetzt werden.

CheckFileCondition​

Prüft, ob eine Datei existiert oder nicht existiert.

EinstellungWertartBeschreibung
agentAgentAgent, auf dem die Datei geprüft wird
fileTextPfad und Name der Datei
existsJa/Neintrue: Datei muss existieren, false: darf nicht
loginObjektnameLogin-Objekt für den Zugriff

Die Optionen „eigener Agent“ und „eigenes Login“ können über dieses Modul nicht gesetzt werden.

CheckHistoryCondition​

Prüft, ob ein Objekt in einem Zeitraum mit einem bestimmten Status beendet wurde.

EinstellungWertartBeschreibung
nameObjektnameObjekt, das geprüft wird
statusStatusGesuchter Endstatus
dayOffsetZahlAnzahl Tage zurück
timeOffsetUhrzeitUhrzeit, ab der geprüft wird

CheckProcessCondition​

Prüft, ob ein Prozess auf einem Agenten läuft.

EinstellungWertartBeschreibung
agentAgentAgent, auf dem geprüft wird
loginObjektnameLogin-Objekt
processNameTextName des Prozesses
statusAuswahlRUNNING, NOT_RUNNING

CurrentQueueCondition​

Prüft, ob die Aufgabe in einer bestimmten Queue läuft.

EinstellungWertartBeschreibung
queueNameObjektnameQueue

CurrentTimeCondition​

Prüft, ob die aktuelle Uhrzeit vor oder nach einer Uhrzeit liegt.

EinstellungWertartBeschreibung
whenAuswahlBEFORE, AFTER
timeUhrzeitVergleichsuhrzeit

ReturnCodeCondition​

Prüft den Return Code der Aufgabe. Nur als Postcondition.

EinstellungWertartBeschreibung
operatorTextVergleichsoperator
returnCodeZahlReturn Code zum Vergleich

StatusCondition​

Prüft den Endstatus der Aufgabe. Nur als Postcondition.

EinstellungWertartBeschreibung
statusStatusEndstatus

TimeSinceActivationCondition​

Prüft, wie lange die Aufgabe schon aktiv ist.

EinstellungWertartBeschreibung
operatorAuswahlMORE_THAN (mehr als), LESS_THAN (weniger als)
timeUhrzeitZeitspanne, z. B. "01:30" für 1,5 Stunden

Hinweis: Hier wird kein Vergleichszeichen wie > verwendet, sondern MORE_THAN oder LESS_THAN.

UserDefinedCondition​

Vergleicht zwei frei wählbare Werte, z. B. Variablen.

EinstellungWertartBeschreibung
value1TextErster Wert
operatorTextVergleichsoperator
value2TextZweiter Wert

Aktionen​

AbortAction​

Bricht die Aufgabe ab. Nur als Postcondition.

EinstellungWertartBeschreibung
textTextBegründung, maximal 32 Zeichen

BlockAction​

Blockiert den Workflow.

EinstellungWertartBeschreibung
textTextBegründung, maximal 32 Zeichen

CancelProcessFlowAction​

Bricht einen Workflow ab.

EinstellungWertartBeschreibung
scopeAuswahlOWN (eigener), PARENT (übergeordneter), TOP (oberster)
recursiveJa/Neintrue: auch untergeordnete Aufgaben abbrechen

ChangeQueueAction​

Ändert die Queue der Aufgabe. Nur als Precondition.

EinstellungWertartBeschreibung
queueObjektnameNeue Queue

ClearVariableAction​

Löscht einen Eintrag oder alle Einträge eines Variablen-Objekts (VARA).

EinstellungWertartBeschreibung
variableNameObjektnameVariablen-Objekt
keyTextZu löschender Eintrag

ExecuteObjectAction​

Startet ein anderes Objekt.

EinstellungWertartBeschreibung
nameObjektnameObjekt, das gestartet wird
waitJa/Neintrue: auf das Ende des Objekts warten
parameterParameterlisteParameter als Schlüssel-Wert-Paare (z.B. {"&PARAM1#": "Wert"})
aliasAliasAlias für den Start

ModifyStateAction​

Ändert den Endstatus der Aufgabe. Nur als Postcondition.

EinstellungWertartBeschreibung
retCodeZahlNeuer Return Code
textTextBegründung

PublishValueAction​

Stellt einen Wert als Variable im Workflow bereit.

EinstellungWertartBeschreibung
valueTextWert
publishNameTextName der Variable

ReEvaluateAtAction​

Prüft die Bedingungen zu einem bestimmten Zeitpunkt erneut. Nur als Precondition.

EinstellungWertartBeschreibung
daysZahlTage in der Zukunft, 0 bis 99
timeUhrzeitUhrzeit

ReEvaluateInAction​

Prüft die Bedingungen nach einer Wartezeit erneut. Nur als Precondition.

EinstellungWertartBeschreibung
minutesZahlWartezeit in Minuten

RestartTaskAction​

Startet die Aufgabe nach einer Wartezeit neu. Nur als Postcondition.

EinstellungWertartBeschreibung
minutesZahlWartezeit in Minuten

RollbackAction​

Führt einen Rollback aus. Nur als Postcondition.

EinstellungWertartBeschreibung
taskAuswahlTHIS (diese Aufgabe), PARENT (übergeordnet), TOP (oberste)

Hinweis: Den Wert immer exakt in Großbuchstaben angeben. Andere Schreibweisen werden unter Umständen unverändert übernommen und funktionieren dann nicht.

RunTaskAction​

Startet die Aufgabe. Nur als Precondition. Hat keine Einstellungen, params wird weggelassen.

SetValueAction​

Setzt den Wert einer Script-Variable.

EinstellungWertartBeschreibung
nameTextName der Variable. Ein & am Anfang wird entfernt. Darf nicht leer sein und nicht mit $ beginnen
valueTextWert
scopeAuswahlTASK (Aufgabe), PROCESS_FLOW (Workflow), PARENT_PROCESS_FLOW (übergeordneter Workflow)

SetVariableAction​

Schreibt einen Wert in ein Variablen-Objekt (VARA).

EinstellungWertartBeschreibung
variableNameObjektnameVariablen-Objekt
keyTextEintrag
valueColumnZahlWertespalte, 1 bis 5
valueTextWert

SkipTaskAction​

Überspringt die Aufgabe. Nur als Precondition.

EinstellungWertartBeschreibung
textTextBegründung

Statuswerte​

Zulässige Werte für alle Einstellungen der Wertart „Status“:

GruppeWerte
ANY_*ANY_ABEND, ANY_ABEND_EXCEPT_FAULT, ANY_ACTIVE, ANY_BLOCKED, ANY_BLOCKED_OR_STOPPED, ANY_EXCEPT_FAULT, ANY_OK, ANY_OK_OR_UNBLOCKED, ANY_SKIPPED, ANY_STOPPED, ANY_WAITING
ENDED_*ENDED_CANCEL, ENDED_EMPTY, ENDED_ESCALATED, ENDED_INACTIVE, ENDED_INACTIVE_MANUAL, ENDED_NOT_OK, ENDED_NOT_OK_SYNC, ENDED_OK, ENDED_OK_OR_EMPTY, ENDED_OK_OR_INACTIVE, ENDED_OK_OR_UNBLOCKED, ENDED_SKIPPED, ENDED_SKIPPED_CONDITIONS, ENDED_SKIPPED_SYNC, ENDED_TIMEOUT, ENDED_TRUNCATE, ENDED_UNDEFINED, ENDED_VANISHED
FAULT_*FAULT_ALREADY_RUNNING, FAULT_NO_HOST, FAULT_OTHER
USER_*USER_100_200, USER_147, USER_201_299, USER_300, USER_510, USER_690
WAITING_*WAITING_AGENT, WAITING_AGENT_OR_AGENTGROUP, WAITING_AGENTGROUP, WAITING_EXTERNAL, WAITING_GROUP, WAITING_QUEUE, WAITING_SYNC

Beispiele​

Precondition: Datei prüfen​

Existiert die Datei, wird die Aufgabe gestartet. Sonst wird nach 10 Minuten erneut geprüft.

{
"preconditions": [
{
"type": "CheckFileCondition",
"params": { "agent": "WIN01", "file": "C:\\data\\import.csv", "exists": true },
"ifTrue": [
{ "type": "RunTaskAction" }
],
"ifFalse": [
{ "type": "ReEvaluateInAction", "params": { "minutes": 10 } }
]
}
],
"postconditions": null
}

Postcondition: Return Code und Status auswerten​

Bei Return Code 0 wird ein Eintrag in ein Variablen-Objekt geschrieben. Sonst wird bei ENDED_NOT_OK die Aufgabe nach 5 Minuten neu gestartet, bei jedem anderen Status abgebrochen.

{
"preconditions": null,
"postconditions": [
{
"type": "ReturnCodeCondition",
"params": { "operator": "=", "returnCode": 0 },
"ifTrue": [
{
"type": "SetVariableAction",
"params": { "variableName": "VARA.STATUS", "key": "LAST_RUN", "valueColumn": 1, "value": "OK" }
}
],
"ifFalse": [
{
"type": "StatusCondition",
"once": true,
"params": { "status": "ENDED_NOT_OK" },
"ifTrue": [
{ "type": "RestartTaskAction", "params": { "minutes": 5 } }
],
"ifFalse": [
{ "type": "AbortAction", "params": { "text": "Unerwarteter Status" } }
]
}
]
}
]
}

Pre- und Postconditions kombiniert​

Vor dem Start wird geprüft, ob das Objekt bereits läuft. Nach erfolgreichem Ende wird ein Folgeobjekt mit Übergabewerten gestartet.

{
"preconditions": [
{
"type": "CheckActivitiesCondition",
"params": { "name": "JOBS.WIN.IMPORT", "operator": ">", "count": 0, "status": "ANY_ACTIVE" },
"ifTrue": [
{ "type": "ReEvaluateInAction", "params": { "minutes": 5 } }
],
"ifFalse": [
{ "type": "RunTaskAction" }
]
}
],
"postconditions": [
{
"type": "StatusCondition",
"params": { "status": "ENDED_OK" },
"ifTrue": [
{
"type": "ExecuteObjectAction",
"params": {
"name": "JOBS.WIN.REPORT",
"wait": false,
"parameter": { "&DATE#": "&$DATE_YYYYMMDD#" }
}
}
]
}
]
}