我基于MPXJ库分发的MpxjCreate样本创建了一个应用程序。
我创建了几个任务,其中一些有子任务,&使用Task.setStart()
/ Task.setFinish()
设置任务开始/结束日期。
在使用MSPDIWriter
编写生成的文件后,可以在<Task>
标记内的结果xml文件中看到以下标记:
<Start>2013-01-01T00:00:00</Start>
<Finish>2016-12-31T00:00:00</Finish>
但是当我使用MS Project 2007打开文件时,似乎忽略了给定的值&amp;使用<StartDate>
代码中的<Project>
值,这会导致一系列任务持续1天。
请告诉我,在没有任何“智能”计算的情况下,如何使用<Task>-><Start>/<Finish>
标记值来表示MS Project任务开始/结束日期?
答案 0 :(得分:1)
自2003版以来,我一直在努力使用MS-Project XML文件导入。
现在我必须处理MSP 2013问题(为何微软?为什么它如此难以预测?)
在我看来,需要一些基本信息才能正确导入所需的值。
以下是我的工作:
task.setEstimated(false); //to get rid of the percentage in the duration value
task.setPercentageComplete(50d); //50% for example
task.setPercentageWorkComplete(50d);
task.setPhysicalPercentComplete(50d);
task.setStart(<start date>);
task.setFinish(<finish date>);
task.setActualStart(<actual start date>);
task.setActualFinish(<actual finish date>); //only necessary if the task is 100%
task.setDuration(Duration.getInstance(4d, TimeUnit.DAYS)); //4d for example
task.setActualDuration(Duration.getInstance(2d, TimeUnit.DAYS));
double remainingDuration = task.getDuration().getDuration() - task.getActualDuration().getDuration();
task.setRemainingDuration(Duration.getInstance(remainingDuration, task.getDuration().getUnits()));
//if your task has resources assigned, you should set the work values
//suppose you have 2 resources assigned with 3 units each
double work = task.getDuration().getDuration() * 6;
task.setWork(Duration.getInstance(work, task.getDuration().getUnits()));
task.setRegularWork(work);
double actualWork = work * task.getPercentageComplete() / 100d;
task.setActualWork(Duration.getInstance(actualWork, task.getWork().getUnits()));
double remaining = task.getWork().getDuration() - task.getActualWork().getDuration();
task.setRemainingWork(Duration.getInstance(remaining, task.getWork().getUnits()));
嗯,我相信这已经足够了。
答案 1 :(得分:0)
我遇到了类似的问题,可以通过setManualDuration(...)
添加持续时间来解决。
显然,仅指定开始和结束还不够,还需要持续时间。
我不确定是否有必要,但我也指定setTaskMode(TaskMode.MANUALLY_SCHEDULED)