Обработка ограничений задачи
Ограничения задач используются для определения расписания проекта Microsoft Project и определения того, когда задачи должны быть начаты или завершены. Ограничения могут быть гибкими - запустить или заканчивать как можно скорее или как можно позже - или негибкой. Негибкие ограничения связаны с конкретными датами.
Работа с ограничениями
Свойства ограничения и ограничения Constranttype выявляются задача класса для обработки ограничений:
- ConstraintDate принимает и возвращает тип данных даты.
 - Constranttype принимает и возвращает одно из значений перечисления Consusttype.
 
Установка ограничений в Microsoft Project
Чтобы установить ограничения в проекте Microsoft:
- В меню View выберите Больше представлений, а затем Форма ввода задачи.
 - Дважды щелкните задачу в форме записи задачи.
 - Выберите вкладку Advance.
 - Установите ограничение, выбрав опцию из списка типа и дату для даты ограничения.
 
Установка ограничений в Microsoft Project

Установка ограничений с Aspose.tasks
Дата ограничения - это, когда тип ограничения является как можно скорее или как можно позже. Для значений даты, равных Na, Aspose.Tasks использует значение «1/1/2000» в оценке версии, а также DateTime.minvalue для лицензированного продукта. В следующем случае мы принимаем исходный файл проекта в качестве ввода и применяем различные типы ограничений в различных задачах в каждом случае. Следующие образцы кода показывают применение различных типов ограничений и сопровождаемый снимок результата для каждого случая.
Входной файл

Приведенные ниже образцы кода установили тип ограничения, чтобы начать не раньше.
 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}