3

我正在尝试通过状态 Web 服务 (PSI) 更新作业的状态信息。问题是,结果不如预期。我将尝试详细解释我在做什么:

两种情况:

1) 资源分配存在于指定任务上。我想报告工作实际情况(更新状态)。

2) 没有指定任务的资源分配。我想创建分配并报告工作实际情况。

我的项目中有一项任务(自动计划,固定工作)。所有资源的资源可用性设置为 100%。他们都有相同的日历。

  • 名称:任务 31 - 固定工作
  • 持续时间:12,5 天?
  • 开始:星期四 14.03.13
  • 完成时间:周二 02.04.13
  • 资源名称:资源 1
  • 工作:100小时

首先,我使用以下 ChangeXML 执行 UpdateStatus

<Changes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Proj ID="a8a601ce-f3ab-4c01-97ce-fecdad2359d9">
    <Assn ID="d7273a28-c038-486b-b997-cdb2450ceef5" ResID="8a164257-7960-4b76-9506-ccd0efabdb72">
      <Change PID="251658250">900000</Change>
    </Assn>
  </Proj>
</Changes>

然后我调用了 SubmitStatusForResource

client.SubmitStatusForResource(new Guid("8a164257-7960-4b76-9506-ccd0efabdb72"), null, "auto submit PSIStatusingGateway");

审批中心弹出以下条目(正如我所料):

状态更新; 任务 31;任务更新;资源 1;2012 年 3 月 20 日;15小时;15%;85小时

项目中的更新(看起来仍然很好):

  • 任务名称:任务 31 - 固定工作
  • 持续时间:12,5 天?
  • 开始:星期四 14.03.13
  • 完成时间:周二 02.04.13
  • 资源名称:资源 1
  • 工作:100小时
  • 实际工作:15小时
  • 剩余工作:85 小时

然后执行第二种情况:首先我创建一个新任务......

client.CreateNewAssignmentWithWork(
                            sName: Task 31 - Fixed Work,
                            projGuid: "a8a601ce-f3ab-4c01-97ce-fecdad2359d9",
                            taskGuid: "024d7b61-858b-40bb-ade3-009d7d821b3f",
                            assnGuid: "e3451938-36a5-4df3-87b1-0eb4b25a1dab",
                            sumTaskGuid: Guid.Empty,
                            dtStart: 14.03.2013 08:00:00,
                            dtFinish: 02.04.2013 15:36:00,
                            actWork: 900000,
                            fMilestone: false,
                            fAddToTimesheet: false,
                            fSubmit: false,
                            sComment: "auto commit...");

然后我再次调用 UpdateStatus:

<Changes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Proj ID="a8a601ce-f3ab-4c01-97ce-fecdad2359d9">
    <Assn ID="e3451938-36a5-4df3-87b1-0eb4b25a1dab" ResID="c59ad8e2-7533-47bd-baa5-f5b03c3c43d6">
      <Change PID="251658250">900000</Change>
    </Assn>
  </Proj>
</Changes>

最后是 SubmitStatusForResource

client.SubmitStatusForResource(new Guid("c59ad8e2-7533-47bd-baa5-f5b03c3c43d6"), null, "auto submit PSIStatusingGateway");

这将在审批中心创建以下条目:

状态更新; 任务 31 - 固定工作;新的重新分配请求;资源 2;2012 年 3 月 20 日;15小时;100%;0h

我接受它并更新我的项目:

  • 名称:任务 31 - 固定工作
  • 持续时间:6,76 天?
  • 开始:星期四 14.03.13
  • 完成时间:周一 25.03.13
  • 资源名称:资源 1;资源 2
  • 工作:69,05 小时
  • 实际工作:30小时
  • 剩余工作:39,05 小时

而且我真的不明白,为什么新工作会是 69,05 小时。我预期的结果是:

  • 名称:任务 31 - 固定工作
  • 持续时间:6,76 天?
  • 开始:星期四 14.03.13
  • 完成时间:周一 25.03.13
  • 资源名称:资源 1;资源 2
  • 工作:65小时
  • 实际工作:30小时
  • 剩余工作:35 小时

我花了很多时间,试图找出如何更新值以获得我想要的结果。我真的很感激一些帮助。这让我想把头发扯掉!

提前致谢

PS:忘了说我正在使用 MS Project Server 2010 和 MS Project Professional 2010

4

0 回答 0