Trabajar con atributos de tareas extendidas

En el proyecto Microsoft, un atributo de tarea extendido es un elemento utilizado para capturar datos para un campo de tareas personalizado. Aspose.Tasks puede recuperar información de atributos extendidos para todas las versiones de Microsoft Project: 2003, 2007, 2010 y 2013.

Agregar información de atributo extendida para una tarea

Crear un atributo extendido requiere los siguientes pasos:

  1. Crear extendedAttributeDefinition para el atributo con los parámetros necesarios
  2. Crear extendedAttribute desde la definición en el paso anterior
  3. Agregue el extendedAttribute creado a la tarea
  1// The path to the documents directory.
  2String dataDir = Utils.getDataDir(AddTaskExtendedAttributes.class);
  3
  4// Create new project
  5Project project = new Project(dataDir + "project.mpp");
  6
  7//1.    Adding Plain Text Attribute
  8
  9//Create an Extended Attribute Definition of Text1 type
 10ExtendedAttributeDefinition taskExtendedAttributeText1Definition = ExtendedAttributeDefinition.createTaskDefinition(CustomFieldType.Text, ExtendedAttributeTask.Text1, "Task City Name");
 11
 12//Add it to the project's Extended Attributes collection
 13project.getExtendedAttributes().add(taskExtendedAttributeText1Definition);
 14
 15//Add a task to the project
 16Task task = project.getRootTask().getChildren().add("Task 1");
 17
 18//Create an Extended Attribute from the Attribute Definition
 19ExtendedAttribute taskExtendedAttributeText1 = taskExtendedAttributeText1Definition.createExtendedAttribute();
 20
 21//Assign a value to the generated Extended Attribute
 22taskExtendedAttributeText1.setTextValue("London");
 23
 24//Add the Extended Attribute to task
 25task.getExtendedAttributes().add(taskExtendedAttributeText1);
 26
 27project.save(dataDir + "PlainTextExtendedAttribute_out.mpp", SaveFileFormat.MPP);
 28
 29//2.    Adding Text Attribute with Lookup option
 30Project project1 = new Project(dataDir + "project.mpp");
 31
 32//Create an Extended Attribute Definition of Text2 type
 33ExtendedAttributeDefinition taskExtendedAttributeText2Definition = ExtendedAttributeDefinition.createLookupTaskDefinition(CustomFieldType.Text, ExtendedAttributeTask.Text2, "Task Towns Name");
 34
 35//Add lookup values for the extended attribute definition
 36Value val = new Value();
 37val.setId(1);
 38val.setStringValue("Town1");
 39val.setDescription("This is Town1");
 40taskExtendedAttributeText2Definition.addLookupValue(val);
 41
 42val = new Value();
 43val.setId(2);
 44val.setStringValue("Town2");
 45val.setDescription("This is Town2");
 46taskExtendedAttributeText2Definition.addLookupValue(val);
 47
 48//Add it to the porject's Extended Attributes collection
 49project1.getExtendedAttributes().add(taskExtendedAttributeText2Definition);
 50
 51//Add a task to the project
 52Task task2 = project1.getRootTask().getChildren().add("Task 2");
 53
 54//Crate an Extended Attribute from the Text2 Lookup Definition for Id 1
 55ExtendedAttribute taskExtendedAttributeText2 = taskExtendedAttributeText2Definition.createExtendedAttribute(taskExtendedAttributeText2Definition.getValueList().get(1));
 56
 57//Add the Extended Attribute to task
 58task2.getExtendedAttributes().add(taskExtendedAttributeText2);
 59
 60project1.save(dataDir + "TextExtendedAttributeWithLookup_out.mpp", SaveFileFormat.MPP);
 61
 62//3.    Adding Duration Attribute with Lookup option
 63
 64Project project2 = new Project(dataDir + "project.mpp");
 65
 66//Create an Extended Attribute Definition of Duration2 type
 67ExtendedAttributeDefinition taskExtendedAttributeDuration2Definition = ExtendedAttributeDefinition.createLookupTaskDefinition(CustomFieldType.Duration, ExtendedAttributeTask.Duration2, "Some duration");
 68
 69//Add lookup values for extended attribute definition
 70val = new Value();
 71val.setId(2);
 72val.setDuration(project2.getDuration(4, TimeUnitType.Hour));
 73val.setDescription("4 hours");
 74taskExtendedAttributeDuration2Definition.addLookupValue(val);
 75
 76
 77val = new Value();
 78val.setId(3);
 79val.setDuration(project2.getDuration(8, TimeUnitType.Day));
 80val.setDescription("1 day");
 81taskExtendedAttributeDuration2Definition.addLookupValue(val);
 82
 83val = new Value();
 84val.setId(4);
 85val.setDuration(project2.getDuration(1, TimeUnitType.Hour));
 86val.setDescription("1 hour");
 87taskExtendedAttributeDuration2Definition.addLookupValue(val);
 88
 89val = new Value();
 90val.setId(7);
 91val.setDuration(project2.getDuration(10, TimeUnitType.Day));
 92val.setDescription("10 days");
 93taskExtendedAttributeDuration2Definition.addLookupValue(val);
 94
 95//Add the definition to the project's Extended Attributes collection
 96project2.getExtendedAttributes().add(taskExtendedAttributeDuration2Definition);
 97
 98//Add a task to the project
 99Task task3 = project2.getRootTask().getChildren().add("Task 3");
100
101//Create an Extended Attribute from the Duration2 Lookup Definition for Id 3
102ExtendedAttribute taskExtendedAttributeDuration2 = taskExtendedAttributeDuration2Definition.createExtendedAttribute(taskExtendedAttributeDuration2Definition.getValueList().get(3));
103
104//Add the Extended Attribute to task
105task3.getExtendedAttributes().add(taskExtendedAttributeDuration2);
106
107project2.save(dataDir + "DurationExtendedAttributeWithLookup_out.mpp", SaveFileFormat.MPP);

Reading Extended Task Attributes

The ExtendedAttribute property exposed by the Task class is used to manage a task’s extended attributes. This property reads and writes an ArrayList of ExtendedAttribute objects to deal with a task’s extended attributes. The ExtendedAttribute object further exposes the relevant properties.

The following example shows how to view a task’s extended attributes with Aspose.Tasks.

 1// The path to the documents directory.
 2String dataDir = Utils.getDataDir(ExtendedTaskAttributes.class);
 3
 4Project project = new Project(dataDir + "Input.mpp");
 5
 6for (Task tsk:project.getRootTask().getChildren())
 7{
 8        for (ExtendedAttribute ea:tsk.getExtendedAttributes())
 9        {
10               System.out.println(ea.getFieldId());
11               System.out.println(ea.getValueGuid());
12               
13               switch (ea.getAttributeDefinition().getCfType())
14               {
15                   case CustomFieldType.Date:
16                   case CustomFieldType.Start:
17                   case CustomFieldType.Finish:
18                       System.out.println(ea.getDateValue());
19                       break;
20
21                   case CustomFieldType.Text:
22                       System.out.println(ea.getTextValue());
23                       break;
24
25                   case CustomFieldType.Duration:
26                       System.out.println(ea.getDurationValue().toString());
27                       break;
28
29                   case CustomFieldType.Cost:
30                   case CustomFieldType.Number:
31                       System.out.println(ea.getNumericValue());
32                       break;
33
34                   case CustomFieldType.Flag:
35                       System.out.println(ea.getFlagValue());
36                       break;
37               }
38        }
39}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.