【问题标题】:MPXJ export task order confuses MS Project 2010MPXJ 导出任务顺序混淆 MS Project 2010
【发布时间】:2020-08-31 19:57:05
【问题描述】:

我正在为我们的本地开发团队编写一个实用程序,用于将项目信息(故事、资源等)从我们的敏捷管理系统导出到 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 中预期的任务层次结构未呈现的相同行为。

这个简单的代码 sn-p 导致 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";

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

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

谢谢, 欧文

【问题讨论】:

    标签: c# mpxj


    【解决方案1】:

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

    projectFile.getTasks().synchronizeTaskIDToHierarchy();
    

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

    【讨论】:

      【解决方案2】:

      根据记忆,我想如果你打电话

      file.synchronizeTaskIDToHierarchy();
      

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

      来自此方法的 Javadoc:

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

      【讨论】:

      • 啊,这听起来正是我所缺少的(我认为一定有什么)。让我尝试一下我的简短示例。
      猜你喜欢
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 2014-07-27
      • 2018-04-26
      • 1970-01-01
      相关资源
      最近更新 更多