Allgemeines
Die Steuerung der Ausführungslogik einer Systemaktivität erfolgt ausschließlich über den so genannten Step-Status (bzw. im Fehlerfall über das Auslösen von Exceptions, durch die der Step-Status automatisch gesetzt und die Ausführung abgebrochen wird). Die Programmierschnittstelle (API) stellt Methoden bereit, um den Status unkompliziert abzufragen und zu verändern, daher ist es nicht erforderlich, die internen Statuscodes auswendig zu kennen. Dennoch kann es bei der Fehlersuche hilfreich sein. Folgende Tabelle enthält die vordefinierten Statuscodes:
Step-Status |
Beschreibung |
---|---|
0 |
Erste Ausführung / unverändert |
1-98 |
In Bearbeitung (es wird standardmäßig nicht zwischen 1 bis 98 unterschieden) |
99 |
Systemaktivität abgeschlossen / Noch keine Regeln ausgeführt |
Exceptions
Tritt ein Fehler auf, kann dies der Systemaktivität über das Auslösen einer Exception mitgeteilt werden. Die Fehlerausgabe erfolgt dann anhand der Nachricht, welche der Exception übergeben wird und der Status des Schrittes wird automatisch auf -1 (Fehler) gesetzt.
Beispiel
Folgendes Beispiel zeigt die Verwendung der API-Methoden, um den Step-Status innerhalb einer Systemaktivität zu prüfen und zu ändern:
Implementierte Statusänderung in der Basisklasse (getDialogXml aus Platzgründen gekürzt)
<?php
class csvSystemActivity extends AbstractSystemActivityAPI
{
...
// functionId='exportCsv'
protected function exportCsv()
{
if ($this->isCompleted()) {
// Dieser Punkt sollte nie erreicht werden
throw new Exception('Die Systemaktivität kann nicht ausgeführt werden, wenn Sie bereits abgeschlossen wurde');
}
// Status "erste Ausführung" überprüfen
if ($this->isFirstExecution()) {
// Status auf "in Bearbeitung" setzen
$this->markActivityAsPending();
}
// Status "in Bearbeitung" überprüfen
if ($this->isPending()) {
// Status auf "abgeschlossen" setzen
$this->markActivityAsCompleted();
}
}
}
Achten Sie auch auf die korrekte Verwendungsreihenfolge der entsprechenden Methoden. Im Beispiel wird der Status zunächst von 0 (erste Ausführung) auf 1 (in Bearbeitung gesetzt). Direkt im Anschluss wird der Status auf 99 (abgeschlossen) geändert. Somit wird die Systemaktivität nur einmal durchlaufen. In einem weiteren Beispiel wird die Wichtigkeit der Reihenfolge klarer:
Implementierte Statusänderung in der Basisklasse mit geänderter Reihenfolge (getDialogXml aus Platzgründen gekürzt)
<?php
class csvSystemActivity extends AbstractSystemActivityAPI
{
...
// functionId='exportCsv'
protected function exportCsv()
{
if ($this->isCompleted()) {
// Dieser Punkt sollte nie erreicht werden
throw new Exception('Die Systemaktivität kann nicht ausgeführt werden, wenn Sie bereits abgeschlossen wurde');
}
// Status "in Bearbeitung" überprüfen
if ($this->isPending()) {
// Status auf "abgeschlossen" setzen
$this->markActivityAsCompleted();
}
// Status "erste Ausführung" überprüfen
if ($this->isFirstExecution()) {
// Status auf "in Bearbeitung" setzen
$this->markActivityAsPending();
}
}
}
Im zweiten Beispiel wird der Status erst kurz vor Schluss von 0 (Erste Ausführung) auf 1 (in Bearbeitung gesetzt) und die Systemaktivität erreicht das Ende der Ausführung, ohne in den Status abgeschlossen gelangt zu sein. Wird sie nun das zweite Mal ausgeführt, erfolgt die Prüfung auf in Bearbeitung und das Setzen von abgeschlossen, folglich wird die Systemaktivität erst nach dem zweiten Durchlauf erfolgreich beendet (im Simulator muss der Schritt also zweimal gesendet werden).