任务开始时间和完成时间

转自http://www.cnblogs.com/karoc/archive/2010/01/21/1653284.html

任务开始时间和完成时间

译自http://msdn.microsoft.com/en-us/library/bb648778.aspx

在Project的生命周期中,Project 2007使用复杂的计划引擎排定计划,引擎会自动计算一些字段的值,而不是让你手动指定。使用PSI进行开发的开发人员往往为此感到困惑。本篇文章为在Project计划引擎下如何处理任务的开始时间和结束时间的做了一些很好的实践。

TASK_START_DATE和TASK_FINISH_DATE属性都属于上述计算域。在ProjectDataSet对象中修改它们将会抛出运行时异常,表明两个字段是只读的,Project计划引擎将自动计算它们的值,而不允许开发人员通过Project Data Set修改它们。

许多因素可以影响的一个任务的开始时间和完成时间。

  • 为新建任务设定开始和结束时间

为新建任务设定开始和结束时间,并使用PSI保存后,在PWA查看,该任务的开始和结束时间不一定是在程序中设定的时间,而是和项目开始时间相同。这是因为计划引擎在排定日程时,发现没有影响该任务从项目开始时间开始的因素,所以自动修改了任务的开始时间,也重新计算了其完成时间。

  • 当存在任务依赖关系的情况

任务依赖是指在两个任务的开始、完成时间上建立的联系。具有依赖关系的两个任务互称为前置任务和后置任务。使用LINK_TYPE属性可以为任务设定4种类型的依赖关系,分别是FinishFinish(FF)、FinishStart(FS)、StartFinish(SF)和StartStart(SS)。FF指后置任务不能完成直到前置任务完成。FS指后置任务不能开始,直到前置任务完成,这是默认的依赖关系。SF指后置任务不能完成,直到前置任务开始。SS指后置任务不能开始,直到前置任务开始。

当使用编程的方法修改任务之间的依赖关系后,计划引擎将重新排定任务的起至时间。

还可以通过修改依赖关系的LINK_LAG属性,设定间隔时间,从而影响到后置任务的开始时间。

  • 使用任务约束(限制)

可以为任务的开始时间或结束时间设定限制条件,每个任务只能设定一个限制条件。如果对开始时间做了限定,则计划引擎将根据限制条件及其他信息自动计算完成时间,反之亦然。

可以通过任务的TASK_CONTSTAINT_TYPE属性为任务设定8种类型的限制条件,包括AsLateAsPossible(越晚越好)、AsSoonAsPossible(越早越好)、FinishNoEarlierThan(不早于...完成)、FinishNoLaterThan(不晚于...完成)、MustFinishOn(必须完成于...)、MustStartOn(必须开始于...)、StartNoEarlierThan(不早于...开始)、StartNoLaterThan(不晚于...开始)。

  • 理解任务类型、人工驱动(Effort-driven Scheduling)和资源分配

任务日程排定同样被任务类型、人工驱动和资源分配所影响。Project 2007中,有3种任务类型,它们是固定工期、固定工时、固定单位(默认)。Project 2007计算任务的工期、工时和人力时使用以下公式:工期=工时/人力。任务类型决定了公式中的哪个部分是固定的,而其他两个是计算的。使用任务的TASK_TYPE属性为任务设定类型。

默认情况下,Project使用固定单位和人工驱动排定日程,这意味着,当为一个任务增加或减少资源时,完成任务所需的工期将缩短或加长,但是总工时不变。可以通过修改任务属性TASK_IS_EFFORT_DRIVEN,以设定任务是否为人工驱动,也可以通过设置项目的PROJ_OPT_NEW_TASKS_ARE_EFFORT_DRIVEN属性,设定新任务是否为EFFORT_DRIVEN。

需要特别注意的时,当使用PSI修改任务资源时,任务的工期并不会自动重新计算,只有在Project Professional 2007中打开计划并手动重新分配资源时,任务工期才会改变。

另外,修改一个已分配资源的在此任务上的工作时间百分比,也会影响到任务的工期。可以通过修改属性ASSN_UNITS来设定改值。

  • 日历对日程的影响

日历的例外情况同样影响着任务的日程排定,项目日历、任务日历和资源日历都会影响到任务的开始和完成时间。

 

项目日历、任务日历、资源日历都是从标准日历这个模板派生出来的。标准日历定义了企业的标准工作时间和非工作时间。Project 2007自带的标准日历就定义了从周一到周五、每天的8:00到17:00、除去中午午餐时间作为工作时间。

Project 2007默认提供了3个标准日历,但是根据企业实际的配置,你不一定有权限访问这些日历。

 

项目日历定义了一个项目的工作和非工作日期和时间,作为项目下任务的默认日历。Project 2007使用项目日历去排定没有资源分配的任务的日程,或者类型为固定工期的任务的日程。可以通过指定CAL_UID属性的值,为项目指定标准日历。

 

任务默认使用项目日历,但是可以根据需要为其指定自己的日历。标准日历和任务通过TASK_CAL_UID属性建立关系,但是该属性是只读的,不能通过它为任务指定日历,需要在Project Professional 2007中进行操作。

 

资源日历为一个或一组资源定义了工作和非工作时间。可以通过设置TASK_IGNORES_RES_CAL属性让任务忽略资源日历。

 

Project计划引擎非常复杂,可影响任务开始完成时间的因素很多,以上只是常见的一部分。在Project Professional 2007中,如果想要了解任务排定原因,可以打开菜单里的项目->任务驱动因素来查看。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值