Java MS Project显示不正确的启动&;导入由MPXJ创建的MSPDI后的完成日期
我基于MPXJ库发行版中的MpxjCreate示例创建了一个应用程序。 我创建了几个任务,其中一些带有子任务,并使用Java MS Project显示不正确的启动&;导入由MPXJ创建的MSPDI后的完成日期,java,mpxj,Java,Mpxj,我基于MPXJ库发行版中的MpxjCreate示例创建了一个应用程序。 我创建了几个任务,其中一些带有子任务,并使用task.setStart()/task.setFinish()设置任务开始/完成日期。 在我使用MSPDIWriter编写结果文件后,可以在标记内的结果xml文件中看到以下标记: <Start>2013-01-01T00:00:00</Start> <Finish>2016-12-31T00:00:00</Finish> 2013
task.setStart()
/task.setFinish()
设置任务开始/完成日期。
在我使用MSPDIWriter
编写结果文件后,可以在
标记内的结果xml文件中看到以下标记:
<Start>2013-01-01T00:00:00</Start>
<Finish>2016-12-31T00:00:00</Finish>
2013-01-01T00:00:00
2016-12-31T00:00:00
但当我使用MS Project 2007打开文件时,它似乎忽略了给定的值&使用了
标记中的
值,这会导致一系列持续时间为1天的任务
请告诉我,在没有任何“智能”计算的情况下,如何使用MS Project任务开始/结束日期的标记值?我有一个类似的问题,通过使用
设置手动持续时间(…)
添加持续时间解决了这个问题
显然,仅仅指定开始和结束是不够的,还需要持续时间
我不确定是否有必要,但我还指定了
setTaskMode(TaskMode.MANUALLY_SCHEDULED)
自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()));
task.setEstimated(false)//要除去持续时间值中的百分比
任务完成百分比(50d)//例如50%
任务完成百分比(50d);
task.setPhysicalPercentComplete(50d);
task.setStart();
task.setFinish();
task.setActualStart();
task.setActualFinish()//仅当任务为100%时才需要
task.setDuration(Duration.getInstance(4d,TimeUnit.DAYS))//例如4d
task.setActualDuration(Duration.getInstance(2d,TimeUnit.DAYS));
double remainingDuration=task.getDuration().getDuration()-task.getActualDuration().getDuration();
task.setRemainingDuration(Duration.getInstance(remainingDuration,task.getDuration().getUnits());
//如果任务已分配资源,则应设置工时值
//假设您有2个资源,每个资源分配3个单元
双重工作=task.getDuration().getDuration()*6;
task.setWork(Duration.getInstance(work,task.getDuration().getUnits());
任务。设置常规工作(工作);
double actualWork=work*task.getPercentageComplete()/100d;
task.setActualWork(Duration.getInstance(actualWork,task.getWork().getUnits());
剩余双倍=task.getWork().getDuration()-task.getActualWork().getDuration();
task.setRemainingWork(Duration.getInstance(剩余,task.getWork().getUnits());
好了,我相信这就足够了。您能分享一个您正在生成的XML示例吗?