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
- Manuální výpočet projektu
- Automatický výpočet projektu
- Žádný režim výpočtu projektu
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ů:
- Nejprve vytvořte instanci třídy Project.
- Dále nastavte režim výpočtu na Ruční.
- Poté zadejte datum zahájení projektu.
- Dále přidejte nové úkoly, např. úkol 1 a úkol 2.
- Poté si přečtěte vlastnosti úlohy nastavené v ručním režimu.
- Poté inicializujte objekt třídy TaskLinks a propojte úlohy.
- 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ů:
- Nejprve vytvořte instanci třídy Project.
- Dále nastavte režim výpočtu na Automaticky.
- Poté nastavte datum zahájení projektu.
- Nyní přidejte nové úkoly, např. úkol 1 a úkol 2.
- Poté inicializujte objekt třídy TaskLinks a propojte úlohy.
- 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ů:
- Nejprve vytvořte instanci třídy Project.
- Dále nastavte režim výpočtu na Žádný.
- Poté zadejte datum zahájení projektu.
- Dále přidejte nový úkol, např. Úkol 1.
- Poté si přečtěte vlastnosti úlohy.
- Poté nastavte trvání úkolu ve dnech.
- 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.