Написание метаданных в MPP

Aspose.tasks для .net предоставляет возможность записать метаданные в файлы Microsoft Project (MPP). Это включает в себя свойства, связанные с календарями, задачами, задачами, ресурсами и ресурсами. Такие метаданные могут быть важны для рабочих процессов интеграции, проверки или отслеживания проектов.

Этот пример демонстрирует, как писать различные типы метаданных в файл MPP с использованием API Aspose.Tasks. Он охватывает общие поля, такие как контактная информация о задаче, детали распределения ресурсов, настройки календаря и пользовательские атрибуты.

Метаданные, используемые в примере

Применяются следующие поля метаданных:

Здесь Ismarked и игнорируют, что являются вновь добавленными полями для задачи. Точно так же для ресурсов предоставляются объекты TeamAssignmentPool и Costcenter.

В примере кода выполняются следующие шаги, чтобы продемонстрировать, как записать метаданные в файлы MPP:

  1. Откройте новый, пустой файл MPP.
  2. Добавьте время работы в понедельник календаря проекта и измените название календаря проекта.
  3. Добавьте три задачи со ссылками на задание и лаги.
  4. Добавьте два ресурса, одну бюджетную работу и один ресурс бюджетной стоимости (в общей сложности).
  5. Назначить бюджетные ресурсы для задачи Root Project (задача сводного проекта).
  6. Назначьте еще два ресурса для первой и второй задач.
  7. Установите базовую линию проекта.
  8. Добавьте новый атрибут расширенного задачи.
  9. Сохранить изменения как файл 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);

Summary

Writing metadata to an MPP file involves setting structured fields for various project elements. Aspose.Tasks for .NET allows direct access to these fields using the object model. This approach enables integration with other systems and prepares MPP files for detailed reporting or validation.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.