Neuplanung von Projektaufgaben und Ressourcenzuweisungen

Effizientes Projektmanagement erfordert oft die Anpassung von Zeitplänen, um reale Veränderungen widerzuspiegeln. Aufgaben können sich verzögern, Fristen verschieben oder Ressourcen nicht verfügbar werden. Aspose.Tasks for .NET bietet leistungsstarke Werkzeuge, um gesamte Projekte oder einzelne Aufgaben neu zu terminieren und Projektleitern zu helfen, Zeitpläne genau und aktuell zu halten.

Projekt vom Start- oder Fertigstellungsdatum neu planen

Diese Funktion ermöglicht es Entwicklern, den gesamten Zeitplan eines Projekts anhand eines neuen Start- oder Fertigstellungsdatums zu verschieben. Wenn beispielsweise der Projektstart verschoben wird, können Sie alle Aufgaben leicht nach vorne verschieben. Ebenso stellt eine Neuberechnung vom Fertigstellungsdatum sicher, dass alle abhängigen Aufgaben korrekt ausgerichtet werden.

Wir können die Daten vom Fertigstellungsdatum neu berechnen, indem wir das Projekt-Fertigstellungsdatum festlegen und dann Project.Recalculate().

Programmierbeispiel: Projekt vom Fertigstellungsdatum neu planen

Die folgenden Codezeilen zeigen, wie dies mit C# erreicht werden kann.

1Project project = new Project("New Project.mpp");
2project.Set(Prj.ScheduleFromStart, false);
3project.Set(Prj.FinishDate, new DateTime(2020, 1, 1));
4
5// Now all tasks dates (Start, Finish, EarlyStart, EarlyFinish, LateStart, LateFinish) are calculated. To get the critical path we need to calculate slacks (can be invoked in separate thread, but only after calculation of all early/late dates)
6project.Recalculate();
7TaskCollection criticalPath = project.CriticalPath;

Programmierbeispiel: Projekt vom Startdatum neu planen

Die folgenden Codezeilen zeigen, wie dies mit C# erreicht werden kann.

1Project project = new Project("New Project.mpp");
2project.Set(Prj.ScheduleFromStart, true);
3project.Set(Prj.StartDate, new DateTime(2014, 1, 1));
4
5// Now all tasks dates (Start, Finish, EarlyStart, EarlyFinish, LateStart, LateFinish) are calculated. To get the critical path we need to calculate slacks (can be invoked in separate thread, but only after calculation of all early/late dates)
6project.Recalculate();
7TaskCollection criticalPath = project.CriticalPath;

Projekt aktualisieren und unvollendete Arbeit neu planen

Microsoft Project bietet die Möglichkeit, Arbeiten bis zu einem festgelegten Datum zu aktualisieren und neu zu terminieren. Dies hilft, bis zu dem angegebenen Datum abgeschlossene Arbeiten zu identifizieren und nicht abgeschlossene Arbeiten ab einem bestimmten Datum neu zu planen. Aspose.Tasks’s Project API stellt dieselbe Funktionalität bereit, indem sie die UpdateProjectWorkAsComplete und RescheduleUncompletedWorkToStartAfter-Methoden. Dieses Thema enthält ein funktionierendes Beispiel für beide Methoden in einem einzigen Anwendungsfall.

Projektdateien aktualisieren

Das folgende Beispiel zeigt, wie ein Projekt bis zu einem angegebenen Datum aktualisiert wird. Die UpdateProjectWorkAsComplete Methode markiert alle Arbeiten bis zu einem angegebenen Datum als abgeschlossen für das gesamte Projekt.

  1. Wenn der boolesche Eingabeparameter auf true gesetzt ist, aktualisiert die Methode nur diejenigen Aufgaben auf 100 %, deren Fertigstellungsdaten vor dem angegebenen Abgeschlossen-bis-Datum liegen.
  2. Wenn der boolesche Eingabeparameter auf false gesetzt ist, berechnet die Methode einen Prozentsatz des Abschlusses basierend auf dem geplanten Zustand und den Abgeschlossen-bis-Daten.
  3. Wenn eine Liste von Aufgaben angegeben ist, aktualisiert die Methode alle Arbeiten bis zum angegebenen Datum als abgeschlossen für diese Aufgabenliste.

