Oblicz programowo projekt przy użyciu języka C#

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

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:

  1. Najpierw utwórz instancję klasy Project.
  2. Następnie ustaw tryb obliczeń na Ręczny.
  3. Następnie określ datę rozpoczęcia projektu.
  4. Następnie dodaj nowe zadania, np. Zadanie 1 i Zadanie 2.
  5. Następnie przeczytaj właściwości zadania ustawione w trybie ręcznym.
  6. Następnie zainicjuj obiekt klasy TaskLinks i połącz zadania.
  7. 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:

  1. Najpierw utwórz instancję klasy Project.
  2. Następnie ustaw tryb obliczeń na Automatyczny.
  3. Następnie ustaw datę rozpoczęcia projektu.
  4. Teraz dodaj nowe zadania, np. Zadanie 1 i Zadanie 2.
  5. Następnie zainicjuj obiekt klasy TaskLinks i połącz zadania.
  6. 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:

  1. Najpierw utwórz instancję klasy Project.
  2. Następnie ustaw tryb obliczeń na Brak.
  3. Następnie określ datę rozpoczęcia projektu.
  4. Następnie dodaj nowe zadanie, np. Zadanie 1.
  5. Następnie przeczytaj właściwości zadania.
  6. Następnie ustaw czas trwania zadania w dniach.
  7. 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.

Zobacz też