Vypočítat projekt programově pomocí C#

Můžeme vypočítat harmonogramy projektů nebo náklady pomocí režimů výpočtu definovaných v možnostech projektu pro Microsoft Project. Plán projektu zobrazuje datum zahájení a ukončení všech projektových úkolů. Microsoft Project umožňuje výpočet projektu ručně nebo automaticky. Jako vývojář v C# můžeme snadno nastavit režim výpočtu projektu v aplikacích .NET a vypočítat vlastnosti projektu. V tomto článku se naučíme, jak vypočítat projekt programově pomocí C#.

Tento článek bude obsahovat následující témata:

C# API pro programový výpočet projektu

Pro nastavení režimů výpočtu projektu budeme používat API Aspose.Tasks for .NET. Poskytuje tři režimy výpočtu projektu pro výpočet hodnot závislých vlastností. Tyto režimy výpočtu jsou:

  • Žádné – nastavuje pouze nezbytné vlastnosti a nepřepočítává data a náklady projektu.
  • Manuální – nastavuje pouze závislé vlastnosti objektu bez přepočítávání dat projektu a nákladů.
  • Automaticky – automaticky přepočítá data projektu a nákladové vlastnosti.

API definuje výše uvedené režimy výpočtu ve výčtu CalculationMode. Vlastnost CalculationMode třídy Project umožňuje nastavení nebo získání hodnoty CalculationMode. API také umožňuje manipulaci s existujícím projektem za účelem přidání některých úprav. Navíc umožňuje bezproblémové provádění základních i pokročilých operací projektového řízení. Prosím buď stáhněte DLL API, nebo ji nainstalujte pomocí NuGet.

PM> Install-Package Aspose.Tasks

Ruční výpočet projektu pomocí C#

Můžeme nastavit režim výpočtu na ruční a ověřit jej podle následujících kroků:

  1. Nejprve vytvořte instanci třídy Project.
  2. Dále nastavte režim výpočtu na Ruční.
  3. Poté zadejte datum zahájení projektu.
  4. Dále přidejte nové úkoly, např. úkol 1 a úkol 2.
  5. Poté si přečtěte vlastnosti úlohy nastavené v ručním režimu.
  6. Poté inicializujte objekt třídy TaskLinks a propojte úlohy.
  7. Nakonec ověřte datum zahájení a ukončení úkolu 2.

Následující ukázka kódu ukazuje, jak ručně vypočítat projekt pomocí C#.

// Tento příklad kódu ukazuje, jak nastavit režim ručního výpočtu projektu.
// Vytvořte instanci projektu
Project project = new Project();

// Nastavte režim výpočtu na Manuální
project.CalculationMode = CalculationMode.Manual;

// Nastavte datum zahájení projektu
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Přidejte nové úkoly
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Potřebné vlastnosti se nastavují v ručním režimu
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"));

// Spojte dva úkoly dohromady, jejich data se v ručním režimu nepřepočítávají
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Žádná změna v datech úkolu 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

Automatický výpočet projektu pomocí C#

Můžeme nastavit režim výpočtu na automatický a ověřit jej podle následujících kroků:

  1. Nejprve vytvořte instanci třídy Project.
  2. Dále nastavte režim výpočtu na Automaticky.
  3. Poté nastavte datum zahájení projektu.
  4. Nyní přidejte nové úkoly, např. úkol 1 a úkol 2.
  5. Poté inicializujte objekt třídy TaskLinks a propojte úlohy.
  6. Nakonec přepočítané termíny ověřte.

Následující ukázka kódu ukazuje, jak vypočítat projekt automaticky pomocí C#.

// Tento příklad kódu ukazuje, jak nastavit režim automatického výpočtu projektu.
// Vytvořte instanci projektu
Project project = new Project();

// Nastavte režim výpočtu na Automatický
project.CalculationMode = CalculationMode.Automatic;

// Nastavte datum zahájení projektu
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Přidejte nové úkoly
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Propojit úkoly
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Ověřte přepočítaná data
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

Žádný režim výpočtu projektu v C#

Můžeme nastavit režim výpočtu na automatický a ověřit jej podle následujících kroků:

  1. Nejprve vytvořte instanci třídy Project.
  2. Dále nastavte režim výpočtu na Žádný.
  3. Poté zadejte datum zahájení projektu.
  4. Dále přidejte nový úkol, např. Úkol 1.
  5. Poté si přečtěte vlastnosti úlohy.
  6. Poté nastavte trvání úkolu ve dnech.
  7. Nakonec ověřte datum zahájení a ukončení úkolu.

Následující ukázka kódu ukazuje, jak nastavit výpočet projektu na none pomocí C#.

// Tento příklad kódu ukazuje, jak nastavit režim výpočtu projektu na Žádný.
// Vytvořte instanci projektu
Project project = new Project();

// Nastavte režim výpočtu na Žádný
project.CalculationMode = CalculationMode.None;

// Přidat nový úkol
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");

// Všimněte si, že sudá id nebyla vypočtena
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"));

// Nastavit vlastnost trvání
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

Získejte bezplatnou licenci

Můžete získat bezplatnou dočasnou licenci a vyzkoušet knihovnu bez omezení hodnocení.

Závěr

V tomto článku jsme se naučili, jak programově nastavit režimy výpočtu projektu. Také jsme viděli, jak se hodnoty závislých vlastností počítají v každém režimu výpočtu pomocí C#. Kromě toho se můžete dozvědět více o Aspose.Tasks for .NET API pomocí dokumentace. V případě jakýchkoliv nejasností nás neváhejte kontaktovat na fóru.

Viz také