Корисні функції в Aspose.Tasks for .NET

Працюючи з файлами Microsoft Project, розробникам часто потрібно більше, ніж просто створювати завдання та ресурси. Їм потрібен доступ до допоміжних даних проєкту такі як фільтри, таблиці, групи, вкладені об’єкти та навіть діагностичні інструменти для обробки помилок. Aspose.Tasks for .NET надає набір корисних функцій які роблять робочі процеси управління проєктами потужнішими й гнучкішими. Вони включають можливості, такі як розрахунок критичного шляху проєкту, обробка винятків при записі завдань, отримання визначень фільтрів і груп, витяг вкладених об’єктів та інше. Разом ці функції допомагають розробникам розширювати функціональність проєкту, підвищувати точність звітності та безперешкодно інтегрувати файли Microsoft Project з іншими системами.

Обчислення критичного шляху

Критичний шлях — це завдання або набір завдань, що врешті-решт визначають, коли закінчиться ваш проєкт. Відстеження критичного шляху та ресурсів, призначених для нього, допомагає зберегти проєкт у строк. Microsoft Project обчислює критичний шлях на основі завдань, які не мають резерву часу, мають певні обмеження дат (наприклад: «почати в», «завершити в», «якнайшвидше» або «якнайпізніше») або мають ту саму, або пізнішу, кінцеву дату, ніж проєкт. Aspose.Tasks дозволяє обчислювати критичний шлях.

Клас Project надає CriticalPath властивість, яка використовується для отримання колекції завдань, що складають критичний шлях проєкту. Наведений нижче фрагмент коду обчислює та відображає завдання в критичному шляху.

 1Project project = new Project("New Project.mpp");
 2project.CalculationMode = CalculationMode.Automatic;
 3
 4Task subtask1 = project.RootTask.Children.Add("1");
 5Task subtask2 = project.RootTask.Children.Add("2");
 6Task subtask3 = project.RootTask.Children.Add("3");
 7project.TaskLinks.Add(subtask1, subtask2, TaskLinkType.FinishToStart);
 8
 9// Display the critical path now
10foreach (Task task in project.CriticalPath)
11{
12    Console.WriteLine(task.Get(Tsk.Name));
13}

Виведення TaskWritingException

Проєкт складається з кількох завдань, і API Aspose.Tasks for .NET дозволяє додавати, видаляти та оновлювати інформацію про завдання. Якщо виникає проблема під час запису завдань, використовуйте TasksWritingException для їх перехоплення.

Aspose.Tasks for .NET підтримує виведення повідомлення у разі виникнення винятку під час запису завдання. Це робиться за допомогою TaskWritingException так само, як використовується TaskReadingException.

Текст журналу міститься у публічній властивості TasksWritingException.LogText, як показано в наведеному нижче прикладі коду.

 1try
 2{
 3    Project project = new Project("New Project.mpp");
 4    Console.Write("This example will only work if you apply a valid Aspose License. You can purchase full license or get 30 day temporary license from http://www.aspose.com/purchase/default.aspx.");
 5    project.Save("output.mpp", SaveFileFormat.MPP);
 6}
 7catch (TasksWritingException ex)
 8{
 9    Console.WriteLine(ex.LogText);
10}
11catch (NotSupportedException ex)
12{
13    Console.WriteLine(ex.Message + "\nThis example will only work if you apply a valid Aspose License. You can purchase full license or get 30 day temporary license from http://www.aspose.com/purchase/default.aspx.");
14}

Робота з даними фільтрів у файлах MPP

Aspose.Tasks дозволяє розробникам читати інформацію про фільтри, застосовані до даних файлу MPP. У цій статті показано, як отримати визначення фільтрів та дані про критерії фільтра з файлу Microsoft Project у форматі MPP.

Читання визначень фільтрів

