转自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. easyui日期处理(开始时间和结束时间)

    easyui日期处理(开始时间和结束时间): <tr><td class="bis_pxzs_form_id_table_td">发证日期:</td& ...

  2. java方法,返回两个日期内的所有date集合,根据开始时间、结束时间得到两个时间段内所有的日期...

    在最近的项目中,有这么一个需求,根据开始时间.结束时间得到两个时间段内所有的日期,以下分享我的代码给大家. 1.以下的这个方法适用于jdk1.5以上的版本 /** * 根据开始时间和结束时间返回时间段 ...

  3. oracle 时间小于,jquery easyui 对于开始时间小于结束时间的判断示例

    对于开始时间小于结束时间的判断可以参考,jquery easyui里的ValidateBox进行判断 好吧!直接上代码 查看内容:按时间: 至 var varify;//用于查询验证,验证开始时间是否 ...

  4. 数据库中包含开始时间、结束时间,并且查询条件也有开始时间、结束时间的查询方法...

    分类: oracle学习 数据库 例:考试表中有两个字段:startDate.endDate,分别代表考试开始时间.结束时间.现在需要查询某一时间段内正在进行的考试,实际只要满足考试的时间段和查询条件 ...

  5. js获取下月时间_JS获取上月,本月,下月的开始时间与结束时间

    ``###JS获取上月,本月,下月的开始时间与结束时间(记录) //获取当天的时间 function getToday() { var date = new Date(); return date . ...

  6. 更改hadoop集群yarn的webui中的开始时间和结束时间为本地时间

    yarn集群的webui地址为:http://rm:8088 执行任务后,任务的开始时间和结束时间都是utc时间,查看很不方便. 查找相关资料发现hadoop有补丁包,补丁地址:https://iss ...

  7. 获取某一年指定自然周的开始时间和结束时间

    获取某一年指定自然周的开始时间和结束时间 package com.playmath.playmathcrm.util; import java.text.ParseException; import ...

  8. Java 某天的开始时间与结束时间

    需求中遇到"有效期"的时候就可能要用到一天的开始时间跟结束时间. 比如说:价格优惠活动,一件商品打折优惠期间是2016-11-18到2016-11-30,那么我们数据库存入的时间就 ...

  9. Java 输出执行开始时间,结束时间和运行时间

    long start,end; start = System.currentTimeMillis(); end = System.currentTimeMillis(); System.out.pri ...

  10. java获取一年的周数、单周开始时间与结束时间、一年所有周开始时间与结束时间、月开始时间与结束时间

    java获取一年的周数.单周开始时间与结束时间.一年所有周开始时间与结束时间.月开始时间与结束时间 package com.frgk.produce.util;import org.springfra ...

最新文章

  1. BZOJ 1590.Secret Message 秘密信息(Trie树) [Usaco2008 Dec]【BZOJ计划】
  2. 思科2950配置端口镜像
  3. golang中的strings.ToTitle
  4. 【三分+枚举】LNOI2017 d1t1 期末考试
  5. ZYNQ 调试遇到的问题
  6. 行星轨迹制作_FLASH做的八大行星的轨道图的教学
  7. mysql数据库,创建只读用户
  8. Python爬虫之旅_(数据解析)_正则
  9. 可视化计算java_Java可视化计算器
  10. hivesql修改字段类型_Hive SQL语法总结
  11. EMQX源码阅读笔记
  12. git回滚到之前代码
  13. My.WinformMvc,一个 Winform MVC 框架
  14. Nginx源码分析 - 基础数据结构篇 - hash表结构 ngx_hash.c(07)
  15. Java 实现Gbase数据库增删改查功能2
  16. linux统计某种文件大小命令,linux下对符合条件的文件大小做汇总统计的简单命令...
  17. 《教程》使用STLINK烧录STM32程序
  18. html 自动触发 事件,html中自动触发事件
  19. Leetcode 1144
  20. yocto FILES_${PN}

热门文章

  1. python 语言属于_python语言属于以下哪种语言?
  2. 如何对长期出差的员工进行“人文关怀”,前提是差旅标准仍然很抠?
  3. android 高德地图设置不能旋转_高德地图行车记录仪AR导航怎么设置使用教程
  4. 微信开发:springboot接入微信公众号
  5. 推荐系统详解(三)近邻推荐
  6. video.js播放rtmp视频
  7. 个人电子邮箱如何在网页进行登录?
  8. 删除了windows系统的EFI分区导致无法开机的解决方法
  9. 键盘 Fn 键 的锁定与解锁
  10. 阿里推送 NodeJS 给iOS及ANDROID 发推送。