Available only in PRO Edition

Kritischer Pfad

Diese Funktion ist ausschließlich in der PRO-Edition verfügbar

Der kritische Pfad stellt eine Abfolge von Aufgaben dar, die nicht verschoben werden können, ohne das gesamte Projekt zu verzögern.
Er definiert außerdem die minimale Dauer, die zur Fertigstellung des Projekts erforderlich ist.

Eine Aufgabe gilt als kritisch, wenn sie keinen Puffer (Slack Time) hat, d.h. jede Verzögerung dieser Aufgabe wirkt sich direkt auf das Projekt-Enddatum aus. Weitere Details zur Berechnung des kritischen Pfads finden Sie im Abschnitt Logik des kritischen Pfads.
Pufferzeit bezeichnet die Zeitspanne, um die eine Aufgabe verzögert werden kann, ohne nachfolgende Aufgaben oder den gesamten Projekttermin zu beeinflussen.

Um diese Erweiterung zu nutzen, aktivieren Sie sie über die Methode gantt.plugins.

Um den kritischen Pfad im Gantt-Diagramm anzuzeigen, setzen Sie die Eigenschaft highlight_critical_path auf 'true':

Aktivierung der Anzeige des kritischen Pfads im Gantt-Diagramm

<!DOCTYPE html>
<html>
<head>
   <script src="codebase/dhtmlxgantt.js"></script>   
   <link href="codebase/dhtmlxgantt.css" rel="stylesheet">   
</head>
<body>
    gantt.plugins({         critical_path: true     });     gantt.config.highlight_critical_path = true;
    //Ihr Code kommt hier hin
</body>
</html>

Related sample:  Critical path

Wenn diese Eigenschaft aktiviert ist, überwacht dhtmlxGantt automatisch den Aufgabenstatus und aktualisiert entsprechend den kritischen Pfad. Kritische Aufgaben und Verbindungen erhalten zusätzliche CSS-Klassen mit den Namen 'critical_task' bzw. 'critical_link'.

Jedes Mal, wenn eine Aufgabe aktualisiert wird, zeichnet dhtmlxGantt die Daten vollständig neu, um den kritischen Pfad neu zu berechnen. Dieser Vorgang kann gelegentlich die Leistung beeinträchtigen. Um dem entgegenzuwirken, stellt die Komponente öffentliche Methoden zur Verfügung, mit denen gezielt bestimmte Aufgaben oder Verbindungen überprüft werden können, um den kritischen Pfad ressourcenschonender anzuzeigen.

Logik des kritischen Pfads

Gantt markiert eine Aufgabe unter folgenden Bedingungen als kritisch:

1. Die Aufgabe hat das späteste Enddatum im gesamten Diagramm.

2. Die Aufgabe ist mit einer kritischen Aufgabe ohne Verzögerung (Lag) verbunden.

Die Verzögerung (Lag) hängt von der Einstellung gantt.config.duration_unit ab. Wenn duration_unit auf 'day' gesetzt ist und die Aufgabendauer mehrere Stunden umfasst, rundet Gantt die Dauer wie folgt:

  • ab, wenn die Dauer 12 Stunden oder mehr beträgt
  • auf, wenn sie weniger als 12 Stunden beträgt

Wenn ein Verbindungsobjekt einen Lag-Parameter enthält, modifiziert dieser die Dauer zwischen Aufgaben. Beispielsweise bedeutet ein Lag von 1, dass die Aufgabe dann kritisch wird, wenn die Dauer zwischen Aufgaben 1 beträgt.

Hier Beispiele mit unterschiedlichen link.lag-Werten:

  • link.lag ist 0
const tasks = {
    "data": [
        ...
    ],
    "links": [
        ...
        { "id": 3, "source": 3, "target": 4, "lag": 0, "type": "0" },
 
    ]
}

  • link.lag ist 1
const tasks = {
    "data": [
        ...
    ],
    "links": [
        ...
        { "id": 3, "source": 3, "target": 4, "lag": 1, "type": "0" }, 
 
    ]
}

  • link.lag ist -1
const tasks = {
    "data": [
        ...
    ],
    "links": [
        ...
        { "id": 3, "source": 3, "target": 4, "lag": -1, "type": "0" },
 
    ]
}

3. Der Parameter gantt.config.project_end ist gesetzt und die Aufgabendaten gehen über dieses Datum hinaus.

Die eingebaute Logik des kritischen Pfads kann derzeit nicht angepasst werden. Sie können jedoch das Verhalten des kritischen Pfads anpassen.

Überprüfen, ob eine Aufgabe kritisch ist

Um zu bestimmen, ob eine Aufgabe kritisch ist, verwenden Sie die Methode isCriticalTask:

