Ansicht
Dokumentation
CL_TCL_PROCESS - Klasse zur Abarbeitung von parallelen konkurierenden Tasks
BAL_S_LOG - Application Log: Log header data General Data in Customer MasterDiese Dokumentation steht unter dem Copyright der SAP AG.
Funktionalität
Die Klasse CL_TCL_PROCESS dient der Ermittlung von Abhängigkeiten bei der Verarbeitung von Prozess-Schritten. Es wurde großen Wert auf bestmögliches Laufzeiverhalten gelegt, daher eignet sich diese Klasse auch zur Darstellung von großen Prozessen mit vielen Tasks. Diese Klasse ist also ein Container für abhängige Tasks,die in der richtige Reihenfolge abgearbeitet werden müssen.
Ein Prozess besteht aus beliebig vielen Tasks. Die maximale Anzahl von Taskswird nur durch die Laufzeitumgebung beschränkt. Eine Taskwird durch einen eineindeutigen Schlüssel definiert, der über die Methode ADD_TASK als String an die Klasse CL_TCL_PROCESSübergeben wird. Die Taskswerden über die Methode NEXT_TASK generell in der gleichen Reihenfolge zurückgeliefert, in der sie über ADD_TASK an die Klasse übergeben wurden. Es wird also vorrausgesetzt, dass die Reihenfolge, in der die Taskssequentiell abgearbeitet werden könnten bereits bekannt ist.
Jede Taskkann beliebig vielen Threadszugeordnet werden. Über die Threatswird die Abhängigkeit der Tasksdefiniert. Einen Threadkann man sich wie eine Ressource vorstellen, welche zur Abarbeitung einer Taskbenötigt wird. Verwendet eine andere Taskbereits diese Ressource, so kann die aktuelle Tasknicht ausgeführt werden. Um die Threadsder Taskan die Klasse zu übergeben wird der Methode ADD_TASK ein Array von Strings übergeben. Jeder einzelen String bezeichnet die verwendete Ressource. Damit ist die Methode NEXT_TASK in der Lage zu erkennen, welche Tasksparallel abgearbeitet werden können, ohne einen Resourcen-Konflickt auszulösen. Die parallele Abarbeitung ergibt sich natürlich erst, wenn der Verwender der Klasse alle zurückgelieferten Tasks asychron abarbeitet.
Damit die Klasse erkennen kann, dass eine Taskerfolgreich abgearbeitet wurde, muss über die Methode
FINISH_TASK der
Status zurückgeliefert werden. Alle folgenden Tasks, die
eine oder mehrere Ressourcen einer Taskbenötige müssen warten, bis diese Ressourcen über die Methode
FINISH_TASK
Da es durchaus vorkommen kann, dass für eine Task von vornherein bekannt ist, dass diese nicht ausgeführt werden kann, hat die Methode ADD_TASK noch einen weiteren Parameter, über den die Verarbeitung der Task verhindert werden kann. Alle weiteren Tasks, die die selben Ressourcen verwenden werden dadurch automatisch aufgehalten, bis diese Taskwieder ensperrt wurde.
Es ist auch Möglich, eine Tasknachträglich über die Methode LOCK_TASK zu Sperren oder über DELETE_TASK zu löschen.
Der Speicher für Tasks, die abgearbeitet wurden oder gelöscht wurde wird unmittelbar freigegeben. Neue Taskskönnen jederzeit hinzugefügt werden.
Beziehungen
Die Klasse CL_TCL_PROCESSverwendet intern die Klassen
CL_TCL_VERTEX,
CL_TCL_EDGE
Beispiel
Ein ausführliches Beispiel finden sie im Programm TCL_PROCESS_EXAMPLE.
Hinweise
Die Implemetierung der Klasse CL_TCL_PROCESSwurde einfach und generisch gehalten. Daher werden zur Darstellung von Tasks und Threads Strings verwendet. Das Laufzeitverhalten der Klasse kann noch weiter verbessert werden, wenn für diese Darstellung spezielle Typen verwendet werden, die den Anforderungen des Verwenders besser entsprechen.
Weiterführende Informationen
ROGBILLS - Synchronize billing plans CPI1466 during Backup
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 5930 Date: 20240328 Time: 182801 sap01-206 ( 107 ms )