Manejo de limitaciones de tareas
Las restricciones de tareas se utilizan para definir el horario de un proyecto de Microsoft Project y definir cuándo deben iniciarse o terminarse las tareas. Las restricciones pueden ser flexibles: comenzar o terminar lo antes posible o lo más tarde posible, o inflexible. Las restricciones inflexibles están vinculadas a fechas específicas.
Trabajar con restricciones
Las propiedades de restricción y de restricción se exponen por la clase tarea para manejar restricciones:
- RestrictDate acepta y devuelve el tipo de datos de fecha.
- RestraintType acepta y devuelve uno de los valores de la enumeración de la restricción.
Configuración de restricciones en Microsoft Project
Para establecer restricciones en el proyecto Microsoft:
- En el menú Ver, seleccione más vistas y luego Formulario de entrada de tarea.
- Haga doble clic en una tarea en el formulario de entrada de tareas.
- Seleccione la pestaña Avance.
- Establezca una restricción seleccionando una opción en la lista Tipo de restricción y una fecha para la lista Fecha de restricción.
Configuración de restricciones en Microsoft Project
Configuración de restricciones con Aspose.Tasks
La fecha de restricción es NA cuando el tipo de restricción es lo antes posible o lo más tarde posible. Para valores de fecha iguales a NA, Aspose.Tasks usa el valor “1/1/2000” en la versión de evaluación y DateTime.MinValue para el producto con licencia. En el siguiente caso, tomamos un archivo de proyecto fuente como una entrada y aplicamos diferentes tipos de restricciones en varias tareas en cada caso. Las siguientes muestras de código muestran la aplicación de diferentes tipos de restricciones y la instantánea acompañada del resultado para cada caso.
El archivo de entrada
Las muestras de código a continuación establecen el tipo de restricción establecido en inicio no antes.
1// Create project instance
2Project project = new Project(dataDir + "ConstraintStartNoEarlierThan.mpp");
3
4// Set constraint Start No Earlier Than on task with Id 1
5Task summary = project.getRootTask().getChildren().getById(1);
6summary.set(Tsk.CONSTRAINT_TYPE, ConstraintType.StartNoEarlierThan);
7
8java.util.Calendar cal = java.util.Calendar.getInstance();
9cal.set(2013, 6, 3, 9, 0, 0);
10summary.set(Tsk.CONSTRAINT_DATE, cal.getTime());
11
12// Save project as pdf
13SaveOptions o = new PdfSaveOptions();
14o.setStartDate(project.get(Prj.START_DATE));
15o.setTimescale(Timescale.ThirdsOfMonths);
16project.save(dataDir + "project_StartNoEarlierThan_out.pdf", o);
Output file with Start No Earlier Than constraint
The code samples below set the constraint type set to Finish No Earlier Than.
1// Create project instance
2Project project = new Project(dataDir + "ConstraintStartNoEarlierThan.mpp");
3
4// Set constraint Start No Earlier Than on task with Id 1
5Task summary = project.getRootTask().getChildren().getById(1);
6summary.set(Tsk.CONSTRAINT_TYPE, ConstraintType.FinishNoEarlierThan);
7
8java.util.Calendar cal = java.util.Calendar.getInstance();
9cal.set(2013, 6, 1, 18, 0, 0);
10summary.set(Tsk.CONSTRAINT_DATE, cal.getTime());
11
12// Save project as pdf
13SaveOptions o = new PdfSaveOptions();
14o.setStartDate(project.get(Prj.START_DATE));
15o.setTimescale(Timescale.ThirdsOfMonths);
16project.save(dataDir + "project_StartNoEarlierThan_out.pdf", o);
Output file showing Finish No Earlier Than constraint
The code samples below set the constraint type set to Must Start On.
1// Create project instance
2Project project = new Project(dataDir + "ConstraintStartNoEarlierThan.mpp");
3
4// Set constraint Must Start On for task with Id 2
5Task roof = project.getRootTask().getChildren().getById(2);
6roof.set(Tsk.CONSTRAINT_TYPE, ConstraintType.MustFinishOn);
7
8java.util.Calendar cal = java.util.Calendar.getInstance();
9cal.set(2013, 6, 1, 18, 0, 0);
10roof.set(Tsk.CONSTRAINT_DATE, cal.getTime());
11
12// Save project as pdf
13SaveOptions options = new PdfSaveOptions();
14options.setStartDate(project.get(Prj.START_DATE));
15options.setTimescale(Timescale.ThirdsOfMonths);
16project.save(dataDir + "project_MustStartOn_out.pdf", options);
Output file showing Must Start On constraint
The code samples below set the constraint type set to As Late As Possible.
1// Create project instance
2Project project = new Project(dataDir + "ConstraintStartNoEarlierThan.mpp");
3
4// Set constraint As Late As Possible for task with Id 11
5Task wallBoard = project.getRootTask().getChildren().getById(11);
6wallBoard.set(Tsk.CONSTRAINT_TYPE, ConstraintType.AsLateAsPossible);
7
8// Save project as pdf
9SaveOptions options = new PdfSaveOptions();
10options.setStartDate(project.get(Prj.START_DATE));
11options.setTimescale(Timescale.ThirdsOfMonths);
12project.save(dataDir + "project_AsLateAsPossible_out.pdf", options);
Output file showing As Late As Possible constraint
The code sample below shows the constraint type set to Must Finish On.
1// Create project instance
2Project project = new Project(dataDir + "ConstraintStartNoEarlierThan.mpp");
3
4// Set constraint Must Finish On for task with Id 15
5Task interiorFixtures = project.getRootTask().getChildren().getById(15);
6interiorFixtures.set(Tsk.CONSTRAINT_TYPE, ConstraintType.MustFinishOn);
7
8java.util.Calendar cal = java.util.Calendar.getInstance();
9cal.set(2013, 9, 21, 18, 0, 0);
10interiorFixtures.set(Tsk.CONSTRAINT_DATE, cal.getTime());
11
12// Save project as pdf
13SaveOptions options = new PdfSaveOptions();
14options.setStartDate(project.get(Prj.START_DATE));
15options.setTimescale(Timescale.ThirdsOfMonths);
16project.save(dataDir + "project_MustFinishOn_out.pdf", options);
Output file showing Must Finish On constraint
Getting Constraints
This code sample displays any constraints found when traversing the tasks in the project to a command window.
1Project project = new Project(dataDir + "Project2.mpp");
2
3// Create a ChildTasksCollector instance
4ChildTasksCollector collector = new ChildTasksCollector();
5
6// Collect all the tasks from RootTask using TaskUtils
7TaskUtils.apply(project.getRootTask(), collector, 0);
8
9// Parse through all the collected tasks
10for (Task tsk1 : collector.getTasks())
11{
12 if (tsk1.get(Tsk.CONSTRAINT_DATE).toString() == "1/1/2000")
13 System.out.println("NA");
14 else
15 System.out.println(tsk1.get(Tsk.CONSTRAINT_DATE).toString());
16
17 System.out.println(tsk1.get(Tsk.CONSTRAINT_TYPE).toString());
18}