작업 제약 조건 처리
작업 제약은 Microsoft Project Project의 일정을 정의하고 작업을 시작하거나 완료 해야하는시기를 정의하는 데 사용됩니다. 제약 조건은 융통성이있을 수 있습니다. 가능한 빨리 또는 가능한 빨리 또는 융통성이 없거나 융통성이 없습니다. 융통성없는 제약은 특정 날짜와 관련이 있습니다.
제약 조건으로 작업
제약 조건 및 제약 유형 속성은 작업 클래스에 의해 노출되어 제약 조건을 처리합니다.
- 구속 조건에서 날짜 데이터 유형을 수락하고 반환합니다.
- 제한자 유형은 제한자 유형 열거의 값 중 하나를 받아들이고 반환합니다.
Microsoft Project에서 제약 조건 설정
Microsoft Project에서 제약을 설정하려면 :
- 보기 메뉴에서 더 많은보기를 선택한 다음 작업 입력 양식을 선택하십시오.
- 작업 입력 양식에서 작업을 두 번 클릭하십시오.
- 사전 탭을 선택하십시오.
- 제약 조건 유형 목록에서 옵션을 선택하여 제약 조건을 설정하고 제약 조건 날짜 목록의 날짜를 설정하십시오.
Microsoft Project에서 제약 조건 설정
Aspose.Tasks로 제약 조건 설정
제약 조건 날짜는 제약 유형이 가능한 한 빨리 또는 가능한 한 늦게 인 경우 NA입니다. 날짜 값의 경우 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}