일정표 작업
일정표 생성하기
Microsoft Project에서 일정표는 근무 시간과 비근무 시간을 정의하며, 이는 작업 일정과 리소스 가용성에 직접적인 영향을 미칩니다. Aspose.Tasks for .NET에서는
Calendar
클래스를 사용하여 일정표를 생성할 수 있으며, 다음과 같은 세 가지 생성자를 제공합니다:
Calendar()
– 기본 일정표를 초기화합니다.Calendar(int id)
– 특정 ID로 일정표를 초기화합니다.Calendar(string name)
– 지정한 이름으로 일정표를 초기화합니다.
다음 코드 샘플은 각 생성자를 사용하여 일정표를 인스턴스화하는 방법을 보여줍니다. 생성된 일정표는 Microsoft Project에서 프로젝트 > 프로젝트 정보 경로를 통해 확인할 수 있습니다.
Microsoft Project에서 생성된 일정표 확인
1// Create a project instance
2Project project = new Project();
3
4// New calendar can be added to a project's calendar collection using the collection's Add method.
5Calendar cal1 = project.Calendars.Add("New Info");
6Calendar cal2 = project.Calendars.Add("no name");
7Calendar cal3 = project.Calendars.Add("cal3");
8
9project.Save("CreatingCalendar_out.Xml", SaveFileFormat.XML);
일정표의 평일 정의하기
Calendar
클래스의
Days
컬렉션은 근무일과 해당 시간 범위를 나타냅니다. 평일 정의는
WeekDay
및
WorkingTime
클래스를 통해 구성됩니다.
개발자는 CreateDefaultWorkingDay()
메서드를 사용하여 특정 요일에 대한 표준 근무 시간을 설정하거나 FromTime
및 ToTime
속성을 통해 사용자 지정 시간대를 설정할 수 있습니다.
아래 예제에서는 월요일부터 목요일까지는 기본 근무일로, 금요일은 사용자 정의 시간대로 설정합니다. 결과를 확인하려면 Microsoft Project에서 도구 > 근무 시간 변경 메뉴를 사용하세요.
Microsoft Project에서 평일 정의하기
1// This example shows how Aspose.Tasks API can be used to define a new Calendar, add week days to it and define working times for days
2// Create a project instance
3Project project = new Project();
4
5// Define Calendar
6Calendar cal = project.Calendars.Add("Calendar1");
7
8// Add working days monday through thursday with default timings
9cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Monday));
10cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Tuesday));
11cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Wednesday));
12cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Thursday));
13cal.WeekDays.Add(new WeekDay(DayType.Saturday));
14cal.WeekDays.Add(new WeekDay(DayType.Sunday));
15
16// Set friday as short working day
17WeekDay myWeekDay = new WeekDay(DayType.Friday);
18
19// Sets working time. Only time part of DateTime is important
20WorkingTime wt1 = new WorkingTime();
21wt1.FromTime = new DateTime(1, 1, 1, 9, 0, 0, 0);
22wt1.ToTime = new DateTime(1, 1, 1, 12, 0, 0, 0);
23WorkingTime wt2 = new WorkingTime();
24wt2.FromTime = new DateTime(1, 1, 1, 13, 0, 0, 0);
25wt2.ToTime = new DateTime(1, 1, 1, 16, 0, 0, 0);
26myWeekDay.WorkingTimes.Add(wt1);
27myWeekDay.WorkingTimes.Add(wt2);
28myWeekDay.DayWorking = true;
29cal.WeekDays.Add(myWeekDay);
30
31project.Save("Project_DefineCalendarWeekdays_out.xml", SaveFileFormat.XML);
일정표 교체하기
기본 일정표는 리소스 및 작업 일정의 템플릿 역할을 합니다. Aspose.Tasks는
Project
객체를 통해
CalendarCollection
에 접근하여 기존 일정표를 교체할 수 있도록 지원합니다.
지원되는 기본 일정표 유형은 다음과 같습니다:
- Standard: 월–금, 08:00–17:00
- 24-Hours: 연중무휴 연속 작업을 위한 일정표
- Night Shift: 월요일 밤부터 토요일 아침까지, 23:00–08:00
아래 코드는 기존 일정표를 제거하고 새 표준 일정표를 컬렉션에 추가하는 방법을 보여줍니다.
1// Create project
2Project project = new Project("New Project.mpp");
3
4// Access project calendars
5CalendarCollection calColl = project.Calendars;
6foreach (Calendar myCalendar in calColl)
7{
8 if (myCalendar.Name == "TestCalendar")
9 {
10 // Remove calendar
11 calColl.Remove(myCalendar);
12 }
13}
14
15// Add new calendar
16Calendar newCalendar = calColl.Add("TestCalendar");
17project.Save("ReplaceCalendar_out.mpp", SaveFileFormat.MPP);
표준 일정표 생성하기
표준 일정표는 프로젝트에서 일반적으로 사용되는 근무일 및 근무 시간을 정의합니다. Aspose.Tasks는 이를 위해 두 가지 정적 메서드를 제공합니다:
MakeStandardCalendar()
– 표준 구성의 새 일정표 생성MakeStandardCalendar(Calendar cal)
– 기존 일정표를 표준 일정표로 변환
Microsoft Project에서 결과를 확인하려면 도구 > 근무 시간 변경을 사용하세요.
근무 시간 변경 대화 상자에서 프로젝트의 표준 일정표 확인
1// Create a project instance
2Project project = new Project();
3
4// Define Calendar and make it standard
5Calendar cal1 = project.Calendars.Add("My Cal");
6Calendar.MakeStandardCalendar(cal1);
7
8project.Save("Project_MakeStandardCalendar_out.xml", SaveFileFormat.XML);
수정된 일정표 데이터를 MPP 파일에 저장하기
Aspose.Tasks는 일정표 정의를 수정하고 이를 MPP 파일에 다시 저장할 수 있도록 지원합니다. 이 과정은 다음 단계로 구성됩니다:
- 기존 MPP 파일 불러오기
- 일정표 컬렉션 수정 (추가, 업데이트 등)
- 수정된 프로젝트를 디스크에 저장하기
다음 예제는 새 일정표를 추가하고 이를 원본 MPP 파일에 다시 쓰는 과정을 보여줍니다.
1Project project = new Project("New Project.mpp");
2Calendar cal = project.Calendars.GetByUid(3);
3
4// Update the calendar information
5Calendar.MakeStandardCalendar(cal);
6cal.Name = "Test calendar";
7CalendarException exc = new CalendarException();
8exc.FromDate = DateTime.Now;
9exc.ToDate = DateTime.Now.AddDays(2);
10exc.DayWorking = true;
11
12WorkingTime wt1 = new WorkingTime();
13wt1.FromTime = new DateTime(10, 1, 1, 9, 0, 0);
14wt1.ToTime = new DateTime(10, 1, 1, 13, 0, 0);
15
16WorkingTime wt2 = new WorkingTime();
17wt2.FromTime = new DateTime(10, 1, 1, 14, 0, 0);
18wt2.ToTime = new DateTime(10, 1, 1, 19, 0, 0);
19
20WorkingTime wt3 = new WorkingTime();
21wt3.FromTime = new DateTime(10, 1, 1, 20, 0, 0);
22wt3.ToTime = new DateTime(10, 1, 1, 21, 0, 0);
23
24exc.WorkingTimes.Add(wt1);
25exc.WorkingTimes.Add(wt2);
26exc.WorkingTimes.Add(wt3);
27cal.Exceptions.Add(exc);
28
29CalendarException exc2 = new CalendarException();
30exc2.FromDate = DateTime.Now.AddDays(7);
31exc2.ToDate = exc2.FromDate;
32exc2.DayWorking = false;
33cal.Exceptions.Add(exc2);
34
35project.Set(Prj.Calendar, cal);
36
37project.Save("WriteUpdatedCalendarDataToMPP_out.mpp", SaveFileFormat.MPP);