Escribir metadatos para MPP

Aspose.Tasks para .NET proporciona la capacidad de escribir metadatos en archivos de Microsoft Project (MPP). Esto incluye propiedades relacionadas con calendarios, tareas, enlaces de tareas, recursos y asignaciones de recursos. Dichos metadatos pueden ser esenciales para los flujos de trabajo de integración, validación o seguimiento de proyectos.

Este ejemplo demuestra cómo escribir varios tipos de metadatos en un archivo MPP utilizando la API Aspose.Tasks. Cubre campos comunes, como información de contacto de tareas, detalles de asignación de recursos, configuración del calendario y atributos personalizados.

Metadatos utilizados en el ejemplo

Se aplican los siguientes campos de metadatos:

Aquí está marcado e IgnoreWarnings son campos recientemente agregados para una tarea. De manera similar, para los recursos, se proporcionan las propiedades TeamAssignmentPool y CostCenter.

Los siguientes pasos se siguen en el código de muestra para demostrar cómo escribir metadatos en archivos MPP:

  1. Abra un nuevo archivo MPP en blanco.
  2. Agregue los horarios de trabajo el lunes del calendario del proyecto y cambie el nombre del calendario del proyecto.
  3. Agregue tres tareas con enlaces de tareas y retrasos.
  4. Agregue dos recursos, un trabajo presupuestario y un recurso de costo presupuestario (cuatro en total).
  5. Asigne recursos presupuestarios a la tarea raíz del proyecto (la tarea de resumen del proyecto).
  6. Asigne otros dos recursos a la primera y segunda tareas.
  7. Establezca la línea de base del proyecto.
  8. Agregue un nuevo atributo extendido de tarea.
  9. Guarde los cambios como un archivo MPP.
 1Project project = new Project("New Project.mpp");
 2
 3// Add working times to project calendar
 4WorkingTime wt = new WorkingTime();
 5wt.FromTime = new DateTime(2010, 1, 1, 19, 0, 0);
 6wt.ToTime = new DateTime(2010, 1, 1, 20, 0, 0);
 7WeekDay day = project.Get(Prj.Calendar).WeekDays.ToList()[1];
 8day.WorkingTimes.Add(wt);
 9
10// Change calendar name
11project.Get(Prj.Calendar).Name = "CHANGED NAME!";
12
13// Add tasks and set task meta data
14Task task = project.RootTask.Children.Add("Task 1");
15task.Set(Tsk.DurationFormat, TimeUnitType.Day);
16task.Set(Tsk.Duration, project.GetDuration(3));
17task.Set(Tsk.Contact, "Rsc 1");
18task.Set(Tsk.IsMarked, true);
19task.Set(Tsk.IgnoreWarnings, true);
20Task task2 = project.RootTask.Children.Add("Task 2");
21task2.Set(Tsk.DurationFormat, TimeUnitType.Day);
22task2.Set(Tsk.Contact, "Rsc 2");
23
24// Link tasks
25project.TaskLinks.Add(task, task2, TaskLinkType.FinishToStart, project.GetDuration(-1, TimeUnitType.Day));
26
27// Set project start date
28project.Set(Prj.StartDate, new DateTime(2013, 8, 13, 9, 0, 0));
29
30// Add resource and set resource meta data
31Resource resource = project.Resources.Add("Rsc 1");
32resource.Set(Rsc.Type, ResourceType.Work);
33resource.Set(Rsc.Initials, "WR");
34resource.Set(Rsc.AccrueAt, CostAccrualType.Prorated);
35resource.Set(Rsc.MaxUnits, 1);
36resource.Set(Rsc.Code, "Code 1");
37resource.Set(Rsc.Group, "Workers");
38resource.Set(Rsc.EMailAddress, "1@gmail.com");
39resource.Set(Rsc.WindowsUserAccount, "user_acc1");
40resource.Set(Rsc.IsGeneric, new NullableBool(true));
41resource.Set(Rsc.AccrueAt, CostAccrualType.End);
42resource.Set(Rsc.StandardRate, 10);
43resource.Set(Rsc.StandardRateFormat, RateFormatType.Day);
44resource.Set(Rsc.OvertimeRate, 15);
45resource.Set(Rsc.OvertimeRateFormat, RateFormatType.Hour);
46resource.Set(Rsc.IsTeamAssignmentPool, true);
47resource.Set(Rsc.CostCenter, "Cost Center 1");
48
49// Create resource assignment and set resource assignment meta data
50ResourceAssignment assignment = project.ResourceAssignments.Add(task, resource);
51assignment.Set(Asn.Uid, 1);
52assignment.Set(Asn.Work, task.Get(Tsk.Duration));
53assignment.Set(Asn.RemainingWork, assignment.Get(Asn.Work));
54assignment.Set(Asn.RegularWork, assignment.Get(Asn.Work));
55task.Set(Tsk.Work, assignment.Get(Asn.Work));
56
57resource.Set(Rsc.Work, task.Get(Tsk.Work));
58assignment.Set(Asn.Start, task.Get(Tsk.Start));
59assignment.Set(Asn.Finish, task.Get(Tsk.Finish));
60
61// Add extended attribute for project and task
62ExtendedAttributeDefinition attr = ExtendedAttributeDefinition.CreateTaskDefinition(CustomFieldType.Flag, ExtendedAttributeTask.Flag1,  "My Flag Field");
63project.ExtendedAttributes.Add(attr);
64
65ExtendedAttribute taskAttr = attr.CreateExtendedAttribute();
66taskAttr.FlagValue = true;
67task2.ExtendedAttributes.Add(taskAttr);
68
69project.Save("WriteMetaData_out.mpp", SaveFileFormat.MPP);

Resumen

La escritura de metadatos en un archivo MPP implica la configuración de campos estructurados para diversos elementos del proyecto. Aspose.Tasks para .NET permite el acceso directo a estos campos mediante el modelo de objetos. Este enfoque facilita la integración con otros sistemas y prepara los archivos MPP para la generación de informes detallados o la validación.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.