我正在尝试通过状态 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