其实这个也应该算作模板的一部分, 如果你对定义模板一点都不了解,建议先参看本人另一篇博客:【TFS】TFS中定义自己的工作项(WorkItems)模板
首先声明, 我这里所讲的所有内容仅是我个人的理解,由于我做的时候完全是自己琢磨的,非官方,大家仅作参考。
Ok, let's get started.
默认的模板中,Task 的状态只有 Active 和 Closed
这个往往不够用呀, 有木有! 下面我们要添加一个状态 -- Resolved 这样我们的工作流就多了一个节点变成 Active- >Resolved->Closed.
打开上次我们修改的那个模板, 不知道怎么做的, 参照 【TFS】TFS中定义自己的工作项(WorkItems)模板, 切换到WorkFlow(工作流)选项卡。
上图你看到的就是默认的工作流模板, 下面我给大家做一些介绍:
1)红色框, 很明显,就是工作流的各个节点,以及到这个状态需要做的动作。
2)蓝色框,我们通常定一些在状态转换过程中的约束条件, 或者做一些动作(例如给某些字段赋值)
3)根据箭头指向, 我们可以观察到 从Active 可以到Colsed 从Closed 可以到 Active
仅仅单看我的描述,大家肯定一点概念没有, 我们接下来用事实说话,大家自己理解。
工具箱篇:
用过VS 的都不陌生吧, so easy!State-> 红色框 Transition Link-> 蓝色框
工作流定义篇:
这里我打算按照需求来讲解。
1) 我们需要添加一个状态节点
拖一个红色框到工作区,双击 State1 文字, 改为 Resolved 然后调整一下各个节点的位置,结果如下:
2)我们需要按照Active- >Resolved->Closed 的顺序将各个节点了链接起来 ,而且允许Resolved- >Active
使用Transition Link 将各个节点按照需要链接起来,弄得时候注意一下箭头的指向,结果如下, 不一样的自己继续弄, 这里不详细讲这种布局类的东东
3) 状态的转换都会需要一个理由的,比如从Active->Resolved 我们的理由可以是Implemented, Postponed的之类的
双击Active->Resolved 的Transition (中间), 然后将选项卡切换到Reasons(原因)。New 两个原因, 结果如下图。
按照上图的操作,将Resolved->Active(左下) Resolved->Closed(下) 都添加上Reasons, 结果如下图
这个时候你应该可以保存了,保存之后新建一个Task, 就能看到我们自己定义的新的工作流节点了。
将 state 切换到 Resolved , 你会看到reason 的变化, 就是我们刚才定义的 Reasons。 保存之后再将State 改为Closed(Resolved->Closed) 再看看Reason 的变化,自己看我就不截图了。
到这里一个简单的工作流就定义好的, 但实际上我们需要的不仅仅是这个,有时候我们需要加约条件之类的。
4) 如何在状态切换的时候指定字段必填
比如 Active- >Resolved 的时候, Assigned To 要必填。 回到之前的设计工作区,双击Active-》Resolved 的Transition(中), 将弹出的页面切换到Fields 的选项卡, 然后点New
将 RefName(字段引用名) 选择为上图值, 紧接着上图界面,切换到Rules(规则)选项卡,点 New, 在弹出的 Select a rule type (选择一个规则类型) 的窗口中找到 REQUIRED(必填),
然后一路点 ok,
再点ok, 然后保存。然后我们来验证一下
重新打开刚才新建的Task, 将状态改为Active(因为我们刚才加的只是Active->Resolved 的), 保存, 然后将状态改为Resolved, 删除Assigned To字段的值(如果有)
当然我们还需要验证 Assigned To 是否是一个有效的Domain 用户, 你可以再添加一条 VALIDUSER 规则。总之,里面有很多规则, 自己慢慢找,慢慢看。
其他Transition的规则, 你们自己可按照同样的方法自己按需添加。
5)如何在从Resolved-> Active时将Assigned To 自动填充上之前操作从Active->Resolved 的人。
正常的思维肯定是先保存,之后再获取, 在这里也是同样的
所以首先我们要定义一个字段来来保存我们的值,不会的朋友请参照:【TFS】TFS中定义自己的工作项(WorkItems)模板。
到此,我假设你已经成功添加了一个 叫ResolvedBy 的字段
a) 保存值。给Active->Resolved 的Transition 添加一个字段,并添加如下规则(具体步骤参照 4) 如何在状态切换的时候指定字段必填)
b) 获取值。给从Resolved->Active的Transition 添加一个字段,并添加如下规则
自己拿之前的那个task验证。
以上就是这篇博客主要讲的内容了, 涵盖的东西不是很广,但我相信可以带你入门, 至于其他的功能,大家自己探索吧, 事实上我也在探索中。。。。。。
如果你有是什么新的发现, 可以给我留言, 谢谢。