Escribir datos actualizados de enlaces de tareas a MPP

Con Aspose.Tasks para Java, es posible vincular las tareas en un proyecto y guardar los datos de enlace de tareas actualizados a un archivo MPP de Microsoft Project. Esto significa que puede abrir un archivo MPP, actualizar los enlaces de tarea y guardar el archivo nuevamente.

Actualización de enlaces de tareas El fragmento de código a continuación muestra cómo vincular las tareas en un proyecto y volver a escribir los datos del enlace al archivo MPP. Los pasos involucrados en esta actividad son:

  1. Cree una instancia del lector del proyecto.
  2. Lea el archivo MPP de origen.
  3. Cree tareas y agreguelas a la tarea raíz del proyecto.
  4. Enlace las tareas usando los tipos de enlace StartToFinish y FinalTostart.
  5. Guarde el proyecto utilizando el escritor del proyecto.

El siguiente código demuestra cómo funciona esta característica.

  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);
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.