如何将工作流中的转换限制为仅在TFS中创建工作项的用户?

时间:2014-09-24 19:27:55

标签: visual-studio tfs tfs-workitem

这是一个更大限制的一部分,但是让我失望的部分是只允许创建工作项的用户(" System.CreatedBy"字段的值)将工作项转换为“已关闭”状态。 我知道如何使用" For"来限制转换。和"不"条款,但这些仅限于团体。我想将其限制为此工作项的特定创建者。 VALIDUSERS也仅限于团体(TFS或AD)。 谢谢你的帮助。

3 个答案:

答案 0 :(得分:8)

昨晚我找到了合适的解决方案。

此解决方案实际上完全符合我的需要,因为它允许我添加一个组作为免除规则,以便该组的成员,例如QA,以及创建者能够关闭工作项,而其他成员团队没有。

参考:here(网站存档链接)

参考:

  1. 创建ClosedByValidation字段并添加以下规则
  2. <FIELD name="Closed By Validation" refname="Demo.ClosedByValidation" type="String">
        <COPY from="currentuser" /> 
        <FROZEN not="[project]\Project Administrators"/> 
    </FIELD>
    
    1. 将以下规则添加到已关闭状态
    2. <STATE value="Closed"> 
         <FIELDS> 
            <FIELD refname="Demo.ClosedByValidation"> 
                <COPY from="currentuser" /> 
             </FIELD> 
         </FIELDS> 
      </STATE>
      
      1. 将ClosedByValidation字段添加到表单中,因此它看起来像这样。请注意我如何显示“创建者”字段和“ClosedByValidation”字段

      2. 工作原理

        • ClosedByValidation字段将“Created By”值复制到 本身就是在创建工作项时。
        • 然后立刻 冻结字段(使用FROZEN)规则,它规定它不能 更改。
          • 注意:FROZEN规则的条件是不适用于项目 管理员,给他们一个覆盖功能。
        • 什么时候上班 item已关闭,然后将当前用户复制到 ClosedByValidation字段。
        • 如果ClosedByValidation的值仍然存在 相同(原创作者)然后一切都很好。
        • 如果 ClosedByValidation的值已更改,然后显示FROZEN规则 您在上面的屏幕截图中看到的违规行为。

答案 1 :(得分:1)

这不可能是afaik。

  

然而,相反的想法可能是“Restrict a transition when currentUser is not same as CreatedBy”和“NOTSAMEAS”规则。 (我仍然不知道为什么MS没有实现“SAMEAS”规则

因此,由于没有“SAMEAS”规则,您无法使用xml修改。

顺便说一下,我希望我错了,但也无法中断工作项保存事件并取消它(如@MrHinsh建议的那样)。工作项保存事件只是一个通知事件而不是一个DecisionPoint事件,它也发生在工作项保存操作完成后,如名称所示(WorkItemChangedEvent)。

有关NotificationType的详细信息,请参阅here

答案 2 :(得分:0)

使用当前规则引擎无法进行此配置。

可能的替代方案:

  1. 创建一个服务器端事件处理程序,拦截thesave并根据您的自定义业务规则拒绝它
  2. 不......我刚刚出来......
  3. 应该注意的是,TFS并非设计为强制执行系统,而您的业务规则意味着组织实施功能失调。