Écrire des métadonnées à MPP

Aspose.tasks pour .NET offre la possibilité d’écrire des métadonnées dans les fichiers Microsoft Project (MPP). Cela comprend les propriétés liées aux calendriers, aux tâches, aux liens de tâches, aux ressources et aux affectations de ressources. Ces métadonnées peuvent être essentielles pour l’intégration, la validation ou les workflows de suivi du projet.

Cet exemple montre comment écrire différents types de métadonnées dans un fichier MPP à l’aide de l’API Aspose.tasks. Il couvre les champs communs tels que les coordonnées des tâches, les détails d’allocation des ressources, les paramètres du calendrier et les attributs personnalisés.

Métadonnées utilisées dans l’exemple

Les champs de métadonnées suivants sont appliqués:

Ici Ismarked et Ignorewarnings sont des champs nouvellement ajoutés pour une tâche. De même pour les ressources, les propriétés TeamAsignmentPool et CostCenter sont fournies.

Les étapes suivantes sont suivies dans l’exemple de code pour montrer comment écrire des métadonnées sur les fichiers MPP:

  1. Ouvrez un nouveau fichier MPP vierge.
  2. Ajoutez des temps de travail le lundi du calendrier du projet et modifiez le nom du calendrier du projet.
  3. Ajoutez trois tâches avec des liens de tâche et des retards.
  4. Ajoutez deux ressources, un travail budgétaire et une ressource de coût budgétaire (quatre au total).
  5. Attribuer des ressources budgétaires à la tâche racine du projet (la tâche de résumé du projet).
  6. Attribuez deux autres ressources aux première et deuxième tâches.
  7. Définissez la ligne de base du projet.
  8. Ajoutez un nouvel attribut étendu de tâche.
  9. Enregistrer les modifications en tant que fichier 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);

Résumé

L’écriture de métadonnées dans un fichier MPP implique la définition de champs structurés pour différents éléments du projet. Aspose.Tasks pour .NET permet un accès direct à ces champs grâce au modèle objet. Cette approche permet l’intégration avec d’autres systèmes et prépare les fichiers MPP pour la génération de rapports détaillés ou la validation.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.