Anlass und Zeitpunkt für die Ausführung dieser Task
Aktivitäten in Dauerprozessen können gelegentlich Fehler aufweisen.
Wenn diese Fehler vom Fehlerhandler
im übergeordneten Bereich nicht gefunden werden und die zugeordnete Aktivitätsschablone
angibt, dass die Aktivität beim Auftreten von Fehlern zu stoppen ist, wird die Aktivität
in den Stoppstatus versetzt, damit sie repariert werden kann. In diesem Status können Sie die Beendigung
der Aktivität erzwingen.
Sie können auch die Beendigung von Aktivitäten im aktiven Status im erzwingen, wenn
eine Aktivität beispielsweise nicht antwortet.
Für bestimmte Aktivitätstypen gelten zusätzliche
Voraussetzungen.
- Staff-Aktivitäten
- In dem Aufruf für erzwungene Beendigung können Sie Parameter übergeben (z. B.
eine Nachricht, die gesendet werden sollte, oder den Fehler der gemeldet werden
sollte).
- Script-Aktivitäten
- In dem Aufruf für erzwungene Beendigung können keine Parameter übergeben werden. Sie müssen
jedoch die Variablen festlegen, die repariert werden müssen.
- Aufrufaktivitäten
- Sie können auch die Beendigung von Aufrufaktivitäten erzwingen, die einen asynchronen
Service aufrufen, der kein Unterprozess ist, wenn sich diese Aktivitäten um Laufstatus befinden.
Dies kann beispielsweise hilfreich sein, wenn der aufgerufene asynchrone Service nicht
reagiert.
Erforderliche Schritte für diese Task
- Listen Sie die gestoppten Aktivitäten im Stoppstatus auf.
QueryResultSet result =
process.query("DISTINCT ACTIVITY.AIID",
"ACTIVITY.STATE = ACTIVITY.STATE.STATE_STOPPED AND
PROCESS_INSTANCE.NAME='Kundenbestellung'",
null, null, null);
Diese Aktion gibt die gestoppten Aktivitäten
für die Prozessinstanz 'Kundenbestellung' zurück.
- Führen Sie die Aktivität, z. B. eine gestoppte Staff-Aktivität, durch.
In diesem Beispiel wird eine Ausgabenachricht übergeben.
if (result.size() > 0)
{
result.first();
AIID aiid = (AIID) result.getOID(1);
ActivityInstanceData activity = process.getActivityInstance(aiid);
ClientObjectWrapper output =
process.createMessage(aiid, activity.getOutputMessageTypeName());
DataObject myMessage = null;
if ( output.getObject()!= null && output.getObject() instanceof DataObject )
{
myMessage = (DataObject)output.getObject();
// Festlegen der Teile in der Nachricht (z. B. eine Bestellnummer)
myMessage.setInt("Bestellnr", 4711);
}
boolean continueOnError = true;
process.forceComplete(aiid, output, continueOnError);
}
Diese Aktion beendet die Aktivität. Wenn ein
Fehler auftritt, bestimmt der Parameter continueOnError die
durchzuführende Aktion bei einem Fehler während der Verarbeitung der Anforderung
forceComplete.
In dem angegebenen Beispiel ist
continueOnError auf 'true' gesetzt.
Dieser Wert gibt an, dass die Aktivität bei Auftreten eines Fehlers
während der Verarbeitung der Anforderung forceComplete in den Fehlschlagstatus
versetzt wird. Der Fehler wird an die übergeordneten Bereiche der
Aktivität weitergegeben, bis er behoben oder der Prozessbereich
erreicht ist. Anschließend wird der Prozess in den Status für anstehendes
Fehlschlagen versetzt, bis er schließlich den Status für fehlgeschlagen
erreicht.