Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MS Project显示不正确的启动&;导入由MPXJ创建的MSPDI后的完成日期_Java_Mpxj - Fatal编程技术网

Java MS Project显示不正确的启动&;导入由MPXJ创建的MSPDI后的完成日期

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

我基于MPXJ库发行版中的MpxjCreate示例创建了一个应用程序。 我创建了几个任务,其中一些带有子任务,并使用
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示例吗?