Show TOC Anfang des Inhaltsbereichs

Vorgehensweisen RFC Client Side Runtime Control  Dokument im Navigationsbaum lokalisieren

Verwendung

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.

BeispielGrafik: Client-Methoden

Diese Grafik wird im zugehörigen Text erklärt

 

Vorgehensweise

Die Methode GET_UNIT_STATE liefert den folgenden Status einer Hintergrund-Unit zurück:

 

Rückgabewert

Bedeutung

IF_BGRFC_CLIENT=>
  UNIT_STATE_BLOCKED

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=>
  UNIT_STATE_LOCKED

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=>
  UNIT_STATE_COMMUNICATION_ERR

Die Unit unit_id konnte aufgrund eines Kommunikationsfehlers zum Zielsystem nicht ausgeführt werden.

IF_BGRFC_CLIENT=>
  UNIT_STATE_EXECUTION_ERR

Bei der Ausführung der Unit unit_id ist ein Fehler aufgetreten.

IF_BGRFC_CLIENT=>
  UNIT_STATE_EXECUTED

Die Unit unit_id wurde bereits ausgeführt oder der Wert unit_id spezifiziert keine gültige Unit.

IF_BGRFC_CLIENT=>
  UNIT_STATE_RUNNABLE

Die Unit unit_id ist ausführbar.

IF_BGRFC_CLIENT=>
  UNIT_STATE_IN_EXECUTION

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=>
  QUEUE_STATE_LOCKED

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=>
  QUEUE_STATE_COMMUNICATION_ERR

Die oberste Unit der Queue konnte aufgrund eines Kommunikationsfehlers zum Zielsystem nicht ausgeführt werden.

IF_BGRFC_CLIENT=>
  QUEUE_STATE_EXECUTION_ERR

Bei der Ausführung der obersten Unit der Queue ist ein Fehler aufgetreten.

IF_BGRFC_CLIENT=>
  QUEUE_STATE_EMPTY

Die Queue ist leer.

IF_BGRFC_CLIENT=>
  QUEUE_STATE_RUNNABLE

Die erste Unit der Queue ist ausführbar.

IF_BGRFC_CLIENT=>
  QUEUE_STATE_IN_EXECUTION

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.

 

 

 

Ende des Inhaltsbereichs