【问题标题】:TFS Api not giving custom states in a customized Process Template on Dev AzureTFS Api 未在 Dev Azure 上的自定义流程模板中提供自定义状态
【发布时间】:2021-08-20 13:09:41
【问题描述】:

我在 Scrum 流程模板中添加了一个自定义状态,但在我基于该自定义流程模板创建一个新项目之前,API 不会提供新添加的状态。

每次我都必须创建项目作为解决此问题的解决方案。我可以做些什么来解决这个问题?

WorkItemStore workItemStore = this.tfsTeamProjectCollection.GetService<WorkItemStore>();

            int projectConunt = workItemStore.Projects.Count;

            for (int i = 0; i < projectConunt; i++)
            {
                WorkItemTypeCollection workItemTypeCollection = workItemStore.Projects[i].WorkItemTypes;

                for (int j = 0; j < workItemTypeCollection.Count; j++)
                {
                    string workitemType = workItemTypeCollection[j].Name;

                    for (int k = 0; k < workItemTypeCollection[j].FieldDefinitions.Count; k++)
                    {
                        Microsoft.TeamFoundation.WorkItemTracking.Client.FieldDefinition fieldDefinition =
                            workItemTypeCollection[j].FieldDefinitions[k];
                       
                        if (filedRefName == fieldDefinition.ReferenceName)
                        {
                            List<string> allowedValues = new List<string>();

                            foreach (var allowedValue in fieldDefinition.AllowedValues)
                            {
                                allowedValues.Add(allowedValue.ToString());
                            }

                            WorkItemFieldsInfo workItemFieldInfo = workItemFieldsInfo.Find(st => st.Type == workitemType);

                            if (workItemFieldInfo == null)
                            {
                                workItemFieldsInfo.Add(new WorkItemFieldsInfo()
                                {
                                    Type = workitemType,
                                    AllowedValues = allowedValues
                                });
                            }
                            else
                            {
                                List<string> unionFields = workItemFieldInfo.AllowedValues.Union(allowedValues).ToList();
                                workItemFieldInfo.AllowedValues = unionFields;
                            }

                            break;
                        }
                    }
                }
            }

【问题讨论】:

    标签: azure tfs azure-devops tfs-sdk


    【解决方案1】:

    我无法重现此问题。我在下面使用了rest api,它工作得很好。见here

    获取https://dev.azure.com/{organization}/_apis/work/processes/{processId}/workItemTypes/{witRefName}/states?api-version=6.1-preview.1

    您可以使用下面的 rest api 获取 processid

    获取https://dev.azure.com/{organization}/_apis/work/processes?api-version=6.1-preview.2

    【讨论】:

    • 我们使用的是 TFS api 而不是 REST api。
    • @ArsalanYounus 你能分享一下你用来获取状态的相关代码吗?
    • 我在我的问题中添加了代码,它可以从所有收集项目的所有工作项类型中找到所有允许的值。 “filedRefName”是“System.State”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    相关资源
    最近更新 更多