Визначення фільтрів у Microsoft Project описують структуру фільтрів — такі як їхні імена, типи та поля, до яких вони застосовуються. Використовуючи Aspose.Tasks for .NET, ви можете програмно отримувати ці визначення фільтрів і досліджувати, як фільтри налаштовані у файлі MPP.

 1// Instantiate project and access task filters
 2Project project = new Project("ReadFilterDefinitionData.mpp");
 3List<Filter> taskFilters = project.TaskFilters.ToList();
 4Console.WriteLine("Task Filters Count: " + taskFilters.Count);
 5Console.WriteLine("All Tasks: " + taskFilters[0].Name);
 6Console.WriteLine("Task Item: " + taskFilters[0].FilterType);
 7Console.WriteLine("Task Filters Show In Menu: " + taskFilters[0].ShowInMenu);
 8Console.WriteLine("Task filter ShowRelatedSummaryRows: " + taskFilters[0].ShowRelatedSummaryRows);
 9
10// Access resource filters
11List<Filter> filters = project.ResourceFilters.ToList();
12Console.WriteLine("Project.ResourceFilters count: " + filters.Count);
13Console.WriteLine("Resource Filter Item Type: Item.ResourceType: " + filters[0].FilterType);
14Console.WriteLine("Resource filter ShowInMenu" + filters[0].ShowInMenu);
15Console.WriteLine("Resource filter ShowRelatedSummaryRows: " + filters[0].ShowRelatedSummaryRows);

Читання даних критеріїв фільтра

Якщо визначення описують структуру фільтра, то критерії фільтра визначають точні умови, що застосовуються до даних проєкту (наприклад, завдання з певними датами або ресурсами). Aspose.Tasks дозволяє читати ці критерії з файлу MPP, що може бути особливо корисним для відтворення або аналізу користувацьких подань, які використовуються в Microsoft Project.

 1Project project = new Project("New Project.mpp");
 2
 3Filter filter = project.TaskFilters.ToList()[1];
 4Console.WriteLine(filter.Criteria.CriteriaRows.Count);
 5Console.WriteLine(filter.Criteria.Operation.ToString());
 6
 7FilterCriteria criteria1 = filter.Criteria.CriteriaRows[0];
 8Console.WriteLine(criteria1.Test.ToString());
 9Console.WriteLine(criteria1.Field.ToString());
10Console.WriteLine(criteria1.Values[0].ToString());
11
12FilterCriteria criteria2 = filter.Criteria.CriteriaRows[1];
13Console.WriteLine(criteria2.Operation.ToString());
14Console.WriteLine(criteria2.CriteriaRows.Count);
15
16FilterCriteria criteria21 = criteria2.CriteriaRows[0];
17Console.WriteLine(criteria21.Test.ToString());
18Console.WriteLine(criteria21.Field.ToString());
19Console.WriteLine(criteria21.Values[0].ToString());
20
21FilterCriteria criteria22 = criteria2.CriteriaRows[1];
22Console.WriteLine(criteria22.Test.ToString());
23Console.WriteLine(criteria22.Field.ToString());
24Console.WriteLine(criteria22.Values[0].ToString());
25Console.WriteLine(filter.Criteria);

Читання визначень груп

Файл даних Microsoft Project може містити дані у вигляді груп. Aspose.Tasks for .NET надає можливість читати дані визначень груп, як показано в наведеному нижче прикладі.

 1Project project = new Project("New Project.mpp"); 
 2
 3Console.WriteLine("Task Groups Count: " + project.TaskGroups.Count);
 4
 5Group taskGroup = project.TaskGroups.ToList()[1];
 6Console.WriteLine("Group Name:", taskGroup.Name);
 7Console.WriteLine("Group Criteria count: " + taskGroup.GroupCriteria.Count);
 8Console.WriteLine("************* Retrieving Task Group's Criterion information *************");
 9
10GroupCriterion criterion = taskGroup.GroupCriteria.ToList()[0];
11Console.WriteLine("Criterion Field: " + criterion.Field.ToString());
12Console.WriteLine("Criterion GroupOn: " + criterion.GroupOn.ToString());
13Console.WriteLine("Criterion Cell Color: " + criterion.CellColor);
14Console.WriteLine("Criterion Pattern: " + criterion.Pattern.ToString());
15
16if (taskGroup == criterion.ParentGroup)
17{
18    Console.WriteLine("Parent Group is equal to task Group.");
19}
20
21Console.WriteLine("*********** Retrieving Criterion's Font Information ***********");
22Console.WriteLine("Font Name: " + criterion.Font.Name);
23Console.WriteLine("Font Size: " + criterion.Font.Size);
24Console.WriteLine("Font Style: " + criterion.Font.Style);
25Console.WriteLine("Ascending/Descending: " + criterion.Ascending);

