Erweiterte Attribute eines Projekts

Microsoft Project verfügt über ein umfangreiches XML -Daten -Interchange -Schema, das den Austausch von Informationen zwischen Anwendungen und Programmieren mit Projektdateien erleichtert. Mit dem Schema können Sie Aufgaben, Ressourcen und Aufgaben erweiterte Attribute hinzufügen. Dieser Artikel zeigt, wie man mit erweiterten Attributen mit Aspose.Tasks arbeitet.

Arbeiten mit benutzerdefinierten Feldern mit Microsoft Project

In diesem Beispiel werden wir demonstrieren, wie mit Text1 erweitertes Attribut eines Projekts für die Verbindung der Informationen mit einer Aufgabe funktioniert.

  1. Gehen Sie in MSP zu Projekt-> benutzerdefinierte Felder.
  2. Wählen Sie hier die Aufgabe aus.
  3. Wählen Sie Text als benutzerdefiniertes Feldtyp aus dem Kombinationstyp Typ.
  4. Wählen Sie Text1 als benutzerdefiniertes Feld, mit dem Sie arbeiten möchten
  5. Verwenden Sie die Schaltfläche “Umbenennen”, um den Alias ​​des Feldes umzubenennen, wenn es gewünscht ist, und drücken Sie die OK -Taste
  6. Fügen Sie eine neue Aufgabe hinzu und fügen Sie eine neue Spalte in die Task -Zeile mit dem benutzerdefinierten Feld hinzu, das Sie im obigen Schritt verwendet haben

Öffnen Sie erweiterte Attribute im Microsoft -Projekt

Arbeiten mit benutzerdefinierten Feldern/erweiterten Attributen mit Aspose.Tasks für c ++ api

Aspose.TasksS FÜR C ++ API bietet die Fähigkeit, neue erweiterte Attribute zu erstellen und mit erweiterten Attributen zu arbeiten, die bereits in einem Dokument vorhanden sind. Benutzerdefinierte Felder oder erweiterte Attribute werden durch die Erfassung eines Projekts in Aspose.Tasks dargestellt. Es enthält alle erweiterten Attribute Definition eines Projektdokuments. Einige der Zuordnungen der msp -benutzerdefinierten Felddefinition sind wie im folgenden Bild gezeigt.

Bearbeiten Sie erweiterte Attribute im Microsoft -Projekt

Erstellen eines neuen erweiterten Attributs und Hinzufügen zu Aufgabe

