2

我创建了一个基于 MPXJ 库分发中的 MpxjCreate 示例的应用程序。我创建了几个任务,其中一些带有子任务,并使用Task.setStart()/Task.setFinish()来设置任务开始/完成日期。在我使用 编写结果文件后MSPDIWriter,可以在标签内的结果 xml 文件中看到以下<Task>标签:

<Start>2013-01-01T00:00:00</Start>
<Finish>2016-12-31T00:00:00</Finish>

但是当我使用 MS Project 2007 打开文件时,它似乎忽略了给定的值并使用标签中的<StartDate><Project>,这导致了一系列持续时间为 1 天的任务。

请告诉,在没有任何“智力”计算的情况下,应该如何使用<Task>-><Start>/<Finish>MS Project 任务开始/结束日期的标签值?

4

2 回答 2

1

自 2003 版以来,我一直在为 MS-Project XML 文件导入而苦苦挣扎。

现在我必须处理 MSP 2013 问题(为什么是 Microsoft?为什么它如此不可预测?)

在我看来,需要一些基本信息才能正确导入所需的值。

这是我所做的:

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()));

好吧,我相信这就足够了。

于 2015-12-14T13:35:00.613 回答
0

我有一个类似的问题,通过添加持续时间来解决setManualDuration(...)

显然,仅指定开始和结束是不够的,您还需要持续时间。

我不确定是否有必要,但我也指定setTaskMode(TaskMode.MANUALLY_SCHEDULED)

于 2013-11-05T12:48:55.040 回答