Написання оновлених даних TaskLink на MPP
За допомогою Aspose.Tasks для Java можна зв’язати завдання в проекті та зберегти оновлені дані посилання на завдання назад у файл MICSoft Project MPP. Це означає, що ви можете відкрити файл MPP, оновити посилання на завдання та зберегти файл назад.
Посилання на оновлення завдань Наведений нижче фрагмент коду показує, як зв’язати завдання в проекті та записати дані посилання назад у файл MPP. Кроки, пов’язані з цією діяльністю, є:
- Створіть екземпляр читача проекту.
- Прочитайте файл MPP Source.
- Створіть завдання та додайте їх до кореневого завдання проекту.
- Зв’яжіть завдання за допомогою типів посилань Starttofinish та FinintTostart.
- Збережіть проект за допомогою письменника проекту.
Наступний код демонструє, як працює ця функція.
1// For complete examples and data files, please go to https://github.com/aspose-tasks/Aspose.Tasks-for-Java
2// The path to the documents directory.
3String dataDir = Utils.getDataDir(UpdatedTaskLinkDataToMpp.class);
4
5long OneSec = 10000000;// microsecond * 10
6long OneMin = 60 * OneSec;
7long OneHour = 60 * OneMin;
8
9String newFile = "Blank2010.mpp";
10// File to write test project
11String resultFile = "Output.mpp";
12
13// Read new empty file
14Project project = new Project(newFile);
15
16// Add eight tasks
17Task task1 = project.getRootTask().getChildren().add("1");
18task1.set(Tsk.DURATION, project.getDuration(8, TimeUnitType.Hour));
19task1.set(Tsk.START, project.get(Prj.START_DATE));
20task1.set(Tsk.FINISH,
21 project.get(Prj.CALENDAR).getTaskFinishDateFromDuration(task1, task1.get(Tsk.DURATION).toDouble()));
22
23Task task2 = project.getRootTask().getChildren().add("2");
24task2.set(Tsk.DURATION, project.getDuration(8, TimeUnitType.Hour));
25task2.set(Tsk.START, project.get(Prj.START_DATE));
26task2.set(Tsk.FINISH,
27 project.get(Prj.CALENDAR).getTaskFinishDateFromDuration(task2, task2.get(Tsk.DURATION).toDouble()));
28
29project.getRootTask().getChildren().add(task1);
30project.getRootTask().getChildren().add(task2);
31
32Task task3 = project.getRootTask().getChildren().add("3");
33task3.set(Tsk.DURATION, project.getDuration(8, TimeUnitType.Hour));
34task3.set(Tsk.START, project.get(Prj.START_DATE));
35task3.set(Tsk.FINISH,
36 project.get(Prj.CALENDAR).getTaskFinishDateFromDuration(task3, task3.get(Tsk.DURATION).toDouble()));
37
38Task task4 = project.getRootTask().getChildren().add("4");
39task4.set(Tsk.DURATION, project.getDuration(8, TimeUnitType.Hour));
40task4.set(Tsk.START, project.get(Prj.START_DATE));
41task4.set(Tsk.FINISH,
42 project.get(Prj.CALENDAR).getTaskFinishDateFromDuration(task4, task4.get(Tsk.DURATION).toDouble()));
43
44project.getRootTask().getChildren().add(task3);
45project.getRootTask().getChildren().add(task4);
46
47Task task5 = project.getRootTask().getChildren().add("5");
48task5.set(Tsk.DURATION, project.getDuration(8, TimeUnitType.Hour));
49java.util.Calendar cal = java.util.Calendar.getInstance();
50cal.setTime(project.get(Prj.START_DATE));
51cal.add(java.util.Calendar.DATE, 7);
52
53task5.set(Prj.START_DATE, cal.getTime());
54task5.set(Tsk.FINISH,
55 project.get(Prj.CALENDAR).getTaskFinishDateFromDuration(task5, task5.get(Tsk.DURATION).toDouble()));
56task5.set(Tsk.CONSTRAINT_TYPE, ConstraintType.MustStartOn);
57task5.set(Tsk.CONSTRAINT_DATE, task5.get(Tsk.START));
58
59Task task6 = project.getRootTask().getChildren().add("6");
60task6.set(Tsk.DURATION, project.getDuration(8, TimeUnitType.Hour));
61task6.set(Tsk.FINISH, task5.get(Tsk.START));
62task6.set(Tsk.START,
63 project.get(Prj.CALENDAR).getTaskFinishDateFromDuration(task6, task6.get(Tsk.DURATION).toDouble()));
64
65project.getRootTask().getChildren().add(task5);
66project.getRootTask().getChildren().add(task6);
67
68Task task7 = project.getRootTask().getChildren().add("7");
69task7.set(Tsk.DURATION, project.getDuration(8, TimeUnitType.Hour));
70
71Task task8 = project.getRootTask().getChildren().add("8");
72task8.set(Tsk.DURATION, project.getDuration(8, TimeUnitType.Hour));
73
74project.getRootTask().getChildren().add(task7);
75project.getRootTask().getChildren().add(task8);
76
77task7.set(Tsk.START, project.get(Prj.START_DATE));
78task7.set(Tsk.START,
79 project.get(Prj.CALENDAR).getTaskFinishDateFromDuration(task7, task7.get(Tsk.DURATION).toDouble()));
80
81cal.setTime(project.get(Prj.START_DATE));
82cal.add(java.util.Calendar.DATE, 1);
83task8.set(Tsk.START, cal.getTime());
84task8.set(Tsk.START,
85 project.get(Prj.CALENDAR).getTaskFinishDateFromDuration(task8, task8.get(Tsk.DURATION).toDouble()));
86
87// Add four TaskLinks with different TaskLinkTypes
88TaskLink link1 = project.getTaskLinks().add(task1, task2, TaskLinkType.StartToStart);
89
90TaskLink link2 = project.getTaskLinks().add(task3, task4, TaskLinkType.FinishToFinish);
91
92TaskLink link3 = project.getTaskLinks().add(task5, task6, TaskLinkType.StartToFinish);
93
94TaskLink link4 = project.getTaskLinks().add(task7, task8, TaskLinkType.FinishToStart);
95
96link4.setLagFormat(TimeUnitType.Day);
97link4.setLinkLag(60 * 8 * 10 * 10); // 10d
98task8.set(Tsk.START,
99 project.get(Prj.CALENDAR).getFinishDateByStartAndWork(task8.get(Tsk.FINISH), OneHour * 8 * 10));
100task8.set(Tsk.FINISH, project.get(Prj.CALENDAR).getFinishDateByStartAndWork(task8.get(Tsk.START),
101 task8.get(Tsk.DURATION).toDouble()));
102
103project.save(dataDir + "Project.Mpp", SaveFileFormat.MPP);