Um ein neues erweitertes Attribut für Aufgabe oder Ressource hinzuzufügen, müssen wir zunächst die erweiterte Attributdefinition zur Erfassung von ExtendedAttributes definieren und hinzufügen. Die ExtendedAttributeDeFinition -Klasse wird verwendet, um eine neue ExtendedAttribute in einem Projekt zu definieren. Das FieldID muss für die ordnungsgemäße Definition eines erweiterten Attributs festgelegt werden, das mit ExtendedAttribUTETASK (im Falle von Aufgabe) oder ExtendedAttributeresource (im Fall von Ressource) verknüpft ist. Der folgende Beispielcode zeigt, wie ein neues erweitertes Attribut für Text1 -Projektfeld definiert wird. Sobald die erweiterte Attributdefinition abgeschlossen ist, können Sie nun ein neues erweitertes Attribut daraus erstellen und einer Aufgabe zuweisen.

 1System::SharedPtr<Project> project1 = System::MakeObject<Project>(dataDir + u"Blank2010.mpp");
 2        
 3System::SharedPtr<ExtendedAttributeDefinition> myTextAttributeDefinition = project1->get_ExtendedAttributes()->GetById((int32_t)Aspose::Tasks::ExtendedAttributeTask::Text1);
 4        
 5// If the Custom field doesn't exist in Project, create it
 6if (myTextAttributeDefinition == nullptr)
 7{
 8    myTextAttributeDefinition = ExtendedAttributeDefinition::CreateTaskDefinition(Aspose::Tasks::ExtendedAttributeTask::Text1, u"My text field");
 9    project1->get_ExtendedAttributes()->Add(myTextAttributeDefinition);
10}
11        
12// Generate Extended Attribute from definition
13System::SharedPtr<ExtendedAttribute> text1TaskAttribute = myTextAttributeDefinition->CreateExtendedAttribute();
14        
15text1TaskAttribute->set_TextValue(u"Text attribute value");
16        
17// Add extended attribute to task
18System::SharedPtr<Task> tsk = project1->get_RootTask()->get_Children()->Add(u"Task 1");
19tsk->get_ExtendedAttributes()->Add(text1TaskAttribute);
20        
21project1->Save(dataDir + u"CreateExtendedAttributes_out.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP);

Writing Updated Extended Attribute Definitions and Values to MPP

Aspose.Tasks for C++ API supports updating extended attribute data in a Microsoft Project MPP file and save it back.

The code example given below demonstrates how to add new extended attributes of the Resource and Task types to the source MPP file. The steps involved in this activity are:

  1. Create an instance of Project Reader.
  2. Read the source MPP file.
  3. Define a new extended attribute and update its values.
  4. Save the project using the Project Writer.

The following example shows setting the extended attributes of a resource.

  1System::SharedPtr<Project> project = System::MakeObject<Project>(dataDir + u"WriteUpdatedExtendedAttributeDefinitions.mpp");
  2        
  3        
  4// C# preprocessor directive: #region task attributes
  5        
  6        
  7// Add new text3 extended attribute with lookup and one lookup value
  8System::SharedPtr<ExtendedAttributeDefinition> taskTextAttributeDefinition = ExtendedAttributeDefinition::CreateLookupTaskDefinition(Aspose::Tasks::ExtendedAttributeTask::Text3, u"New text3 attribute");
  9taskTextAttributeDefinition->set_ElementType(Aspose::Tasks::ElementType::Task);
 10project->get_ExtendedAttributes()->Add(taskTextAttributeDefinition);
 11        
 12System::SharedPtr<Value> textVal = System::MakeObject<Value>();
 13textVal->set_Id(1);
 14textVal->set_Description(u"Text value descr");
 15textVal->set_Val(u"Text value1");
 16        
 17taskTextAttributeDefinition->AddLookupValue(textVal);
 18        
 19// Add new cost1 extended attribute with lookup and two cost values
 20System::SharedPtr<ExtendedAttributeDefinition> taskCostAttributeDefinition = ExtendedAttributeDefinition::CreateLookupTaskDefinition(Aspose::Tasks::ExtendedAttributeTask::Cost1, u"New cost1 attribute");
 21project->get_ExtendedAttributes()->Add(taskCostAttributeDefinition);
 22        
 23System::SharedPtr<Value> costVal1 = System::MakeObject<Value>();
 24costVal1->set_Id(2);
 25costVal1->set_Description(u"Cost value 1 descr");
 26costVal1->set_Val(u"99900");
 27        
 28System::SharedPtr<Value> costVal2 = System::MakeObject<Value>();
 29costVal2->set_Id(3);
 30costVal2->set_Description(u"Cost value 2 descr");
 31costVal2->set_Val(u"11100");
 32        
 33taskCostAttributeDefinition->AddLookupValue(costVal1);
 34taskCostAttributeDefinition->AddLookupValue(costVal2);
 35        
 36// Add new task and assign attribute lookup value.
 37System::SharedPtr<Task> task = project->get_RootTask()->get_Children()->Add(u"New task");
 38        
 39System::SharedPtr<ExtendedAttribute> taskAttr = taskCostAttributeDefinition->CreateExtendedAttribute(costVal1);
 40task->get_ExtendedAttributes()->Add(taskAttr);
 41        
 42System::SharedPtr<ExtendedAttributeDefinition> taskStartAttributeDefinition = ExtendedAttributeDefinition::CreateLookupTaskDefinition(Aspose::Tasks::ExtendedAttributeTask::Start7, u"New start 7 attribute");
 43        
 44System::SharedPtr<Value> startVal = System::MakeObject<Value>();
 45startVal->set_Id(4);
 46startVal->set_DateTimeValue(System::DateTime::get_Now());
 47startVal->set_Description(u"Start 7 value description");
 48        
 49taskStartAttributeDefinition->AddLookupValue(startVal);
 50        
 51project->get_ExtendedAttributes()->Add(taskStartAttributeDefinition);
 52        
 53System::SharedPtr<ExtendedAttributeDefinition> taskFinishAttributeDefinition = ExtendedAttributeDefinition::CreateLookupTaskDefinition(Aspose::Tasks::ExtendedAttributeTask::Finish4, u"New finish 4 attribute");
 54        
 55System::SharedPtr<Value> finishVal = System::MakeObject<Value>();
 56finishVal->set_Id(5);
 57finishVal->set_DateTimeValue(System::DateTime::get_Now());
 58finishVal->set_Description(u"Finish 4 value description");
 59        
 60taskFinishAttributeDefinition->get_ValueList()->Add(finishVal);
 61        
 62project->get_ExtendedAttributes()->Add(taskFinishAttributeDefinition);
 63        
 64System::SharedPtr<ExtendedAttributeDefinition> numberAttributeDefinition = ExtendedAttributeDefinition::CreateLookupTaskDefinition(Aspose::Tasks::ExtendedAttributeTask::Number20, u"New number attribute");
 65        
 66System::SharedPtr<Value> val1 = System::MakeObject<Value>();
 67val1->set_Id(6);
 68val1->set_Val(u"1");
 69val1->set_Description(u"Number 1 value");
 70System::SharedPtr<Value> val2 = System::MakeObject<Value>();
 71val2->set_Id(7);
 72val2->set_Val(u"2");
 73val2->set_Description(u"Number 2 value");
 74System::SharedPtr<Value> val3 = System::MakeObject<Value>();
 75val2->set_Id(8);
 76val3->set_Val(u"3");
 77val3->set_Description(u"Number 3 value");
 78        
 79numberAttributeDefinition->AddLookupValue(val1);
 80numberAttributeDefinition->AddLookupValue(val2);
 81numberAttributeDefinition->AddLookupValue(val3);
 82        
 83project->get_ExtendedAttributes()->Add(numberAttributeDefinition);
 84        
 85        
 86// C# preprocessor directive: #endregion
 87        
 88        
 89System::SharedPtr<ExtendedAttributeDefinition> rscStartAttributeDefinition = ExtendedAttributeDefinition::CreateLookupResourceDefinition(Aspose::Tasks::ExtendedAttributeResource::Start5, u"New start5 attribute");
 90        
 91System::SharedPtr<Value> startVal2 = System::MakeObject<Value>();
 92startVal2->set_Id(9);
 93startVal2->set_DateTimeValue(System::DateTime::get_Now());
 94startVal2->set_Description(u"this is start5 value descr");
 95        
 96rscStartAttributeDefinition->AddLookupValue(startVal2);
 97        
 98project->get_ExtendedAttributes()->Add(rscStartAttributeDefinition);
 99        
100// Define a duration attribute without lookup.
101System::SharedPtr<ExtendedAttributeDefinition> taskDurationAttributeDefinition = ExtendedAttributeDefinition::CreateTaskDefinition(Aspose::Tasks::ExtendedAttributeTask::Duration1, u"New Duration");
102project->get_ExtendedAttributes()->Add(taskDurationAttributeDefinition);
103        
104// Add new task and assign duration value to the previously defined duration attribute.
105System::SharedPtr<Task> timeTask = project->get_RootTask()->get_Children()->Add(u"New task");
106        
107System::SharedPtr<ExtendedAttribute> durationExtendedAttribute = taskDurationAttributeDefinition->CreateExtendedAttribute();
108        
109durationExtendedAttribute->set_DurationValue(project->GetDuration(3.0, Aspose::Tasks::TimeUnitType::Hour));
110timeTask->get_ExtendedAttributes()->Add(durationExtendedAttribute);
111        
112System::SharedPtr<MPPSaveOptions> mppSaveOptions = System::MakeObject<MPPSaveOptions>();
113mppSaveOptions->set_WriteViewData(true);
114        
115// Save the project as MPP project file
116project->Save(dataDir + u"WriteUpdatedExtendedAttributeDefinitions_out.mpp", mppSaveOptions);
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.