Как добавить Extended Attributes к Resource Assignments
Как и Tasks и Resources, Extended Attributes также можно добавлять к Resource Assignments. Aspose.Tasks for .NET API позволяет расширять данные проекта, прикрепляя как обычные, так и lookup Extended Attributes к назначениям ресурсов. Это позволяет хранить дополнительные метаданные и сделать отчётность по проекту более гибкой.
Добавление Extended Attributes к Resource Assignment
В этом примере демонстрируется, как создать и назначить Extended Attribute непосредственно Resource Assignment. Такой подход полезен, когда нужно отслеживать пользовательские данные, не входящие в стандартные поля Microsoft Project.
1// Create new project
2Project project = new Project("New Project.mpp");
3
4// Add new task and resource
5Task task = project.RootTask.Children.Add("Task");
6Resource resource = project.Resources.Add("Rsc");
7
8// Assign the resource to the desired task
9ResourceAssignment assignment = project.ResourceAssignments.Add(task, resource);
10
11// Custom attributes which is visible in "Resource Usage" view can be created with ExtendedAttributeDefinition.CreateResourceDefinition method.
12{
13 ExtendedAttributeDefinition resCostAttributeDefinition = ExtendedAttributeDefinition.CreateResourceDefinition(
14 CustomFieldType.Cost,
15 ExtendedAttributeResource.Cost5,
16 "My cost");
17
18 project.ExtendedAttributes.Add(resCostAttributeDefinition);
19
20 var value = resCostAttributeDefinition.CreateExtendedAttribute();
21
22 // The type of the attribute is "Cost", so we need to use "NumericValue" property.
23 value.NumericValue = 1500;
24
25 assignment.ExtendedAttributes.Add(value);
26}
27
28// Custom attributes which is visible in "Task Usage" view can be created with ExtendedAttributeDefinition.CreateTaskDefinition method
29{
30 ExtendedAttributeDefinition taskCostAttributeDefinition = ExtendedAttributeDefinition.CreateTaskDefinition(
31 CustomFieldType.Cost,
32 ExtendedAttributeTask.Cost5,
33 "My cost for task");
34
35 project.ExtendedAttributes.Add(taskCostAttributeDefinition);
36
37 var value = taskCostAttributeDefinition.CreateExtendedAttribute();
38
39 // The type of the attribute is "Cost", so we need to use "NumericValue" property.
40 value.NumericValue = 2300;
41
42 assignment.ExtendedAttributes.Add(value);
43}
44
45project.Save("AddExtendedAttributesToResourceAssignment_out.mpp", SaveFileFormat.MPP);
Добавление Lookup Extended Attributes к Resource Assignment
Следующий код показывает, как использовать lookup values для Extended Attributes. С помощью lookup атрибутов вы можете обеспечить соответствие данных Resource Assignment предопределённым спискам, снизить вероятность ошибок человека и поддерживать согласованность информации о проекте.
1// Create new project
2Project project = new Project("New Project.mpp");
3
4// Assign resource "1 TRG: Trade Group" to the "TASK 1" by creating a ResourceAssignment object.
5Resource resource = project.Resources.GetById(1);
6Task task = project.RootTask.Children.GetById(1);
7
8ResourceAssignment assignment = project.ResourceAssignments.Add(task, resource);
9
10// Create custom attribute definition with lookup.
11ExtendedAttributeDefinition resCostAttr = ExtendedAttributeDefinition.CreateLookupResourceDefinition(
12 CustomFieldType.Cost,
13 ExtendedAttributeResource.Cost5,
14 "My lookup resource cost");
15project.ExtendedAttributes.Add(resCostAttr);
16
17var value1 = new Value { NumberValue = 1500, Description = "Val 1", Id = 1, Val = "1500" };
18
19resCostAttr.AddLookupValue(value1);
20
21resCostAttr.AddLookupValue(new Value { NumberValue = 2500, Description = "Val 2", Id = 2 });
22
23// This value can be seen in "Resource usage" view of MS Project.
24var attributeValue = resCostAttr.CreateExtendedAttribute(value1);
25assignment.ExtendedAttributes.Add(attributeValue);
26
27// Create custom attribute definition with lookup.
28ExtendedAttributeDefinition taskCostAttr = ExtendedAttributeDefinition.CreateLookupTaskDefinition(
29 ExtendedAttributeTask.Cost4,
30 "My lookup task cost");
31
32project.ExtendedAttributes.Add(taskCostAttr);
33
34var taskLookupValue1 = new Value { NumberValue = 18, Description = "Task val 1", Id = 3, Val = "18" };
35taskCostAttr.AddLookupValue(taskLookupValue1);
36
37resCostAttr.AddLookupValue(new Value { NumberValue = 30, Description = "Task val 2", Id = 4 });
38
39// This value can be seen in "Task usage" view of MS Project.
40assignment.ExtendedAttributes.Add(taskCostAttr.CreateExtendedAttribute(taskLookupValue1));
41
42project.Save("AddExtendedAttributesToRAWithLookUp_out.mpp", SaveFileFormat.MPP);
Часто задаваемые вопросы
В: Нужно ли устанавливать Microsoft Project, чтобы работать с Extended Attributes?
- Нет. Aspose.Tasks for .NET работает независимо от Microsoft Project.
В: Могу ли я задать одновременно обычные и lookup Extended Attributes в одном проекте?
- Да. Вы можете смешивать обычные и lookup Extended Attributes в зависимости от потребностей вашего проекта.
В: Отобразятся ли Extended Attributes, добавленные через Aspose.Tasks, при открытии проекта в Microsoft Project?
- Да. Extended Attributes полностью поддерживаются Microsoft Project и будут видны при открытии файла.
Заключение
Добавление Extended Attributes к Resource Assignments в Aspose.Tasks for .NET предоставляет гибкость для управления дополнительными данными проекта. Используя как обычные, так и lookup атрибуты, вы можете обогатить файлы проекта пользовательскими полями, обеспечить целостность данных и усилить возможности отчётности без необходимости установки Microsoft Project. Эта функциональность делает Aspose.Tasks надёжным выбором для профессиональной автоматизации управления проектами на C#.