我们最近安装了TFS 2010,并通过利用Scrum模板以敏捷方式使用它。我们很好奇是否有办法在TFS中跟踪任务截止日期,这样我们就可以通过查看截止日期为和/或今天的任务来轻松运行我们的每日scrums。
答案 0 :(得分:4)
没有截止日期字段,因为在Scrum方法中不需要此类信息。所有sprint相关任务(sprint backlog项目)都有sprint结束的截止日期。所有用户故事(产品积压项目)都没有截止日期,因为这是由业务优先级和团队容量驱动=>到期日可以改变每个冲刺。
答案 1 :(得分:1)
绝对可以没有任何外部插件或扩展。 详细了解流程here。
我为TFS 2012服务器做了同样的事情,同样可以为TFS 2010服务器做同样的事情。
我没有修改现有的Task或Bug,而是使用此命令添加了一个名为Defect的新工作项类型,其中包含两个属性
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE>witadmin importwitd /collection:myTFSserver/TFS_DefaultCollection /p:MyProjectName /f:D:\Defect.xml
Defect.xml:
<?xml version="1.0" encoding="utf-8"?>
<witd:WITD application="Work item type editor" version="1.0" xmlns:witd="http://schemas.microsoft.com/VisualStudio/2008/workitemtracking/typedef">
<WORKITEMTYPE name="Defect">
<DESCRIPTION>Task bug or Issue</DESCRIPTION>
<FIELDS>
<FIELD name="Iteration Path" refname="System.IterationPath" type="TreePath" reportable="dimension">
<HELPTEXT>The iteration within which this issue will be fixed</HELPTEXT>
</FIELD>
<FIELD name="Iteration ID" refname="System.IterationId" type="Integer" />
<FIELD name="External Link Count" refname="System.ExternalLinkCount" type="Integer" />
<FIELD name="Team Project" refname="System.TeamProject" type="String" reportable="dimension" />
<FIELD name="Hyperlink Count" refname="System.HyperLinkCount" type="Integer" />
<FIELD name="Attached File Count" refname="System.AttachedFileCount" type="Integer" />
<FIELD name="Node Name" refname="System.NodeName" type="String" />
<FIELD name="Area Path" refname="System.AreaPath" type="TreePath" reportable="dimension">
<HELPTEXT>The area of the product with which this issue is associated</HELPTEXT>
</FIELD>
<FIELD name="Revised Date" refname="System.RevisedDate" type="DateTime" reportable="detail" />
<FIELD name="Changed Date" refname="System.ChangedDate" type="DateTime" reportable="dimension" />
<FIELD name="ID" refname="System.Id" type="Integer" reportable="dimension" />
<FIELD name="Area ID" refname="System.AreaId" type="Integer" />
<FIELD name="Authorized As" refname="System.AuthorizedAs" type="String" syncnamechanges="true" />
<FIELD name="Title" refname="System.Title" type="String" reportable="dimension">
<HELPTEXT>The nature of the problem and why it is affecting or could affect the project</HELPTEXT>
<REQUIRED />
</FIELD>
<FIELD name="State" refname="System.State" type="String" reportable="dimension">
<HELPTEXT>Change to Closed when the issue is resolved or not relevant anymore</HELPTEXT>
</FIELD>
<FIELD name="Authorized Date" refname="System.AuthorizedDate" type="DateTime" />
<FIELD name="Watermark" refname="System.Watermark" type="Integer" />
<FIELD name="Rev" refname="System.Rev" type="Integer" reportable="dimension" />
<FIELD name="Changed By" refname="System.ChangedBy" type="String" syncnamechanges="true" reportable="dimension">
<ALLOWEXISTINGVALUE />
<VALIDUSER />
</FIELD>
<FIELD name="Reason" refname="System.Reason" type="String" reportable="dimension">
<HELPTEXT>The reason why the issue is in the current state</HELPTEXT>
</FIELD>
<FIELD name="Assigned To" refname="System.AssignedTo" type="String" syncnamechanges="true" reportable="dimension">
<HELPTEXT>The person currently working on this issue</HELPTEXT>
<ALLOWEXISTINGVALUE />
<VALIDUSER />
</FIELD>
<FIELD name="Work Item Type" refname="System.WorkItemType" type="String" reportable="dimension" />
<FIELD name="Created Date" refname="System.CreatedDate" type="DateTime" reportable="dimension" />
<FIELD name="Created By" refname="System.CreatedBy" type="String" syncnamechanges="true" reportable="dimension" />
<FIELD name="Description" refname="System.Description" type="HTML">
<HELPTEXT>Problem, resolution plan and status</HELPTEXT>
</FIELD>
<FIELD name="History" refname="System.History" type="History">
<HELPTEXT>Discussion thread plus automatic record of changes</HELPTEXT>
</FIELD>
<FIELD name="Related Link Count" refname="System.RelatedLinkCount" type="Integer" />
<FIELD name="Tags" refname="System.Tags" type="PlainText" />
<FIELD name="System Info" refname="Microsoft.VSTS.TCM.SystemInfo" type="HTML">
<HELPTEXT>Test context, provided automatically by test infrastructure</HELPTEXT>
</FIELD>
<FIELD name="Repro Steps" refname="Microsoft.VSTS.TCM.ReproSteps" type="HTML">
<HELPTEXT>How to see the bug. End by contrasting expected with actual behavior.</HELPTEXT>
</FIELD>
<FIELD name="State Change Date" refname="Microsoft.VSTS.Common.StateChangeDate" type="DateTime">
<WHENCHANGED field="System.State">
<SERVERDEFAULT from="clock" />
</WHENCHANGED>
<WHENNOTCHANGED field="System.State">
<READONLY />
</WHENNOTCHANGED>
</FIELD>
<FIELD name="Activated Date" refname="Microsoft.VSTS.Common.ActivatedDate" type="DateTime" reportable="dimension">
<WHENNOTCHANGED field="System.State">
<READONLY />
</WHENNOTCHANGED>
</FIELD>
<FIELD name="Activated By" refname="Microsoft.VSTS.Common.ActivatedBy" type="String" syncnamechanges="true" reportable="dimension">
<WHENNOTCHANGED field="System.State">
<ALLOWEXISTINGVALUE />
<READONLY />
</WHENNOTCHANGED>
</FIELD>
<FIELD name="Resolved Date" refname="Microsoft.VSTS.Common.ResolvedDate" type="DateTime" reportable="dimension">
<WHENNOTCHANGED field="System.State">
<READONLY />
</WHENNOTCHANGED>
</FIELD>
<FIELD name="Resolved By" refname="Microsoft.VSTS.Common.ResolvedBy" type="String" syncnamechanges="true" reportable="dimension">
<WHENNOTCHANGED field="System.State">
<ALLOWEXISTINGVALUE />
<READONLY />
</WHENNOTCHANGED>
</FIELD>
<FIELD name="Resolved Reason" refname="Microsoft.VSTS.Common.ResolvedReason" type="String" reportable="dimension">
<HELPTEXT>The reason why the bug was resolved</HELPTEXT>
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="As Designed" />
<LISTITEM value="Cannot Reproduce" />
<LISTITEM value="Deferred" />
<LISTITEM value="Duplicate" />
<LISTITEM value="Fixed" />
<LISTITEM value="Obsolete" />
</ALLOWEDVALUES>
<FROZEN />
</FIELD>
<FIELD name="Closed Date" refname="Microsoft.VSTS.Common.ClosedDate" type="DateTime" reportable="dimension">
<WHENNOTCHANGED field="System.State">
<READONLY />
</WHENNOTCHANGED>
</FIELD>
<FIELD name="Closed By" refname="Microsoft.VSTS.Common.ClosedBy" type="String" syncnamechanges="true" reportable="dimension">
<WHENNOTCHANGED field="System.State">
<ALLOWEXISTINGVALUE />
<READONLY />
</WHENNOTCHANGED>
</FIELD>
<FIELD name="Priority" refname="Microsoft.VSTS.Common.Priority" type="Integer" reportable="dimension">
<HELPTEXT>Business importance. 1=must fix; 4=unimportant.</HELPTEXT>
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="1" />
<LISTITEM value="2" />
<LISTITEM value="3" />
<LISTITEM value="4" />
</ALLOWEDVALUES>
<DEFAULT from="value" value="2" />
</FIELD>
<FIELD name="Severity" refname="Microsoft.VSTS.Common.Severity" type="String" reportable="dimension">
<HELPTEXT>Assessment of the effect of the bug on the project</HELPTEXT>
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="1 - Critical" />
<LISTITEM value="2 - High" />
<LISTITEM value="3 - Medium" />
<LISTITEM value="4 - Low" />
</ALLOWEDVALUES>
<DEFAULT from="value" value="3 - Medium" />
</FIELD>
<FIELD name="Stack Rank" refname="Microsoft.VSTS.Common.StackRank" type="Double" reportable="dimension">
<HELPTEXT>Work first on items with lower-valued stack rank. Set in triage.</HELPTEXT>
</FIELD>
<FIELD name="Integration Build" refname="Microsoft.VSTS.Build.IntegrationBuild" type="String" reportable="dimension">
<HELPTEXT>The build in which the bug was fixed</HELPTEXT>
<SUGGESTEDVALUES expanditems="true">
<LISTITEM value="<None>" />
</SUGGESTEDVALUES>
</FIELD>
<FIELD name="Due Date" refname="Microsoft.VSTS.Scheduling.DueDate" type="DateTime" reportable="dimension">
<HELPTEXT>The date by which this issue needs to be closed</HELPTEXT>
</FIELD>
<FIELD name="Found In" refname="Microsoft.VSTS.Build.FoundIn" type="String" reportable="dimension">
<HELPTEXT>The build in which the bug was found</HELPTEXT>
<SUGGESTEDVALUES expanditems="true">
<LISTITEM value="<None>" />
</SUGGESTEDVALUES>
</FIELD>
<FIELD name="Activity" refname="Microsoft.VSTS.Common.Activity" type="String" reportable="dimension">
<HELPTEXT>Type of work involved</HELPTEXT>
<SUGGESTEDVALUES expanditems="true">
<LISTITEM value="Development" />
<LISTITEM value="Testing" />
<LISTITEM value="Requirements" />
<LISTITEM value="Design" />
<LISTITEM value="Deployment" />
<LISTITEM value="Documentation" />
</SUGGESTEDVALUES>
</FIELD>
<FIELD name="Remaining Work" refname="Microsoft.VSTS.Scheduling.RemainingWork" type="Double" reportable="measure" formula="sum">
<HELPTEXT>An estimate of the number of units of work remaining to complete this task</HELPTEXT>
</FIELD>
<FIELD name="Original Estimate" refname="Microsoft.VSTS.Scheduling.OriginalEstimate" type="Double" reportable="measure" formula="sum">
<HELPTEXT>Initial value for Remaining Work - set once, when work begins</HELPTEXT>
</FIELD>
<FIELD name="Completed Work" refname="Microsoft.VSTS.Scheduling.CompletedWork" type="Double" reportable="measure" formula="sum">
<HELPTEXT>The number of units of work that have been spent on this task</HELPTEXT>
</FIELD>
<FIELD name="Start Date" refname="Microsoft.VSTS.Scheduling.StartDate" type="DateTime" reportable="dimension">
<HELPTEXT>The date to start the task</HELPTEXT>
</FIELD>
<FIELD name="Finish Date" refname="Microsoft.VSTS.Scheduling.FinishDate" type="DateTime" reportable="dimension">
<HELPTEXT>The date to finish the task</HELPTEXT>
</FIELD>
</FIELDS>
<WORKFLOW>
<STATES>
<STATE value="Active">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
<ALLOWEXISTINGVALUE />
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedBy">
<ALLOWEXISTINGVALUE />
<EMPTY />
</FIELD>
</FIELDS>
</STATE>
<STATE value="Resolved">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedBy">
<ALLOWEXISTINGVALUE />
<EMPTY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
<REQUIRED />
</FIELD>
</FIELDS>
</STATE>
<STATE value="Closed">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
<READONLY />
</FIELD>
</FIELDS>
</STATE>
</STATES>
<TRANSITIONS>
<TRANSITION from="" to="Active">
<REASONS>
<DEFAULTREASON value="New" />
</REASONS>
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
<ALLOWEXISTINGVALUE />
<COPY from="currentuser" />
<VALIDUSER />
<REQUIRED />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
<SERVERDEFAULT from="clock" />
</FIELD>
<FIELD refname="System.AssignedTo">
<DEFAULT from="currentuser" />
</FIELD>
</FIELDS>
</TRANSITION>
<TRANSITION from="Active" to="Resolved">
<REASONS>
<DEFAULTREASON value="Completed" />
<REASON value="Fixed">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
<COPY from="value" value="Fixed" />
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="Fixed" />
</ALLOWEDVALUES>
</FIELD>
</FIELDS>
</REASON>
<REASON value="Deferred">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
<COPY from="value" value="Deferred" />
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="Deferred" />
</ALLOWEDVALUES>
</FIELD>
</FIELDS>
</REASON>
<REASON value="Duplicate">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
<COPY from="value" value="Duplicate" />
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="Duplicate" />
</ALLOWEDVALUES>
</FIELD>
</FIELDS>
</REASON>
<REASON value="As Designed">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
<COPY from="value" value="As Designed" />
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="As Designed" />
</ALLOWEDVALUES>
</FIELD>
</FIELDS>
</REASON>
<REASON value="Cannot Reproduce">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
<COPY from="value" value="Cannot Reproduce" />
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="Cannot Reproduce" />
</ALLOWEDVALUES>
</FIELD>
</FIELDS>
</REASON>
<REASON value="Cut" />
<REASON value="Obsolete">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
<COPY from="value" value="Obsolete" />
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="Obsolete" />
</ALLOWEDVALUES>
</FIELD>
</FIELDS>
</REASON>
</REASONS>
<FIELDS>
<FIELD refname="System.AssignedTo">
<COPY from="field" field="System.CreatedBy" />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
<READONLY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
<ALLOWEXISTINGVALUE />
<READONLY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
<ALLOWEXISTINGVALUE />
<COPY from="currentuser" />
<VALIDUSER />
<REQUIRED />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
<SERVERDEFAULT from="clock" />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
<COPY from="value" value="Fixed" />
</FIELD>
</FIELDS>
<ACTIONS>
<ACTION value="Microsoft.VSTS.Actions.Checkin" />
</ACTIONS>
</TRANSITION>
<TRANSITION from="Resolved" to="Closed">
<REASONS>
<DEFAULTREASON value="Issue Resolved" />
</REASONS>
<FIELDS>
<FIELD refname="System.AssignedTo">
<COPY from="field" field="System.CreatedBy" />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
<READONLY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
<ALLOWEXISTINGVALUE />
<READONLY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedBy">
<ALLOWEXISTINGVALUE />
<COPY from="currentuser" />
<VALIDUSER />
<REQUIRED />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<SERVERDEFAULT from="clock" />
</FIELD>
</FIELDS>
<ACTIONS>
<ACTION value="Microsoft.VSTS.Actions.Checkin" />
</ACTIONS>
</TRANSITION>
<TRANSITION from="Closed" to="Active">
<REASONS>
<DEFAULTREASON value="Reactivated" />
</REASONS>
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
<ALLOWEXISTINGVALUE />
<COPY from="currentuser" />
<VALIDUSER />
<REQUIRED />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
<SERVERDEFAULT from="clock" />
</FIELD>
<FIELD refname="System.AssignedTo">
<COPY from="field" field="Microsoft.VSTS.Common.ClosedBy" />
</FIELD>
</FIELDS>
</TRANSITION>
</TRANSITIONS>
</WORKFLOW>
<FORM>
<Layout>
<Group>
<Column PercentWidth="100">
<Control FieldName="System.Title" Type="FieldControl" Label="&Title:" LabelPosition="Left" />
</Column>
</Group>
<Group>
<Column PercentWidth="50">
<Group Label="Status">
<Column PercentWidth="100">
<Control FieldName="System.AssignedTo" Type="FieldControl" Label="Assi&gned To:" LabelPosition="Left" />
<Control FieldName="System.State" Type="FieldControl" Label="&State:" LabelPosition="Left" />
<Control FieldName="System.Reason" Type="FieldControl" Label="&Reason:" LabelPosition="Left" />
</Column>
</Group>
</Column>
<Column PercentWidth="50">
<Group Label="Classification">
<Column PercentWidth="100">
<Control FieldName="System.AreaPath" Type="WorkItemClassificationControl" Label="&Area:" LabelPosition="Left" />
<Control FieldName="System.IterationPath" Type="WorkItemClassificationControl" Label="Ite&ration:" LabelPosition="Left" />
</Column>
</Group>
</Column>
</Group>
<Group>
<Column PercentWidth="100">
<Group Label="Planning">
<Column PercentWidth="25">
<Control FieldName="Microsoft.VSTS.Common.StackRank" Type="FieldControl" Label="Stack Ran&k:" LabelPosition="Left" NumberFormat="DecimalNumbers" MaxLength="10" />
</Column>
<Column PercentWidth="25">
<Control FieldName="Microsoft.VSTS.Common.Priority" Type="FieldControl" Label="&Priority:" LabelPosition="Left" />
</Column>
<Column PercentWidth="25">
<Control FieldName="Microsoft.VSTS.Scheduling.DueDate" Type="DateTimeControl" Label="D&ue Date:" LabelPosition="Left" Format="Short" />
</Column>
<Column PercentWidth="25">
<Control FieldName="Microsoft.VSTS.Scheduling.OriginalEstimate" Type="FieldControl" Label="Effort:" LabelPosition="Left" />
</Column>
</Group>
</Column>
</Group>
<TabGroup>
<Tab Label="Details">
<Group>
<Column PercentWidth="50">
<Control FieldName="System.Description" Type="HtmlFieldControl" Label="&Description:" LabelPosition="Top" Dock="Fill" />
</Column>
<Column PercentWidth="50">
<Control FieldName="System.History" Type="WorkItemLogControl" Label="&History:" LabelPosition="Top" Dock="Fill" />
</Column>
</Group>
</Tab>
<Tab Label="Links">
<Control Type="LinksControl" Name="IssueLinks" LabelPosition="Top">
<LinksControlOptions>
<LinkColumns>
<LinkColumn RefName="System.ID" />
<LinkColumn RefName="System.WorkItemType" />
<LinkColumn RefName="System.Title" />
<LinkColumn RefName="System.AssignedTo" />
<LinkColumn RefName="System.State" />
<LinkColumn LinkAttribute="System.Links.Comment" />
</LinkColumns>
<WorkItemLinkFilters FilterType="includeAll" />
<ExternalLinkFilters FilterType="includeAll" />
<WorkItemTypeFilters FilterType="includeAll" />
</LinksControlOptions>
</Control>
</Tab>
<Tab Label="Attachments">
<Control Type="AttachmentsControl" LabelPosition="Top" />
</Tab>
</TabGroup>
</Layout>
</FORM>
</WORKITEMTYPE>
</witd:WITD>
答案 2 :(得分:0)
Scrum模板不包含Task WIT上的“截止日期”字段。您可以通过以下步骤轻松添加一个:http://msdn.microsoft.com/en-us/library/ms243782.aspx。
模板附带的Work in Progress查询应该为您提供类似的功能,您可以运行该查询并仅跟踪正在进行的工作。
答案 3 :(得分:0)
如果您的目标是仅通过查看任务轻松运行每日scrums,我建议您使用带有TFS Web Access的任务板。看看Urban Turtle - http://urbanturtle.com。据微软称,这是TFS首屈一指的Scrum工具。
披露:我与Urban Turtle团队合作。所以不要接受我的话。相反,请阅读微软博客关于Urban Turtle的内容。 http://blogs.msdn.com/search/SearchResults.aspx?q=urban%20turtle§ions=3652
答案 4 :(得分:0)
不可能开箱即用,但有一个TFS扩展可以通过允许您设置一些规则来实现这一点,如果违反了新的延迟工作项将被创建,您可以订阅在规则被违反时得到通知,它可以在任何类型的工作项目上设置
请检查: