API TFS — есть ли способ получить список переходов для типа рабочего элемента?

Я пытаюсь перейти из состояния «А» в состояние «Х».

Есть переходы, которые мешают мне просто перейти к X.

Я могу экспортировать WorkItemType как XML и работать над этим, но прежде чем я это сделаю, я подумал, что хотел бы спросить, есть ли способ получить переходы через API.


person Vaccano    schedule 04.02.2010    source источник


Ответы (1)


Тааак.....

Не многим нужны переходы для WorkItemTypes.

Ну, мне это было нужно, поэтому я написал метод для этого. Вот это на случай, если кому-то это когда-нибудь понадобится:

// Hold a list of all the transistions we have done.  This will help us not have run them again If we already have.
private static Dictionary<WorkItemType, List<Transition>> _allTransistions = new Dictionary<WorkItemType, List<Transition>>();

/// <summary>
/// Get the transitions for this <see cref="WorkItemType"/>
/// </summary>
/// <param name="workItemType"></param>
/// <returns></returns>
private static List<Transition> GetTransistions(this WorkItemType workItemType)
{
    List<Transition> currentTransistions;

    // See if this WorkItemType has already had it's transistions figured out.
    _allTransistions.TryGetValue(workItemType, out currentTransistions);
    if (currentTransistions != null)
        return currentTransistions;

    // Get this worktype type as xml
    XmlDocument workItemTypeXml = workItemType.Export(false);

    // Create a dictionary to allow us to look up the "to" state using a "from" state.
    var newTransistions = new List<Transition>();

    // get the transistions node.
    XmlNodeList transitionsList = workItemTypeXml.GetElementsByTagName("TRANSITIONS");

    // As there is only one transistions item we can just get the first
    XmlNode transitions = transitionsList[0];

    // Iterate all the transitions
    foreach (XmlNode transition in transitions)
    {
        // save off the transistion 
        newTransistions.Add(new Transition
                                {
                                    From = transition.Attributes["from"].Value,
                                    To = transition.Attributes["to"].Value
                                });

    }

    // Save off this transition so we don't do it again if it is needed.
    _allTransistions.Add(workItemType, newTransistions);

    return newTransistions;
}

public class Transition
{
    public string To { get; set; }
    public string From { get; set; }
}
person Vaccano    schedule 05.02.2010
comment
Я хотел получить все состояния вместо переходов, это тоже отлично сработало. Большое спасибо. - person 4imble; 16.02.2012