Arbeiten mit Extended Attributes eines Projekts
Microsoft Project bietet ein erweiterbares XML-Datenschema das einen reibungslosen Datenaustausch zwischen Anwendungen ermöglicht und leistungsstarke Optionen zur Anpassung von Projektinformationen bietet. Eines seiner flexibelsten Merkmale ist Extended Attributes, mit denen Benutzer benutzerdefinierte Felder zu Aufgaben, Ressourcen und Zuweisungen hinzufügen können. Diese benutzerdefinierten Felder werden häufig verwendet, um geschäftsspezifische Metadaten wie Kostenstellen, Risikokategorien, Genehmigungszustände oder andere für die Organisation erforderliche Klassifizierungen zu speichern. Mit Aspose.Tasks for .NETkönnen Entwickler programmgesteuert erstellen, lesen, aktualisieren und speichern von Extended Attributes ohne dass Microsoft Project installiert sein muss. Dadurch ist es möglich, Arbeitsabläufe zu automatisieren, Projektdaten mit benutzerdefinierten Informationen anzureichern und Microsoft Project-Dateien in umfassendere Unternehmenssysteme zu integrieren.
Arbeiten mit benutzerdefinierten Feldern unter Verwendung von Microsoft Project
In diesem Beispiel zeigen wir, wie man mit dem Text1 extended attribute eines Projekts arbeitet, um die Informationen mit einer Aufgabe zu verknüpfen.
- In MSP gehen Sie zu Project → Custom Fields.
- Von hier aus wählen Sie Task.
- Wählen Sie Text als Typ für benutzerdefinierte Felder im Kombinationsfeld „Type“.
- Wählen Sie Text1 als das benutzerdefinierte Feld, mit dem Sie arbeiten möchten.
- Verwenden Sie die Umbenennen -Schaltfläche, um bei Bedarf das Alias des Feldes zu ändern; drücken Sie anschließend OK.
- Fügen Sie eine neue Aufgabe hinzu und fügen Sie der Aufgabenzeile eine neue Spalte mit dem benutzerdefinierten Feld hinzu.
Arbeiten mit benutzerdefinierten Feldern/Extended Attributes mit Aspose.Tasks for .NET
Aspose.Tasks for .NET API bietet die Möglichkeit, neue Extended Attributes zu erstellen sowie mit bereits in einem Dokument vorhandenen Extended Attributes zu arbeiten. Benutzerdefinierte Felder oder Extended Attributes werden in Aspose.Tasks durch die ExtendedAttributes-Sammlung eines Projekts dargestellt. Sie enthält alle Definitionen der Extended Attributes eines Projektdokuments. Einige der Zuordnungen der MSP-Definition eines benutzerdefinierten Feldes sind in der untenstehenden Abbildung dargestellt.
Erstellen eines neuen Extended Attributes und Hinzufügen zu einer Aufgabe
Um ein neues Extended Attribute für eine Aufgabe oder eine Ressource hinzuzufügen, müssen wir zuerst die Definition des Extended Attributes definieren und zur ExtendedAttributes-Sammlung hinzufügen. ExtendedAttributeDefinition -Klasse wird verwendet, um ein neues ExtendedAttribute in einem Projekt zu definieren. Die FieldId muss gesetzt werden, um ein Extended Attribute korrekt zu definieren, das verknüpft ist mit ExtendedAttributeTask (im Fall einer Aufgabe) oder ExtendedAttributeResource (im Fall einer Ressource). Der folgende Beispielcode zeigt, wie man ein neues Extended Attribute für das Feld Text1 eines Projekts definiert. Sobald die Definition des Extended Attributes abgeschlossen ist, können Sie daraus ein neues Extended Attribute erstellen und es einer Aufgabe zuweisen.
1Project project = new Project("New Project.mpp");
2
3ExtendedAttributeDefinition myTextAttributeDefinition = project.ExtendedAttributes.GetById((int)ExtendedAttributeTask.Text1);
4
5// If the Custom field doesn't exist in Project, create it
6if (myTextAttributeDefinition == null)
7{
8 myTextAttributeDefinition = ExtendedAttributeDefinition.CreateTaskDefinition(ExtendedAttributeTask.Text1, "My text field");
9 project.ExtendedAttributes.Add(myTextAttributeDefinition);
10}
11
12// Generate Extended Attribute from definition
13ExtendedAttribute text1TaskAttribute = myTextAttributeDefinition.CreateExtendedAttribute();
14
15text1TaskAttribute.TextValue = "Text attribute value";
16
17// Add extended attribute to task
18Task task = project.RootTask.Children.Add("Task 1");
19task.ExtendedAttributes.Add(text1TaskAttribute);
20
21project.Save("CreateExtendedAttributes_out.mpp", SaveFileFormat.MPP);
Aktualisierte Extended-Attribute-Definitionen und -Werte in MPP schreiben
Aspose.Tasks for .NET unterstützt das Aktualisieren von Extended-Attribute-Daten in einer Microsoft Project MPP-Datei und das anschließende Speichern.
Der folgende Beispielcode fügt neue Extended Attributes der Resource und Task Typen zur Quell-MPP-Datei hinzu. Die Schritte, die in diesem Vorgang durchgeführt werden, sind:
- Erstellen Sie eine Instanz von Project Reader.
- Laden Sie die Quell- MPP Datei.
- Definieren Sie ein neues Extended Attribute und aktualisieren Sie dessen Werte.
- Speichern Sie das Projekt mithilfe des Project Writer.
Das folgende Beispiel zeigt das Festlegen der Extended Attributes einer Ressource.
1Project project = new Project("New Project.mpp");
2
3// Add new text3 extended attribute with lookup and one lookup value
4ExtendedAttributeDefinition taskTextAttributeDefinition = ExtendedAttributeDefinition.CreateLookupTaskDefinition(ExtendedAttributeTask.Text3, "New text3 attribute");
5taskTextAttributeDefinition.ElementType = ElementType.Task;
6project.ExtendedAttributes.Add(taskTextAttributeDefinition);
7
8Value textVal = new Value();
9textVal.Id = 1;
10textVal.Description = "Text value descr";
11textVal.Val = "Text value1";
12
13taskTextAttributeDefinition.AddLookupValue(textVal);
14
15// Add new cost1 extended attribute with lookup and two cost values
16ExtendedAttributeDefinition taskCostAttributeDefinition = ExtendedAttributeDefinition.CreateLookupTaskDefinition(ExtendedAttributeTask.Cost1, "New cost1 attribute");
17project.ExtendedAttributes.Add(taskCostAttributeDefinition);
18
19Value costVal1 = new Value();
20costVal1.Id = 2;
21costVal1.Description = "Cost value 1 descr";
22costVal1.Val = "99900";
23
24Value costVal2 = new Value();
25costVal2.Id = 3;
26costVal2.Description = "Cost value 2 descr";
27costVal2.Val = "11100";
28
29taskCostAttributeDefinition.AddLookupValue(costVal1);
30taskCostAttributeDefinition.AddLookupValue(costVal2);
31
32// Add new task and assign attribute lookup value.
33Task task = project.RootTask.Children.Add("New task");
34
35ExtendedAttribute taskAttr = taskCostAttributeDefinition.CreateExtendedAttribute(costVal1);
36task.ExtendedAttributes.Add(taskAttr);
37
38ExtendedAttributeDefinition taskStartAttributeDefinition = ExtendedAttributeDefinition.CreateLookupTaskDefinition(ExtendedAttributeTask.Start7, "New start 7 attribute");
39
40Value startVal = new Value();
41startVal.Id = 4;
42startVal.DateTimeValue = DateTime.Now;
43startVal.Description = "Start 7 value description";
44
45taskStartAttributeDefinition.AddLookupValue(startVal);
46
47project.ExtendedAttributes.Add(taskStartAttributeDefinition);
48
49ExtendedAttributeDefinition taskFinishAttributeDefinition = ExtendedAttributeDefinition.CreateLookupTaskDefinition(ExtendedAttributeTask.Finish4, "New finish 4 attribute");
50
51Value finishVal = new Value();
52finishVal.Id = 5;
53finishVal.DateTimeValue = DateTime.Now;
54finishVal.Description = "Finish 4 value description";
55
56taskFinishAttributeDefinition.ValueList.Add(finishVal);
57
58project.ExtendedAttributes.Add(taskFinishAttributeDefinition);
59
60ExtendedAttributeDefinition numberAttributeDefinition = ExtendedAttributeDefinition.CreateLookupTaskDefinition(ExtendedAttributeTask.Number20, "New number attribute");
61
62Value val1 = new Value();
63val1.Id = 6;
64val1.Val = "1";
65val1.Description = "Number 1 value";
66Value val2 = new Value();
67val2.Id = 7;
68val2.Val = "2";
69val2.Description = "Number 2 value";
70Value val3 = new Value();
71val2.Id = 8;
72val3.Val = "3";
73val3.Description = "Number 3 value";
74
75numberAttributeDefinition.AddLookupValue(val1);
76numberAttributeDefinition.AddLookupValue(val2);
77numberAttributeDefinition.AddLookupValue(val3);
78
79project.ExtendedAttributes.Add(numberAttributeDefinition);
80
81ExtendedAttributeDefinition resourceStartAttributeDefinition = ExtendedAttributeDefinition.CreateLookupResourceDefinition(ExtendedAttributeResource.Start5, "New start5 attribute");
82
83Value startVal2 = new Value();
84startVal2.Id = 9;
85startVal2.DateTimeValue = DateTime.Now;
86startVal2.Description = "this is start5 value descr";
87
88resourceStartAttributeDefinition.AddLookupValue(startVal2);
89
90project.ExtendedAttributes.Add(resourceStartAttributeDefinition);
91
92// Define a duration attribute without lookup.
93ExtendedAttributeDefinition taskDurationAttributeDefinition = ExtendedAttributeDefinition.CreateTaskDefinition(ExtendedAttributeTask.Duration1, "New Duration");
94project.ExtendedAttributes.Add(taskDurationAttributeDefinition);
95
96// Add new task and assign duration value to the previously defined duration attribute.
97Task timeTask = project.RootTask.Children.Add("New task");
98
99ExtendedAttribute durationExtendedAttribute = taskDurationAttributeDefinition.CreateExtendedAttribute();
100
101durationExtendedAttribute.DurationValue = project.GetDuration(3.0, TimeUnitType.Hour);
102timeTask.ExtendedAttributes.Add(durationExtendedAttribute);
103
104MPPSaveOptions mppSaveOptions = new MPPSaveOptions();
105mppSaveOptions.WriteViewData = true;
106
107project.Save("WriteUpdatedExtendedAttributeDefinitions_out.mpp", mppSaveOptions);
Extended Attributes sind eine entscheidende Funktion für Organisationen, die benutzerdefinierte Projektmetadaten über die integrierten Felder von Microsoft Project hinaus benötigen. Sie bieten die Flexibilität, Projektdateien an spezifische geschäftliche Anforderungen anzupassen — von der Verfolgung finanzieller Kennungen bis zur Erfassung von Workflow-Genehmigungen. Durch die Nutzung von Aspose.Tasks for .NET, können Entwickler die Erstellung und Verwaltung von Extended Attributes vollständig automatisieren, wodurch eine konsistente, zuverlässige und standardskonforme Datenverarbeitung über Unternehmenssysteme hinweg sichergestellt wird. Diese Fähigkeit hilft Teams, Microsoft Project-Daten in Reporting-Pipelines, ERP-Systeme und andere Anwendungen zu integrieren, ohne manuelles Eingreifen.