Beendigung einer Aktivität erzwingen

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

  1. 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.

  2. 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.

Zugehörige Konzepte
Abfragen für Business-Prozessobjekte und taskbezogene Objekte

Rechtliche Hinweise |

Letzte Aktualisierung: LASTUPDATEDVAR

(c) Copyright IBM Corporation 2005.
Dieses Information Center basiert auf Eclipse-Technologie. (http://www.eclipse.org)