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

Aspose.Tasks для Java предоставляет объект для написания метаданных для файлов MPP для календари, задач, ссылок на задачи, ресурсов и заданий ресурсов.

Написание метаданных в Microsoft Project Files

В этом примере используются следующие метаданные:

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

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

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

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

 1// The path to the documents directory.
 2String dataDir = Utils.getDataDir(WriteMetadata.class);
 3
 4long OneSec = 10000000;
 5long OneMin = 60 * OneSec;
 6long OneHour = 60 * OneMin;
 7long OneDayEightHour = 8 * OneHour;
 8long OneDayTwentyFourHour = 24 * OneHour;
 9
10Project project = new Project(dataDir + "New project 2010.mpp");
11java.util.Calendar calendar = java.util.Calendar.getInstance(TimeZone.getTimeZone("GMT"));
12calendar.set(2012, java.util.Calendar.DECEMBER, 7, 0, 0, 0);
13Date startDate = calendar.getTime();
14calendar.set(2013, java.util.Calendar.DECEMBER, 7, 0, 0, 0);
15Date toDate = calendar.getTime();
16
17WorkingTime wt = new WorkingTime();
18wt.setFromTime(startDate);
19wt.setToTime(toDate);
20
21WeekDay day = project.get(Prj.CALENDAR).getWeekDays().toList().get(1);
22day.getWorkingTimes().add(wt);
23
24project.get(Prj.CALENDAR).setName("CHANGED NAME!");
25
26Task task = project.getRootTask().getChildren().add("Task 1");
27task.set(Tsk.DURATION_FORMAT, TimeUnitType.Day);
28task.set(Tsk.DURATION, project.getDuration(3));
29task.set(Tsk.CONTACT, "Rsc 1");
30// new fields
31task.set(Tsk.IS_MARKED, true);
32task.set(Tsk.IGNORE_WARNINGS, true);
33
34Task task2 = project.getRootTask().getChildren().add("Task 2");
35task2.set(Tsk.DURATION_FORMAT, TimeUnitType.Day);
36task2.set(Tsk.CONTACT, "Rsc 2");
37
38project.getTaskLinks().add(task, task2, TaskLinkType.FinishToStart, project.getDuration(-1, TimeUnitType.Day));
39
40calendar.set(2013, java.util.Calendar.DECEMBER, 13, 9, 0, 0);
41startDate = calendar.getTime();
42project.set(Prj.START_DATE, startDate);
43
44Resource rsc = project.getResources().add("Rsc 1");
45rsc.set(Rsc.TYPE, ResourceType.Work);
46rsc.set(Rsc.INITIALS, "WR");
47rsc.set(Rsc.ACCRUE_AT, CostAccrualType.Prorated);
48rsc.set(Rsc.MAX_UNITS, 1d);
49rsc.set(Rsc.CODE, "Code 1");
50rsc.set(Rsc.GROUP, "Workers");
51rsc.set(Rsc.E_MAIL_ADDRESS, "1@gmail.com");
52rsc.set(Rsc.WINDOWS_USER_ACCOUNT, "user_acc1");
53rsc.set(Rsc.IS_GENERIC, new NullableBool(true));
54rsc.set(Rsc.ACCRUE_AT, CostAccrualType.End);
55rsc.set(Rsc.STANDARD_RATE, BigDecimal.valueOf(10));
56rsc.set(Rsc.STANDARD_RATE_FORMAT, RateFormatType.Day);
57rsc.set(Rsc.OVERTIME_RATE, BigDecimal.valueOf(15));
58rsc.set(Rsc.OVERTIME_RATE_FORMAT, RateFormatType.Hour);
59
60rsc.set(Rsc.IS_TEAM_ASSIGNMENT_POOL, true);
61rsc.set(Rsc.COST_CENTER, "Cost Center 1");
62
63ResourceAssignment assn = project.getResourceAssignments().add(task, rsc);
64assn.set(Asn.UID, 1);
65assn.set(Asn.WORK, task.get(Tsk.DURATION));
66assn.set(Asn.REMAINING_WORK, assn.get(Asn.WORK));
67assn.set(Asn.REGULAR_WORK, assn.get(Asn.WORK));
68task.set(Tsk.WORK, assn.get(Asn.WORK));
69
70rsc.set(Rsc.WORK, task.get(Tsk.WORK));
71assn.set(Asn.START, task.get(Tsk.START));
72assn.set(Asn.FINISH, task.get(Tsk.FINISH));
73
74// Add extended attribute for project and task
75ExtendedAttributeDefinition attr = ExtendedAttributeDefinition.createTaskDefinition(CustomFieldType.Flag,
76        ExtendedAttributeTask.Flag1, "My Flag Field");
77project.getExtendedAttributes().add(attr);
78
79ExtendedAttribute taskAttr = attr.createExtendedAttribute();
80taskAttr.setFlagValue(true);
81task2.getExtendedAttributes().add(taskAttr);
82
83project.save(dataDir + "updated.mpp", SaveFileFormat.MPP);
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.