0

我正在为我们的本地开发团队编写一个实用程序,用于将项目信息(故事、资源等)从我们的敏捷管理系统导出到 Microsoft Project 2010,并使用 MPXJ 和 C# 来完成此任务。使用示例将代码组合在一起以生成成功导入 MS Project 的 MPX 或 MSPDI 输出文件非常简单。然而......我们想要的格式是多层次的,像这样:

Project -> TaskA -> TaskASubtask1
                 -> TaskASubtask2
        -> TaskB -> TaskBSubtask1
                 -> TaskBSubtask2 -> TaskBSubSubtask1

当我天真地以随机顺序添加子任务时(输入流没有很好地排序),任务的 WBS 级别值看起来正确,但导入后的任务位于生成文件中的前一个任务下。

我读过正确排序文件是 4.3.0 中修复的错误(我记得)所以我认为我不需要以“正确”顺序添加任务。我发现,如果我使用 MpxCreate.cs 示例并将任务创建“乱序”移动,我会看到与您在 MS Project 中预期的任务层次结构未呈现的相同行为。

这个简单的代码片段导致 MS Project 中出现“乱序演示”(第二个子任务嵌套在下一个任务下):

Task task1 = file.AddTask();
task1.Name = "Summary Task";

Task task2 = task1.AddTask();
task2.Name = "First Sub Task";

Task task4 = file.AddTask();
task4.Name = "Next Task";

Task task3 = task1.AddTask();
task3.Name = "Second Sub Task";

这应该工作吗?或者我应该重新排序我的任务创建,以便一次完全填充每个层次结构?

我将继续使用它,但我欢迎任何见解。

谢谢,欧文

4

2 回答 2

2

我有同样的问题。如果我在导出之前调用以下函数,则导出的 XML 文件将正确导入到 MS Project 2010:

projectFile.getTasks().synchronizeTaskIDToHierarchy();

(Jon Ilnes 的回答是一个很好的提示,但不是 100% 正确,因为getTasks()中间缺少 。)

于 2020-08-31T11:57:05.243 回答
0

从记忆中,我想如果你打电话

file.synchronizeTaskIDToHierarchy();

添加任务后,MS Project 中的排序将正确无误。

来自此方法的 Javadoc:

Microsoft Project 根据其 ID 值显示任务的顺序。此方法采用 MPXJ 中表示的任务的层次结构并重新编号 ID 值以确保此结构在 Microsoft Project 中按预期显示。这通常用于处理在 MPXJ 中以编程方式创建分层任务结构的情况。

于 2014-01-30T15:39:42.927 回答