gpt4 book ai didi

azure-devops - 根据另一个字段或规则的值,揭开 Azure DevOps 中某个字段的允许值的神秘面纱?

转载 作者:行者123 更新时间:2023-12-01 03:05:54 26 4
gpt4 key购买 nike

创建工作项(例如 Azure DevOps 中的 Bug)时,您将在“原因”字段的下拉列表中看到的值取决于您为“状态”字段选择的值。例如请参阅这些屏幕截图(模板敏捷,无自定义)

allowed values based on State Field

然后,如果您更改状态,则允许的值会更改,如下所示

enter image description here

更令人困惑的是,这些只是记录的 REST API 返回的几个值

给定的 API 返回

 "defaultValue": null,
"allowedValues": [
"Verified",
"Not fixed",
"Test Failed",
"As Designed",
"Cannot Reproduce",
"Copied to Backlog",
"Deferred",
"Duplicate",
"Fixed and verified",
"Obsolete",
"Fixed",
"Investigation Complete",
"Approved",
"Investigate",
"Resolved in error",
"Reactivated",
"Regression",
"Build Failure",
"New"
],
"helpText": "The reason why the bug is in the current state",
"alwaysRequired": false,
"dependentFields": [
{
"referenceName": "System.State",
"name": "State",
"url": "https://dev.azure.com/nikhil/_apis/wit/fields/System.State"
},
{
"referenceName": "Microsoft.VSTS.Common.ResolvedReason",
"name": "Resolved Reason",
"url": "https://dev.azure.com/nikhil/_apis/wit/fields/Microsoft.VSTS.Common.ResolvedReason"
}
],
"referenceName": "System.Reason",
"name": "Reason",
"url": "https://dev.azure.com/{project}/{templateid}/_apis/wit/fields/System.Reason"
},

我试图找出正确的 API 或一组 API,以帮助揭开组合框中何时显示内容、何时将它们标记为只读以及何时让用户编辑它们的神秘面纱。

已解决原因 场更有趣。对于大多数部分,它似乎只是简单地从 Reason 字段中复制值,但是规则 API(见下文)并未指示这种行为。看起来规则 API 返回的内容与此字段表现出的行为不匹配。

这里的 REST API 中提到了一个规则的概念 - https://docs.microsoft.com/en-us/rest/api/azure/devops/processes/rules/get?view=azure-devops-rest-5.1#processrule

然而,这似乎没有给出根据另一个字段的值专门控制字段的“allowedValues”的规则,正如我上面所解释的。

