Harmonogramy projektów lub koszty możemy obliczać korzystając z trybów obliczeń zdefiniowanych w opcjach programu Microsoft Project. Harmonogram projektu pokazuje datę rozpoczęcia i zakończenia wszystkich zadań projektu. Microsoft Project umożliwia ręczne lub automatyczne obliczenie projektu. Jako programista C# możemy łatwo ustawić tryb obliczeń projektu w aplikacjach .NET i obliczyć właściwości projektu. W tym artykule dowiemy się, jak programowo obliczyć projekt przy użyciu języka C#.
W tym artykule zostaną omówione następujące tematy:
- Interfejs API języka C# do programowego obliczania projektu
- Ręczna kalkulacja projektu
- Automatyczne obliczanie projektu
- Brak trybu obliczania projektu
Interfejs API języka C# do programowego obliczania projektu
Do ustawiania trybów obliczeń projektu będziemy używać API Aspose.Tasks for .NET. Zapewnia trzy tryby obliczeń projektu, aby obliczyć wartości zależnych właściwości. Te tryby obliczeń to:
- Brak – ustawia tylko niezbędne właściwości i nie przelicza dat i kosztów projektu.
- Ręczny – ustawia tylko właściwości obiektów zależnych bez ponownego przeliczania dat i kosztów projektu.
- Automatycznie – automatycznie przelicza daty projektu i właściwości kosztów.
API definiuje wyżej wymienione tryby obliczeń w wyliczeniu CalculationMode. Właściwość CalculationMode klasy Project umożliwia ustawienie lub uzyskanie wartości CalculationMode. API pozwala również na manipulację istniejącym projektem w celu wprowadzenia pewnych modyfikacji. Ponadto ułatwia płynne wykonywanie zarówno podstawowych, jak i zaawansowanych operacji związanych z zarządzaniem projektami. Pobierz bibliotekę DLL interfejsu API lub zainstaluj ją za pomocą NuGet.
PM> Install-Package Aspose.Tasks
Ręczne obliczanie projektu przy użyciu języka C#
Możemy ustawić tryb obliczeń na ręczny i zweryfikować go, wykonując poniższe czynności:
- Najpierw utwórz instancję klasy Project.
- Następnie ustaw tryb obliczeń na Ręczny.
- Następnie określ datę rozpoczęcia projektu.
- Następnie dodaj nowe zadania, np. Zadanie 1 i Zadanie 2.
- Następnie przeczytaj właściwości zadania ustawione w trybie ręcznym.
- Następnie zainicjuj obiekt klasy TaskLinks i połącz zadania.
- Na koniec sprawdź datę rozpoczęcia i zakończenia zadania 2.
Poniższy przykład kodu pokazuje, jak ręcznie obliczyć projekt przy użyciu języka C#.
// Ten przykład kodu demonstruje, jak ustawić tryb ręcznego obliczania projektu.
// Utwórz instancję projektu
Project project = new Project();
// Ustaw tryb obliczeń na Ręczny
project.CalculationMode = CalculationMode.Manual;
// Ustaw datę rozpoczęcia projektu
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));
// Dodaj nowe zadania
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");
// Niezbędne właściwości są ustawiane w trybie ręcznym
Console.WriteLine("Task1.Id Equals 1 : {0} ", task1.Get(Tsk.Id).Equals(1));
Console.WriteLine("Task1 OutlineLevel Equals 1 : {0} ", task1.Get(Tsk.OutlineLevel).Equals(1));
Console.WriteLine("Task1 Start Equals 15/04/2015 08:00 AM : {0} ", task1.Get(Tsk.Start).Equals(new DateTime(2015, 4, 15, 8, 0, 0)));
Console.WriteLine("Task1 Finish Equals 15/04/2015 05:00 PM : {0} ", task1.Get(Tsk.Finish).Equals(new DateTime(2015, 4, 15, 17, 0, 0)));
Console.WriteLine("Task1 Duration Equals 1 day : {0} ", task1.Get(Tsk.Duration).ToString().Equals("1 day"));
Console.WriteLine("Task2 Start Equals 15/04/2015 08:00 AM : {0} ", task2.Get(Tsk.Start).Equals(new DateTime(2015, 4, 15, 8, 0, 0)));
Console.WriteLine("Task2 Finish Equals 15/04/2015 05:00 PM : {0} ", task2.Get(Tsk.Finish).Equals(new DateTime(2015, 4, 15, 17, 0, 0)));
Console.WriteLine("Task2 Duration Equals 1 day : {0} ", task2.Get(Tsk.Duration).ToString().Equals("1 day"));
// Połącz ze sobą dwa zadania, ich daty nie będą przeliczane w trybie ręcznym
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);
// Bez zmian w terminach Zadania 2
Console.WriteLine("Task1 Start Equals Task2 Start : {0} ", task1.Get(Tsk.Start).Equals(task2.Get(Tsk.Start)));
Console.WriteLine("Task1 Finish Equals Task2 Finish : {0} ", task1.Get(Tsk.Finish).Equals(task2.Get(Tsk.Finish)));
Task1.Id Equals 1 : True
Task1 OutlineLevel Equals 1 : True
Task1 Start Equals 15/04/2015 08:00 AM : True
Task1 Finish Equals 15/04/2015 05:00 PM : True
Task1 Duration Equals 1 day : True
Task2 Start Equals 15/04/2015 08:00 AM : True
Task2 Finish Equals 15/04/2015 05:00 PM : True
Task2 Duration Equals 1 day : True
Task1 Start Equals Task2 Start : True
Task1 Finish Equals Task2 Finish : True
Automatyczne obliczanie projektu przy użyciu języka C#
Możemy ustawić tryb obliczeń na automatyczny i zweryfikować go, wykonując poniższe czynności:
- Najpierw utwórz instancję klasy Project.
- Następnie ustaw tryb obliczeń na Automatyczny.
- Następnie ustaw datę rozpoczęcia projektu.
- Teraz dodaj nowe zadania, np. Zadanie 1 i Zadanie 2.
- Następnie zainicjuj obiekt klasy TaskLinks i połącz zadania.
- Na koniec sprawdź przeliczone daty.
Poniższy przykładowy kod pokazuje, jak automatycznie obliczyć projekt przy użyciu języka C#.
// Ten przykład kodu demonstruje, jak ustawić tryb automatycznego obliczania projektu.
// Utwórz instancję projektu
Project project = new Project();
// Ustaw tryb obliczeń na Automatyczny
project.CalculationMode = CalculationMode.Automatic;
// Ustaw datę rozpoczęcia projektu
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));
// Dodaj nowe zadania
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");
// Połącz zadania
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);
// Sprawdź przeliczone daty
Console.WriteLine("Task1 Start + 1 Equals Task2 Start : {0} ", task1.Get(Tsk.Start).AddDays(1).Equals(task2.Get(Tsk.Start)));
Console.WriteLine("Task1 Finish + 1 Equals Task2 Finish : {0} ", task1.Get(Tsk.Finish).AddDays(1).Equals(task2.Get(Tsk.Finish)));
Console.WriteLine("RootTask Finish Equals Task2 Finish : {0} ", task2.Get(Tsk.Finish).Equals(project.RootTask.Get(Tsk.Finish)));
Console.WriteLine("Project Finish Date Equals Task2 Finish : {0} ", task2.Get(Tsk.Finish).Equals(project.Get(Prj.FinishDate)));
Task1 Start + 1 Equals Task2 Start : True
Task1 Finish + 1 Equals Task2 Finish : True
RootTask Finish Equals Task2 Finish : True
Project Finish Date Equals Task2 Finish : True
Brak trybu obliczania projektu w języku C#
Możemy ustawić tryb obliczeń na automatyczny i zweryfikować go, wykonując poniższe czynności:
- Najpierw utwórz instancję klasy Project.
- Następnie ustaw tryb obliczeń na Brak.
- Następnie określ datę rozpoczęcia projektu.
- Następnie dodaj nowe zadanie, np. Zadanie 1.
- Następnie przeczytaj właściwości zadania.
- Następnie ustaw czas trwania zadania w dniach.
- Na koniec sprawdź datę rozpoczęcia i zakończenia zadania.
Poniższy przykład kodu pokazuje, jak ustawić obliczenia projektu na wartość none przy użyciu języka C#.
// Ten przykład kodu demonstruje, jak ustawić tryb obliczania projektu na Brak.
// Utwórz instancję projektu
Project project = new Project();
// Ustaw tryb obliczeń na Brak
project.CalculationMode = CalculationMode.None;
// Dodaj nowe zadanie
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");
// Zauważ, że nawet identyfikatory nie zostały obliczone
Console.WriteLine("Task.Id Equals 0 : {0} ", task.Get(Tsk.Id).Equals(0));
Console.WriteLine("Task.OutlineLevel Equals 0 : {0} ", task.Get(Tsk.OutlineLevel).Equals(0));
Console.WriteLine("Task Start Equals DateTime.MinValue : {0} ", task.Get(Tsk.Start).Equals(DateTime.MinValue));
Console.WriteLine("Task Finish Equals DateTime.MinValue : {0} ", task.Get(Tsk.Finish).Equals(DateTime.MinValue));
Console.WriteLine("Task Duration Equals 0 mins : {0} ", task.Get(Tsk.Duration).ToString().Equals("0 mins"));
// Ustaw właściwość czasu trwania
task.Set(Tsk.Duration, project.GetDuration(2, TimeUnitType.Day));
Console.WriteLine("Task Duration Equals 2 days : {0} ", task.Get(Tsk.Duration).ToString().Equals("2 days"));
Console.WriteLine("Task Start Equals DateTime.MinValue : {0} ", task.Get(Tsk.Start).Equals(DateTime.MinValue));
Console.WriteLine("Task Finish Equals DateTime.MinValue : {0} ", task.Get(Tsk.Finish).Equals(DateTime.MinValue));
Task.Id Equals 0 : True
Task.OutlineLevel Equals 0 : False
Task Start Equals DateTime.MinValue : True
Task Finish Equals DateTime.MinValue : True
Task Duration Equals 0 mins : True
Task Duration Equals 2 days : True
Task Start Equals DateTime.MinValue : True
Task Finish Equals DateTime.MinValue : True
Uzyskaj bezpłatną licencję
Możesz uzyskać bezpłatną tymczasową licencję, aby wypróbować bibliotekę bez ograniczeń ewaluacyjnych.
Wniosek
W tym artykule dowiedzieliśmy się, jak programowo ustawić tryby obliczeń projektu. Widzieliśmy również, jak obliczane są wartości właściwości zależnych w każdym trybie obliczeń przy użyciu języka C#. Poza tym możesz dowiedzieć się więcej o Aspose.Tasks for .NET API korzystając z dokumentacji. W przypadku jakichkolwiek niejasności prosimy o kontakt na forum.