Написание метаданных в MPP
Contents
[
Hide
Show
]Aspose.Tasks для Java предоставляет объект для написания метаданных для файлов MPP для календари, задач, ссылок на задачи, ресурсов и заданий ресурсов.
Написание метаданных в Microsoft Project Files
В этом примере используются следующие метаданные:
- Календарь
- CalendarName
- Задача
- Contact
- IsMarked
- IgnoreWarnings
- TaskLink
- LagFormat
- LinkLag
- Ресурс
- Type
- Инициалы
- MaxUnits
- Code
- Group
- EmailAddress
- NTAccount
- IsGeneric
- AccrueAt
- TeamAssignmentPool
- Costcenter
- Ресурссенсия
- Uid
- Work
- RemainingWork
- RegularWork
- Start
- Finish
Здесь Ismarked и игнорируют, что являются вновь добавленными полями для задачи. Точно так же для ресурсов предоставляются объекты TeamAssignmentPool и Costcenter.
Следующие шаги выполняются в примере кода, чтобы продемонстрировать, как писать метаданные в MPP:
- Откройте новый, пустой файл MPP.
- Добавьте время работы в понедельник календаря проекта и измените название календаря проекта.
- Добавьте три задачи со ссылками на задание и лаги.
- Добавьте два ресурса, одну бюджетную работу и один ресурс бюджетной стоимости (в общей сложности).
- Назначить бюджетные ресурсы для задачи Root Project (задача сводного проекта).
- Назначьте еще два ресурса для первой и второй задач.
- Установите базовую линию проекта.
- Добавьте новый атрибут расширенного задачи.
- Сохранить изменения как файл 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);