2010-09-21 63 views
0

我正在与MPXJ框架一起生成一个XML文件,并将其导入到项目2007中。我遇到了许多问题,但我似乎无法找到以下答案。MPXJ在资源上设置24小时日历

我有任务的固定的工作和持续时间,但是当我在项目中添加资源,并导入它,我得到一个错误信息:

“资源在项目中分配的原始日期之外的任务2 。这个固定时间任务的持续时间将改变以适应资源分配“。

然后项目更改工作和或持续时间值。那不是我想要的。我想资源使用24小时日历,但我似乎无法附加项目2007年标准日历,所以我想让我自己24小时日历,并附加到资源。现在我似乎无法在工作日中设置0:00:00至0:00:00的时间。

ProjectCalendar calendar = projectFile.addResourceCalendar(); 
calendar.setName("24 Hours"); 
calendar.setUniqueID(Count); 
calendar.setWorkingDay(Day.MONDAY, true); 
calendar.setWorkingDay(Day.TUESDAY, true); 
calendar.setWorkingDay(Day.WEDNESDAY, true); 
calendar.setWorkingDay(Day.TUESDAY, true); 
calendar.setWorkingDay(Day.FRIDAY, true); 

Resource resource = projectFile.addResource(); 
resource.setUniqueID(Count); 
resource.setName("Painters"); 
resource.setResourceCalendar(calendar); 

任何人都知道一个解决方案得到的默认24小时日历设置为我自己的资源。

回答

2

以下代码说明了如何创建24小时日历。我对每天的啰嗦方式表示歉意,我需要改进Day类的工作方式,以便迭代更容易。

需要注意的关键点是DateRange实例设置为在一个日期的00:00小时开始,并在第二天的00:00小时处结束。实际使用的日期无关紧要,日历仅使用日期的时间元素。

希望有道理!

// 
    // Use this date formatter to make it simple to specific the range 
    // start and wne dates 
    // 
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 

    // 
    // This is an immutable date range, so we can share it without 
    // worrying about it being changed 
    // 
    DateRange range = new DateRange(format.parse("2000-01-01 00:00"), format.parse("2000-01-02 00:00")); 

    // 
    // Add the calendar and name it 
    // 
    ProjectCalendar test = file.addBaseCalendar(); 
    test.setName("Test 24 Hours"); 

    // 
    // Mark each day as working 
    // 
    test.setWorkingDay(Day.SUNDAY, true); 
    test.setWorkingDay(Day.MONDAY, true); 
    test.setWorkingDay(Day.TUESDAY, true); 
    test.setWorkingDay(Day.WEDNESDAY, true); 
    test.setWorkingDay(Day.THURSDAY, true); 
    test.setWorkingDay(Day.FRIDAY, true); 
    test.setWorkingDay(Day.SATURDAY, true); 

    // 
    // Add a working hours range to each day 
    // 
    ProjectCalendarHours hours; 
    hours = test.addCalendarHours(Day.SUNDAY); 
    hours.addRange(range); 
    hours = test.addCalendarHours(Day.MONDAY); 
    hours.addRange(range); 
    hours = test.addCalendarHours(Day.TUESDAY); 
    hours.addRange(range); 
    hours = test.addCalendarHours(Day.WEDNESDAY); 
    hours.addRange(range); 
    hours = test.addCalendarHours(Day.THURSDAY); 
    hours.addRange(range); 
    hours = test.addCalendarHours(Day.FRIDAY); 
    hours.addRange(range); 
    hours = test.addCalendarHours(Day.SATURDAY); 
    hours.addRange(range); 
+0

我们得到了它的工作,但thanx任何方式。 – LordSauron 2011-07-11 16:30:44