Available only in PRO Edition

Kritischer Pfad

Diese Funktionalität ist nur in der PRO-Edition verfügbar

Der kritische Pfad stellt eine Abfolge von Aufgaben dar, die nicht verzögert werden können, ohne die gesamte Projektzeitlinie zu beeinflussen. Er zeigt auch die kürzeste mögliche Dauer für den Abschluss des Projekts.

Eine Aufgabe wird kritisch, wenn sie keine Pufferzeit hat, was bedeutet, dass jede Verzögerung bei dieser Aufgabe das Abschlussdatum des Projekts direkt beeinflusst. Eine detaillierte Erklärung, wie der kritische Pfad berechnet wird, finden Sie im Abschnitt Kritische Pfadlogik. Pufferzeit bezieht sich auf die Zeitspanne, die eine Aufgabe verzögert werden kann, ohne andere Aufgaben oder das Projektabschlussdatum zu beeinflussen.

Um diese Funktion zu nutzen, stellen Sie sicher, dass Sie sie über die Methode gantt.plugins aktivieren.

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

Das Gantt-Diagramm zur Anzeige des kritischen Pfades veranlassen

<!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 wird hier eingefügt
</body>
</html>

Related sample:  Critical path

Sobald diese Eigenschaft aktiv ist, überwacht dhtmlxGantt automatisch den Status der Aufgaben und aktualisiert den kritischen Pfad entsprechend. Kritische Aufgaben und Verknüpfungen werden den CSS-Klassen 'critical_task' bzw. 'critical_link' zugewiesen.

Wann immer eine Aufgabe aktualisiert wird, berechnet dhtmlxGantt den kritischen Pfad neu und zeichnet die Daten neu. Dieser Prozess kann manchmal zu Leistungsproblemen führen. Um dem entgegenzuwirken, bietet die Komponente Methoden zum Überprüfen spezifischer Aufgaben oder Verknüpfungen, was einen leistungsfreundlicheren Ansatz zur Anzeige des kritischen Pfades ermöglicht.

Kritische Pfadlogik

Eine Aufgabe wird unter folgenden Bedingungen als kritisch identifiziert:

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

2. Die Aufgabe ist mit einer anderen kritischen Aufgabe verknüpft, ohne Verzögerung zwischen ihnen.

Die Verzögerung wird durch den gantt.config.duration_unit Parameter bestimmt. Wenn beispielsweise die duration_unit auf 'day' gesetzt ist und die Dauer zwischen den Aufgaben einige Stunden beträgt, gelten folgende Rundungsregeln:

  • Wenn die Dauer 12 Stunden oder mehr beträgt, wird abgerundet.
  • Wenn die Dauer weniger als 12 Stunden beträgt, wird aufgerundet.

Der Verzögerungsparameter in einem Verknüpfungsobjekt ermöglicht es Ihnen, die Dauer zwischen Aufgaben anzupassen. Wenn Sie beispielsweise lag auf 1 setzen, wird die Aufgabe kritisch, wenn der Abstand zwischen den Aufgaben 1 beträgt.

Hier sind 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 gantt.config.project_end Parameter ist definiert, und die Aufgabendaten überschreiten das gantt.config.project_end Datum.

Die eingebaute Logik zur Bestimmung des kritischen Pfades kann nicht geändert werden. Sie können jedoch das Verhalten des kritischen Pfades anpassen.

Überprüfung, ob eine Aufgabe kritisch ist

Um zu überprüfen, ob eine Aufgabe kritisch ist, verwenden Sie die Methode gantt.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üfung, ob eine Verknüpfung kritisch ist

Um zu überprüfen, ob eine Verknüpfung kritisch ist (die zwei kritische Aufgaben verbindet), verwenden Sie die Methode gantt.isCriticalLink:

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

Related sample:  Critical path

Ermittlung von freiem und Gesamtpuffer

Freier Puffer ist die Zeitspanne, um die eine Aufgabe verlängert oder verschoben werden kann, ohne die nächste verbundene Aufgabe zu beeinflussen.

Diese Metrik gilt für Aufgaben vom Typ 'task' und 'milestone'. Um den freien Puffer zu berechnen, verwenden Sie die Methode gantt.getFreeSlack, die ein Aufgabenobjekt als Argument nimmt:

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

Related sample:  Show Slack time

Gesamter Puffer ist der Zeitpuffer, der es erlaubt, eine Aufgabe zu verlängern oder zu verschieben, ohne den Abschluss des Projekts zu verzögern.

Der gesamte Puffer gilt für alle Aufgabentypen, einschließlich Projekten. Verwenden Sie die Methode gantt.getTotalSlack, um ihn abzurufen:

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

Related sample:  Show Slack time

Slack

Anpassen des Verhaltens des kritischen Pfades

Standardmäßig wendet das Gantt-Diagramm Standardverhalten für den kritischen Pfad an, einschließlich automatischer Neuberechnung und Standardstil.

Um die Sichtbarkeit des kritischen Pfades umzuschalten, verwenden Sie den folgenden Ansatz:

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

Dies kann hilfreich sein, wenn Sie mit einer großen Anzahl von Aufgaben arbeiten, da die Neuberechnung des kritischen Pfades die Leistung beeinträchtigen könnte.

Um den kritischen Pfad manuell neu zu berechnen und den entsprechenden Stil anzuwenden, verwenden Sie den 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: "Büroumzug", open:true, type:"project" },
        { id: 2, text: "Büroausstattung", start_date: "21-07-2020", 
            duration: "20", parent: "1" },
        { id: 3, text: "Möbelinstallation", start_date: "21-07-2020", 
            duration: "5", parent: "1" },
        { id: 4, text: "Mitarbeiterumzug", start_date: "28-07-2020", 
            duration: "15", parent: "1" },
        { id: 5, text: "Innenausbau Büro", 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 auch Aufgaben und Verknüpfungen manuell hervorheben:

  • Die Rückgabe von "gantt_critical_task" in der task_class Vorlage hebt eine Aufgabe als kritisch hervor.
  • Die Rückgabe von "gantt_critical_link" in der link_class Vorlage hebt eine Verknüpfung als kritisch hervor.

Zugehöriges Beispiel: Benutzerdefinierter kritischer Pfad pro Projekt

Einstellen von Verzögerungs- und Vorlaufzeiten zwischen Aufgaben

Verzögerungs- und Vorlaufzeiten zwischen Aufgaben im kritischen Pfad können konfiguriert werden. Details sind hier verfügbar.

Planung abgeschlossener Aufgaben

Standardmäßig behandelt der Algorithmus für den kritischen Pfad abgeschlossene Aufgaben (die einen Fortschrittswert von 1 haben) genauso wie unvollständige Aufgaben.

Um dieses Verhalten zu ändern, aktivieren Sie die Einstellung gantt.config.auto_scheduling_use_progress:

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.

Zusätzliche Details sind auf der API-Seite verfügbar.

Zurück nach oben