Lade...
 

CX_DB_UTILITY::MoveFrameBatch

CX_DB_UTILITY::MoveFrameBatch

213694
Beschreibung:

Diese Methode führt die gleiche Operation durch, wie MoveFrame, jedoch mit dem Unterschied, dass die Objekte nicht aus einer Collection geladen werden, sondern aus einer Datei und der Prozess dadurch nicht alle Objekte durchgehend im Address-Space halten muss und auch zu jeder Zeit fortgesetzt werden kann.

Die Datei, aus der die Objekte gelesen werden muss zunächst per DumpCollection erzeugt werden.

Wie auch bei MoveFrame, kann hier über den zweiten Parameter die Anzahl der Objekte pro Transaktion gesteuert werden. 0 heißt auch hier, dass alle Objekte in einer Transaktion verarbeitet werden. Da MoveFrameBatch nach jeder Abgeschlossenen Transaktion fortgesetzt werden kann, und das ein großes Transaktionslog den Prozess eher verlangsamt, sollte hier kein zu großer Wert gewählt werden (1000 is OK). Vor jeder Transaktion schreibt MoveFrameBatch zusätzlich in die Log-Datei (Logger: cx.main - Level: INFO), welche Objekte in der aktuellen Transaktion angefasst werden, sodass beim Abbruch oder Absturz des Prozesses, der Prozess jederzeit aus der Log-Datei nach der letzten abgeschlossenen Transaktion fortgesetzt werden kann.

Auch MoveFrameBatch zeigt ein Fortschrittsfenster an, jedoch ist die Restzeitabschätzung aktuell sehr unzuverlässig.

 

Code-Beispiel:
Var(util)
GetManager(OBJECT) Call(GetDBUtility) -> util

objects "CX_SYSTEM_OUT\\objects.coll" util Call(DumpCollection)
"CX_SYSTEM_OUT\\objects.coll" 1000 0 util Call(MoveFrameBatch)

 

Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top CX_DB_UTILITY DB-Utility
  Top-1 INTEGER Start-Objekt-Index (bei 0 beginnend)
  Top-2 INTEGER Objekte pro Transaktion
  Top-3 STRING Pfad zur Datei, die per DumpCollection erzeugt wurde.
Stack(Out) Top - -

Funktionsaufruf: Call(MoveFrameBatch)