题:
  • 是否有一个 API 可以为工作项类型的字段提供一套全面的规则,包括它们的 allowedValues?例如原因或已解决的原因字段取决于选择的状态字段,如上所示?
  • 最佳答案

    Is there an API that can give a comprehensive set of rules for fields on a work item types including their allowedValues? For e.g. the Reason or Resolved Reason field depending on the choice of State field as shown above?



    首先,我要说,不,没有这样的REST API 来获取 Reason值取决于 State提交选择。由于这些都没有记录在案,我们验证它的最佳方法是使用 Fiddler trace (Fiddler 可以记录 Web 应用程序和 Internet 之间的所有 Internet 数据)。

    [例如,这里我将使用 错误 工作项来表明这一点。]

    首先清除Fiddler中的所有记录=>在Azure Devops中打开Bug工作项=>在Fiddler中按F12开始记录数据。

    更改 Azure Devops 中的工作项状态( 注意:只是更改,不要保存它 。“保存”属于另一个操作)。然后去 Fiddler 查看它的互联网记录:

    enter image description here

    您会看到只有2个事件API,这些API仅用于发布 Action 标志而不是操作它。看第一个 的请求体发布 事件API:

    enter image description here

    可以看到刚才用来张贴的关于State字段的标志发生了变化。这就是为什么我说没有 API 可以获取 Reason值取决于 State选择归档,因为我们的开发团队没有使用带有 API 的脚本来实现这一点。

    现在,您应该非常困惑此操作消息将发送给谁?既然列出的Reason字段值不受api控制,那么谁来控制呢?

    答案是 XML 流程模板 .

    在 Azure Devops 中,WIT 都是由 XML 模板控制的。您可以找到所有规则,例如 Reason列出的字段值取决于 State字段已更改,从原因字段中复制值等。

    我上传了 Bug.xml流程模板放到我的github上,可以引用那个代码分析一下: Agile-process/Bug.xml .

    For the Reason field value listed depend on the State field changed.


      <FIELD name="Resolved Reason" refname="Microsoft.VSTS.Common.ResolvedReason" type="String" reportable="dimension">
    <ALLOWEDVALUES>
    <LISTITEM value="As Designed" />
    <LISTITEM value="Cannot Reproduce" />
    <LISTITEM value="Deferred" />
    <LISTITEM value="Duplicate" />
    <LISTITEM value="Fixed" />
    <LISTITEM value="Fixed and verified" />
    <LISTITEM value="Obsolete" />
    <LISTITEM value="Copied to Backlog" />
    </ALLOWEDVALUES>
    <HELPTEXT>The reason why the bug was resolved</HELPTEXT>
    </FIELD>

    这些是控制列出的已解决原因的 xml 代码。我相信你已经明白了它的逻辑。我们从 fiddler 得到的事件 API 消息是由相关的 WIT 获取的 *.xml .然后相应的操作将被触发并执行。

    enter image description here

    For copy the value from the Reason field.


        <TRANSITION from="New" to="Resolved">
    <ACTIONS>
    <ACTION value="Microsoft.VSTS.Actions.Checkin" />
    </ACTIONS>
    <REASONS>
    <DEFAULTREASON value="Fixed">
    <FIELDS>
    <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
    <COPY from="value" value="Fixed" />
    <ALLOWEDVALUES>
    <LISTITEM value="Fixed" />
    </ALLOWEDVALUES>
    </FIELD>
    </FIELDS>
    </DEFAULTREASON>
    <REASON value="Deferred">
    <FIELDS>
    <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
    <COPY from="value" value="Deferred" />
    <ALLOWEDVALUES>
    <LISTITEM value="Deferred" />
    </ALLOWEDVALUES>
    </FIELD>
    </FIELDS>
    </REASON>
    <REASON value="Duplicate">
    <FIELDS>
    <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
    <COPY from="value" value="Duplicate" />
    <ALLOWEDVALUES>
    <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>
    <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>
    <LISTITEM value="Cannot Reproduce" />
    </ALLOWEDVALUES>
    </FIELD>
    </FIELDS>
    </REASON>
    <REASON value="Obsolete">
    <FIELDS>
    <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
    <COPY from="value" value="Obsolete" />
    <ALLOWEDVALUES>
    <LISTITEM value="Obsolete" />
    </ALLOWEDVALUES>
    </FIELD>
    </FIELDS>
    </REASON>
    <REASON value="Copied to Backlog">
    <FIELDS>
    <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
    <COPY from="value" value="Copied to Backlog" />
    <ALLOWEDVALUES>
    <LISTITEM value="Copied to Backlog" />
    </ALLOWEDVALUES>
    </FIELD>
    </FIELDS>
    </REASON>
    </REASONS>
    <FIELDS>
    <FIELD refname="System.AssignedTo">
    <COPY from="field" field="System.CreatedBy" />
    </FIELD>
    <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
    <SERVERDEFAULT from="clock" />
    </FIELD>
    <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
    <COPY from="currentuser" />
    <VALIDUSER />
    <REQUIRED />
    </FIELD>
    <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
    <COPY from="currentuser" />
    <VALIDUSER />
    <REQUIRED />
    </FIELD>
    <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
    <SERVERDEFAULT from="clock" />
    </FIELD>
    </FIELDS>
    </TRANSITION>

    这只是一个简短的部分,其中介绍了来自 xml 的 Reason 字段中的复制值。 的文件错误 工作项。

    实际上,您可以从这些 XML 文件中找到 API 无法获取的所有流程规则( 注意 :我指的是默认流程规则)。如果你愿意,我可以在我的 github 中共享进程的完整 XML 文件。

    希望这可以帮助你更清楚:-)

    关于azure-devops - 根据另一个字段或规则的值,揭开 Azure DevOps 中某个字段的允许值的神秘面纱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57776707/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com