Mit den hier vorgestellten Klassen ist es möglich, fehlerhafte Hintergrund-Units erneut zu starten oder zu löschen. Es gibt jeweils eine Klasse für die Kombinationen bgRFC Typ t und Typ q für Inbound und Outbound.
Grafik: Client-Methoden
Die Methode GET_UNIT_STATE liefert den folgenden Status einer Hintergrund-Unit zurück:
Rückgabewert |
Bedeutung |
IF_BGRFC_CLIENT=> |
Die Unit unit_id kann noch nicht ausgeführt werden, da aufgrund der definierten Queues zuvor noch andere Units ausgeführt werden müssen. |
IF_BGRFC_CLIENT=> |
Die Unit unit_id kann nicht ausgeführt werden, da eine Sperre auf dieser Unit sitzt, oder die Unit in einer gesperrten Queue enthalten ist. |
IF_BGRFC_CLIENT=> |
Die Unit unit_id konnte aufgrund eines Kommunikationsfehlers zum Zielsystem nicht ausgeführt werden. |
IF_BGRFC_CLIENT=> |
Bei der Ausführung der Unit unit_id ist ein Fehler aufgetreten. |
IF_BGRFC_CLIENT=> |
Die Unit unit_id wurde bereits ausgeführt oder der Wert unit_id spezifiziert keine gültige Unit. |
IF_BGRFC_CLIENT=> |
Die Unit unit_id ist ausführbar. |
IF_BGRFC_CLIENT=> |
Die Unit unit_id wird gerade ausgeführt. |
IF_BGRFC_CLIENT=> QUEUE_STATE_UNKNOWN |
Der Status der Unit ist unbekannt. |
Sind mehrere Rückgabewerte möglich, so wird der in der am weitesten oben stehende zurückgegeben.
Für qRFC-Units kann zusätzlich über die Methode GET_QUEUE_STATE der Status einer Queue abgefragt werden. Folgende Status können zurückgemeldet werden:
Rückgabewert |
Bedeutung |
IF_BGRFC_CLIENT=> |
Die erste Unit der Queue ist gesperrt. Dieser Wert wird auch zurückgegeben, wenn eine an der aktuellen Queue-Position gesetzte Queue-Sperre den Anfang einer Queue erreicht hat. |
IF_BGRFC_CLIENT=> |
Die oberste Unit der Queue konnte aufgrund eines Kommunikationsfehlers zum Zielsystem nicht ausgeführt werden. |
IF_BGRFC_CLIENT=> |
Bei der Ausführung der obersten Unit der Queue ist ein Fehler aufgetreten. |
IF_BGRFC_CLIENT=> |
Die Queue ist leer. |
IF_BGRFC_CLIENT=> |
Die erste Unit der Queue ist ausführbar. |
IF_BGRFC_CLIENT=> |
Die erste Unit der Queue wird gerade ausgeführt. |
IF_BGRFC_CLIENT=> UNIT_STATE_BLOCKED |
Die Unit wird durch eine vorhergehende Unit blockiert. |
IF_BGRFC_CLIENT=> UNIT_STATE_EXECUTED |
Die Unit ist erfolgreich ausgerführt. |
IF_BGRFC_CLIENT=> UNIT_STATE_INVALID_UNIT_ID |
Unbekannte Unit ID. |
IF_BGRFC_CLIENT=> UNIT_STATE_RETRY |
Die Unit soll erneut Ausgeführt warden und ist deshalb gesperrt. |
IF_BGRFC_CLIENT=> UNIT_STATE_UNKNOWN |
Der Status der Unit ist unbekannt. |
Sollte eine Queue durch eine fehlerhafte Unit blockiert werden, so kann die unit_id dieser Unit durch den Aufruf der Methode GET_FAILD_UNIT_BY_QUEUE ermittelt werden.
Eine fehlerhafte Unit kann durch den Aufruf von RUN_FAILED_UNIT erneut gestartet werden. Die Methode zwingt den Scheduler die Unit erneut zu starten und wartet nicht bis die Ausführung der unit beendet ist. Die Anzahl der nachträglichen Startversuche und der Zeitpunkt des letzten Startversuchs einer Unit wird automatisch mitprotokolliert und im Monitor angezeigt. Nach der erfolgreichen Verarbeitung der Unit wird die Unit gelöscht und eventuell nachfolgende Units werden automatisch vom Scheduler gestartet. Ist die Verarbeitung der Unit nicht erfolgreich gewesen, so blockiert diese Unit weiterhin die entsprechenden Queues. Die Exception CX_RFC_NO_FAILED_LUW wird ausgelöst, wenn die mitgegebene Unit nicht auf einen Fehler gelaufen ist. Die Exception CX_RFC_INVALID_LUW mit dem Textelement LUW_NOT_FOUND gibt an, dass es keine Unit mit dieser unit_id gibt.
Eine fehlerhafte Unit kann mit der Methode DELETE_FAILED_UNIT gelöscht werden. Dieses Löschen wird immer durch einen Tracesatz protokolliert.