Hilfsfunktionen in Aspose.Tasks for .NET
Bei der Arbeit mit Microsoft Project-Dateien benötigen Entwickler oft mehr als nur das Erstellen von Aufgaben und Ressourcen. Sie benötigen Zugriff auf unterstützende Projektdaten wie z. B. Filter, Tabellen, Gruppen, eingebettete Objekte und sogar diagnostische Werkzeuge zur Fehlerbehandlung. Aspose.Tasks for .NET stellt eine Reihe von Hilfsfunktionen die Projektmanagement-Workflows leistungsfähiger und flexibler machen. Dazu gehören Funktionen wie die Berechnung des kritischen Pfads eines Projekts, das Behandeln von Ausnahmen beim Schreiben von Aufgaben, das Abrufen von Filter- und Gruppendefinitionen, das Extrahieren eingebetteter Objekte und mehr. Zusammengenommen helfen diese Hilfsfunktionen Entwicklern, die Funktionalität von Projekten zu erweitern, die Genauigkeit von Berichten zu verbessern und Microsoft Project-Dateien nahtlos in andere Systeme zu integrieren.
Kritischen Pfad berechnen
Der kritische Pfad sind die Aufgaben, die letztlich bestimmen, wann Ihr Projekt endet. Die Verfolgung des kritischen Pfads und der dafür zugewiesenen Ressourcen hilft, das Projekt termingerecht zu halten. Microsoft Project berechnet den kritischen Pfad anhand von Aufgaben, die keinen Puffer aufweisen, bestimmte Datumsbeschränkungen haben (muss an einem bestimmten Datum beginnen, muss an einem bestimmten Datum enden, so früh wie möglich oder so spät wie möglich) oder dasselbe oder ein späteres Enddatum als das Projekt haben. Aspose.Tasks ermöglicht es Ihnen, den kritischen Pfad zu berechnen.
Die Project Klasse stellt die CriticalPath Eigenschaft, mit der die Sammlung von Aufgaben abgerufen werden kann, die den kritischen Pfad des Projekts bilden. Der folgende Codeabschnitt berechnet und zeigt die Aufgaben im kritischen Pfad an.
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}
Ausgabe der TaskWritingException
Ein Projekt besteht aus einer Reihe von Aufgaben und die Aspose.Tasks for .NET API ermöglicht das Hinzufügen, Entfernen und Aktualisieren von Aufgabeninformationen. Wenn beim Schreiben von Aufgaben ein Problem auftritt, verwenden Sie TasksWritingException um diese abzufangen.
Aspose.Tasks for .NET unterstützt das Ausgeben einer Nachricht, wenn beim Schreiben einer Aufgabe eine Ausnahme auftritt. Dies erfolgt mit TaskWritingException, ähnlich wie TaskReadingException verwendet wird.
Die Protokollnachricht befindet sich in der öffentlichen Eigenschaft TasksWritingException.LogText, wie im folgenden Codebeispiel gezeigt.
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}
Arbeiten mit Filterdaten aus MPP-Dateien
Aspose.Tasks ermöglicht Entwicklern das Lesen von Informationen über auf MPP-Dateien angewendete Filter. Dieser Artikel zeigt, wie Filterdefinitionen und Filterkriterien aus einer Microsoft Project MPP-Datei abgerufen werden können.
Filterdefinitionsdaten lesen
Filterdefinitionen in Microsoft Project beschreiben die Struktur von Filtern – beispielsweise ihre Namen, Typen und die Felder, auf die sie angewendet werden. Mit Aspose.Tasks for .NET können Sie auf diese Filterdefinitionen programmgesteuert zugreifen und untersuchen, wie Filter in einer MPP-Datei konfiguriert sind.
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);
Filterkriterien lesen
Während Definitionen die Struktur eines Filters beschreiben, legen Filterkriterien die genauen Bedingungen fest, die auf Projektdaten angewendet werden (zum Beispiel Aufgaben mit bestimmten Terminen oder Ressourcen). Aspose.Tasks ermöglicht das Lesen dieser Kriterien aus einer MPP-Datei, was besonders nützlich sein kann, um benutzerdefinierte Ansichten in Microsoft Project zu reproduzieren oder zu analysieren.
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);
Gruppendefinitionsdaten lesen
Eine Microsoft Project-Datendatei kann Daten in Gruppen enthalten. Aspose.Tasks for .NET bietet die Möglichkeit, die Gruppendefinitionsdaten zu lesen, wie im folgenden Beispiel gezeigt.
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);
Tabellendaten aus einer MPP-Datei lesen
Die Aspose.Tasks for .NET API unterstützt das Lesen von Tabellendaten aus Microsoft Project-Datendateien. Project.Tables implementiert das ICollection-Interface, um Zugriff auf die Tabellendaten einer MPP-Datei zu bieten. Die Funktion wird für alle Versionen der Microsoft Project-Datendateien unterstützt, einschließlich MPP 2003, 2007, 2010 und 2013.
Das folgende Beispiel zeigt, wie Tabellendaten aus einer Microsoft Project MPP-Datei abgerufen werden. Die Werte von Tabelleneigenschaften wie Breite, Titel, Titelausrichtung und Datenausrichtung werden hier zur Demonstration angezeigt.
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}
Extrahieren eingebetteter Objekte aus dem Aufgaben- oder Überprüfungsformular
Microsoft Project-Datendateien (MPP/XML) können in Aufgaben- oder Ressourcenansichten eingebettete Objekte wie Dokumente, Excel-Tabellen, PDF, Bilder usw. enthalten. Die Aspose.Tasks for .NET API bietet die Möglichkeit, diese aus der Aufgaben- oder Ressourcenansicht eines Projekts zu extrahieren, wie in den folgenden Themen gezeigt.
Extrahieren eingebetteter Objekte
Eingebettete Objekte (diejenigen, die aus einer Datei durch Auswahl eines Dateipfads erstellt wurden) werden im OLE Package innerhalb der MPP-Datei verpackt. Um die Originaldatei zu extrahieren, können Sie die Eigenschaften Content und FullPath einer Instanz der OleObject-Klasse verwenden.
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}
Eingebettete Objekte, die innerhalb der Microsoft Project-Anwendung erstellt wurden, können auf diese Weise extrahiert werden:
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}
Hilfsfunktionen in Aspose.Tasks for .NET bieten Entwicklern ein umfassendes Werkzeugpaket für die Behandlung von Projektdetails, die über die einfache Manipulation von Aufgaben oder Ressourcen hinausgehen. Von der Ermittlung des kritischen Pfads und der Behebung von Problemen bei Aufgabenoperationen bis hin zum Abrufen von Filtern, Gruppen und Tabellen und sogar dem Extrahieren eingebetteter Inhalte – diese Möglichkeiten sorgen dafür, dass Entwickler die volle Kontrolle über den Lebenszyklus der Projektdaten haben. Durch die Integration dieser Hilfsfunktionen in Arbeitsabläufe können Teams bessere Überwachung, saubereren Datenaustausch und tiefere Automatisierung, was letztlich die Effizienz des Projektmanagements erhöht.