我正在为我们的本地开发团队编写一个实用程序,用于将项目信息(故事,资源等)从我们的敏捷管理系统导出到Microsoft Project 2010,并使用MPXJ和C#来完成此任务。使用这些示例将代码放在一起以生成成功导入MS Project的MPX或MSPDI输出文件非常简单。但是......我们想要的格式是多层次的,如下所示:
Project -> TaskA -> TaskASubtask1
-> TaskASubtask2
-> TaskB -> TaskBSubtask1
-> TaskBSubtask2 -> TaskBSubSubtask1
当我以随机顺序天真地添加子任务时(输入流没有很好地排序),任务的WBS级别值看起来正确,但导入后的任务位于生成的文件中的前一个任务之下。 / p>
我已经读过正确订购文件是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";
这应该有用吗?或者我应该重新安排我的任务创建,以便每个层次结构完全填满所有?
我将继续玩它,但我欢迎任何见解。
谢谢, 欧文
答案 0 :(得分:2)
我有完全相同的问题。如果我在导出之前调用以下函数,则导出的XML文件将正确导入到MS Project 2010中:
projectFile.getTasks().synchronizeTaskIDToHierarchy();
(乔恩·伊尔内斯的回答是一个很好的提示,但并非100%正确,因为中间没有getTasks()
。)
答案 1 :(得分:0)
从记忆中,我想如果你打电话
file.synchronizeTaskIDToHierarchy();
添加完任务后,MS Project中的排序将正确无误。
从这个方法的Javadoc:
Microsoft Project基于其ID上显示的任务顺序 值。该方法采用任务的层次结构 在MPXJ中表示并重新编号ID值以确保这一点 结构在Microsoft Project中按预期显示。这是 通常用于处理分层任务的情况 结构已在MPXJ中以编程方式创建。