gantt.config.highlight_critical_path = true; gantt.init("gantt_here");
gantt.parse(tasks);
 
gantt.isCriticalTask(gantt.getTask("task3"));// ->'true'

Related sample:  Critical path

Überprüfen, ob eine Verbindung kritisch ist

Um zu prüfen, ob eine Verbindung zwei kritische Aufgaben verbindet, verwenden Sie die Methode isCriticalLink:

gantt.isCriticalLink(gantt.getLink("link1"));

Related sample:  Critical path

Freien und gesamten Puffer ermitteln

Freier Puffer ist die Zeitspanne, um die eine Aufgabe oder ein Meilenstein verlängert oder verschoben werden kann, ohne die nächste verbundene Aufgabe zu verzögern.

Freier Puffer gilt für die Typen 'task' und 'milestone'.

Um den freien Puffer einer Aufgabe zu ermitteln, verwenden Sie die Methode getFreeSlack und übergeben das Aufgabenobjekt:

var task = gantt.getTask(7);
gantt.getFreeSlack(task);

Related sample:  Show Slack time

Gesamter Puffer bezeichnet die Zeit, um die eine Aufgabe verzögert werden kann, ohne das gesamte Projektende zu beeinflussen.

Der gesamte Puffer kann für alle Aufgabentypen, einschließlich Projekte, berechnet werden.

Um den gesamten Puffer einer Aufgabe zu erhalten, verwenden Sie die Methode getTotalSlack mit dem Aufgabenobjekt:

var task = gantt.getTask(7);
gantt.getTotalSlack(task);

Related sample:  Show Slack time

Slack

Anpassen des Verhaltens des kritischen Pfads

Standardmäßig verwendet gantt das Standardverhalten für den kritischen Pfad, einschließlich der Standard-Hervorhebungsstile und der Neuberechnung des Pfads bei jeder Datenänderung.

Um die Sichtbarkeit des kritischen Pfads zu steuern, können Sie diese Methode verwenden:

var isEnabled = false
function updateCriticalPath(){
    isEnabled = !isEnabled;
 
    gantt.config.highlight_critical_path = isEnabled;
 
    gantt.render();
}

Dieser Ansatz ist hilfreich, wenn viele Aufgaben verwaltet werden, da das häufige Neuberechnen des kritischen Pfads die Leistung beeinträchtigen kann.

Um den kritischen Pfad und die Hervorhebung manuell zu aktualisieren, verwenden Sie folgenden Ansatz:

gantt.templates.task_class = function(start, end, task){
    if(gantt.isCriticalTask(task))
        return "critical_task";
      return "";
};
 
gantt.templates.link_class = function(link){
    if(gantt.isCriticalLink(link))
        return "critical_link";
      return "";
};
 
var data = {
    tasks: [
        { id: 1, text: "Office itinerancy", open:true, type:"project" },
        { id: 2, text: "Office facing", start_date: "21-07-2020", 
            duration: "20", parent: "1" },
        { id: 3, text: "Furniture installation", start_date: "21-07-2020", 
            duration: "5", parent: "1" },
        { id: 4, text: "The employee relocation", start_date: "28-07-2020", 
            duration: "15", parent: "1" },
        { id: 5, text: "Interior office", start_date: "28-07-2020", 
            duration: "15", parent: "1" }
    ],
    links: [
        { id: "1", source: "2", target: "3", type: "0" },
        { id: "2", source: "3", target: "4", type: "0" },
        { id: "3", source: "4", target: "5", type: "0" }
    ]
};
gantt.init("gantt_here");
 
gantt.parse(data);


Sie können Aufgaben und Verbindungen auch manuell hervorheben:

  • Die Rückgabe von "gantt_critical_task" im task_class-Template hebt die Aufgabe als kritisch hervor.
  • Die Rückgabe von "gantt_critical_link" im link_class-Template hebt die Verbindung als kritisch hervor.

Beispiel: Custom critical path per project

Festlegen von Lag- und Leadzeiten zwischen Aufgaben

Lag- und Leadzeiten zwischen Aufgaben des kritischen Pfads können konfiguriert werden. Details finden Sie hier.

Planung abgeschlossener Aufgaben

Standardmäßig behandelt der Algorithmus des kritischen Pfads abgeschlossene Aufgaben (mit Fortschrittswert 1) genauso wie unvollständige Aufgaben.

Optional können Sie die Konfiguration auto_scheduling_use_progress aktivieren, um dieses Verhalten zu ändern:

gantt.config.auto_scheduling_use_progress = true;
 
gantt.init("gantt_here");

Mit dieser Einstellung werden abgeschlossene Aufgaben vom kritischen Pfad und der automatischen Planung ausgeschlossen.

Weitere Informationen finden Sie auf der API-Seite.

Zurück nach oben