Читання даних таблиці з файлу MPP

API Aspose.Tasks for .NET підтримує читання даних таблиць з файлів даних Microsoft Project. Project.Tables реалізує інтерфейс ICollection, щоб забезпечити доступ до даних таблиць у файлі MPP. Ця функція підтримується для всіх версій файлів даних Microsoft Project, включаючи MPP 2003, 2007, 2010 та 2013.

Наведений нижче приклад показує, як отримати дані таблиці з файлу Microsoft Project у форматі MPP. Тут для демонстрації відображаються значення властивостей таблиці, таких як ширина, заголовок, вирівнювання заголовка та вирівнювання даних.

 1Project project = new Project("New Project.mpp");
 2
 3// Access table
 4Table task1 = project.Tables.ToList()[0];
 5Console.WriteLine("Table Fields Count" + task1.TableFields.Count);
 6
 7// Display all table fields information
 8foreach (TableField tableField in task1.TableFields)
 9{
10    Console.WriteLine("Field width: " + tableField.Width);
11    Console.WriteLine("Field Title: " + tableField.Title);
12    Console.WriteLine("Field Title Alignment: " + tableField.AlignTitle.ToString());
13    Console.WriteLine("Field Align Data: " + tableField.AlignData.ToString());
14}

Витяг вкладених об’єктів із форми Task або Review

Файли даних Microsoft Project (MPP/XML) можуть містити вкладені об’єкти, такі як документи, Excel-таблиці, PDF, зображення тощо у поданнях Task або Resource. API Aspose.Tasks for .NET надає можливість витягувати їх із подань Task або Resource проєкту, як показано в наведених нижче темах.

Витяг вкладених об’єктів

Вкладені об’єкти (ті, що були створені з файлу шляхом вказання шляху до файлу) упаковуються в OLE Package всередині файлу MPP. Щоб витягти оригінальний файл, можна використовувати властивості Content і FullPath екземпляра класу OleObject.

 1Project project = new Project("ExtractEmbeddedObjects.mpp");
 2OleObject ole = project.OleObjects.ToList()[0];
 3// We have to check this property because it can be null if the embedded object was created inside the ms project application Or, alternatively, you can use this check: if (ole.FileFormat == "Package")
 4if (!string.IsNullOrEmpty(ole.FullPath))
 5{
 6    using (FileStream stream = new FileStream("out.ole", FileMode.Create))
 7    {
 8        stream.Write(ole.Content, 0, ole.Content.Length);
 9    }
10}

Вкладені об’єкти, які були створені всередині програми Microsoft Project, можна витягнути таким чином:

 1IDictionary<string, string> fileFormatExt = new Dictionary<string, string>();
 2fileFormatExt.Add("RTF", "_rtfFile_out.rtf");
 3fileFormatExt.Add("MSWordDoc", "_wordFile_out.docx");
 4fileFormatExt.Add("ExcelML12", "_excelFile_out.xlsx");
 5Project project = new Project("New Project.mpp"); 
 6foreach (OleObject oleObject in project.OleObjects)
 7{
 8    if (!string.IsNullOrEmpty(oleObject.FileFormat) && fileFormatExt.ContainsKey(oleObject.FileFormat))
 9    {
10        using (FileStream stream = new FileStream("EmbeddedContent_" + fileFormatExt[oleObject.FileFormat], FileMode.Create))
11        {
12            stream.Write(oleObject.Content, 0, oleObject.Content.Length);
13        }
14    }
15}

Утилітарні можливості в Aspose.Tasks for .NET надають розробникам повний набір інструментів для опрацювання деталей проєкту, що виходять за межі простого оперування завданнями або ресурсами. Від визначення критичного шляху й усунення неполадок під час операцій із завданнями до отримання фільтрів, груп і таблиць та навіть витягання вкладеного вмісту — ці можливості забезпечують розробникам повний контроль над життєвим циклом даних проєкту. Інтегруючи ці функції у робочі процеси, команди можуть досягти кращого моніторингу, чистішого обміну даними та глибшої автоматизації, що врешті-решт підвищує ефективність управління проєктами.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.