Dadurch ist es möglich, den tatsächlichen Fortschritt schnell mit dem geplanten Zeitplan abzugleichen und unvollendete Arbeiten nach vorne zu verschieben, ohne die Projektlogik zu beeinträchtigen.

 1// Create a new project and set start date
 2Project project = new Project();
 3project.Set(Prj.StartDate, new DateTime(2014, 1, 27, 8, 0, 0));
 4
 5// Add new tasks
 6Task task1 = project.RootTask.Children.Add("Task 1");
 7Task task2 = project.RootTask.Children.Add("Task 2");
 8task2.Set(Tsk.Duration, task2.ParentProject.GetDuration(16, TimeUnitType.Hour));
 9Task task3 = project.RootTask.Children.Add("Task 3");
10task3.Set(Tsk.Duration, task2.ParentProject.GetDuration(24, TimeUnitType.Hour));
11Task task4 = project.RootTask.Children.Add("Task 4");
12task4.Set(Tsk.Duration, task2.ParentProject.GetDuration(16, TimeUnitType.Hour));
13Task task5 = project.RootTask.Children.Add("Task 5");
14task5.Set(Tsk.Duration, task2.ParentProject.GetDuration(16, TimeUnitType.Hour));
15
16// Add links between tasks
17TaskLink link12 = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);
18TaskLink link23 = project.TaskLinks.Add(task2, task3, TaskLinkType.FinishToStart);
19// One day lag
20link23.LinkLag = 4800; 
21TaskLink link34 = project.TaskLinks.Add(task3, task4, TaskLinkType.FinishToStart);
22TaskLink link45 = project.TaskLinks.Add(task4, task5, TaskLinkType.FinishToStart);
23
24// Add new tasks
25Task task6 = project.RootTask.Children.Add("Task 6");
26Task task7 = project.RootTask.Children.Add("Task 7");
27task7.Set(Tsk.Duration, task7.ParentProject.GetDuration(24, TimeUnitType.Hour));
28Task task8 = project.RootTask.Children.Add("Task 8");
29task8.Set(Tsk.Duration, task2.ParentProject.GetDuration(16, TimeUnitType.Hour));
30Task task9 = project.RootTask.Children.Add("Task 9");
31task9.Set(Tsk.Duration, task2.ParentProject.GetDuration(16, TimeUnitType.Hour));
32Task task10 = project.RootTask.Children.Add("Task 10");
33
34// Add links between tasks
35TaskLink link67 = project.TaskLinks.Add(task6, task7, TaskLinkType.FinishToStart);
36TaskLink link78 = project.TaskLinks.Add(task7, task8, TaskLinkType.FinishToStart);
37TaskLink link89 = project.TaskLinks.Add(task8, task9, TaskLinkType.FinishToStart);
38TaskLink link910 = project.TaskLinks.Add(task9, task10, TaskLinkType.FinishToStart);
39task6.Set(Tsk.IsManual, true);
40task7.Set(Tsk.IsManual, true);
41task8.Set(Tsk.IsManual, true);
42task9.Set(Tsk.IsManual, true);
43task10.Set(Tsk.IsManual, true);
44
45// Save project before and after updating work as completed 
46project.Save("RescheduleUncompletedWork_not updated_out.xml", SaveFileFormat.XML);
47project.UpdateProjectWorkAsComplete(new DateTime(2014, 1, 28, 17, 0, 0), false);
48project.Save("RescheduleUncompletedWork_updated_out.xml", SaveFileFormat.XML);
49
50// Save project after rescheduling uncompleted work
51project.RescheduleUncompletedWorkToStartAfter(new DateTime(2014, 2, 7, 8, 0, 0));
52project.Save("RescheduleUncompletedWork_rescheduled_out.xml", SaveFileFormat.XML);

Die Neuplanung ist ein entscheidender Bestandteil des Projektmanagements, der sicherstellt, dass Pläne realistisch bleiben, wenn sich die Bedingungen ändern. Mit Aspose.Tasks for .NET können Sie nahtlos Projektstart- oder Fertigstellungstermine anpassen, den Fortschritt bis zu einem bestimmten Zeitpunkt aktualisieren und nicht abgeschlossene Aufgaben nach vorne verschieben. Diese Funktionen tragen dazu bei, genaue Zeitpläne beizubehalten, die Ressourcenplanung zu verbessern und die Beteiligten über den tatsächlichen Stand des Projekts zu informieren.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.