プロジェクトのタスクとリソース割り当ての再スケジュール
効率的なプロジェクト管理では、現実の変化を反映するためにスケジュールを調整することがよく必要になります。タスクが遅延したり、締め切りが変更されたり、リソースが利用できなくなることがあります。Aspose.Tasks for .NET は、プロジェクト全体や個々のタスクを再スケジュールするための強力なツールを提供し、プロジェクトマネージャーがタイムラインを正確かつ最新に保つのに役立ちます。
開始日または終了日からのプロジェクト再スケジュール
この機能により、開発者は新しい開始日または終了日に基づいてプロジェクト全体のスケジュールを移動できます。たとえば、プロジェクト開始が延期された場合、すべてのタスクを簡単に前倒しできます。同様に、締め切りが調整された場合は、終了日から再計算することで依存タスクが適切に整合されます。
プロジェクトの終了日を設定してから次を呼び出すことで、終了日から日付を再計算できます。 Project.Recalculate().
終了日からプロジェクトを再スケジュールするためのプログラミング例
以下のコードは C# を使用してこれを実現する方法を示します。
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;
開始日からプロジェクトを再スケジュールするためのプログラミング例
以下のコードは C# を使用してこれを実現する方法を示します。
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;
プロジェクトの更新と未完了作業の再スケジュール
Microsoft Project は、指定した日付までの作業を更新および再スケジュールする機能を提供します。これにより、指定日までに完了した作業を特定し、指定した日付から未完了の作業を再スケジュールできます。Aspose.Tasks の Project API は、次の機能を公開することで同様の機能を提供します: UpdateProjectWorkAsComplete と RescheduleUncompletedWorkToStartAfter メソッド。このトピックでは、これら両方のメソッドを単一の使用例として示す実用例を提供します。
プロジェクトファイルの更新
以下の例は、指定日までにプロジェクトを更新する方法を示します。 UpdateProjectWorkAsComplete メソッドは、指定日までのすべての作業をプロジェクト全体について完了として更新します。
- 入力の Boolean パラメーターが true に設定されている場合、メソッドは、指定された完了日より前に終了日を持つタスクのみを 100% 完了として更新します。
- 入力の Boolean パラメーターが false に設定されている場合、メソッドはスケジュールの状態と完了日を基に進捗率を計算します。
- タスクのリストが指定された場合、メソッドはそのタスクリストに対して指定日までのすべての作業を完了として更新します。
これにより、実際の進捗を計画スケジュールと迅速に整合させ、プロジェクトの論理を損なうことなく未完了の作業を前倒しできます。
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);
再スケジュールはプロジェクト管理において重要な要素であり、状況が変化したときに計画を現実的に保つことを保証します。Aspose.Tasks for .NET を使用すると、プロジェクトの開始日や終了日をシームレスに調整し、特定の時点までの進捗を更新し、未完了のタスクを前方に移動できます。これらの機能は、正確なスケジュールの維持、リソース計画の改善、関係者にプロジェクトの実際の状況を通知するのに役立ちます。