tfs - tutorial - visual studio team services wikipedia
Iteración de API REST de Visual Studio e ID de área (2)
Estoy trabajando con la API REST de VSO y tengo una pregunta sobre cómo se asignan Iteración y ID de área. Específicamente, ¿por qué cuando asignó un elemento de trabajo a la raíz Iteración o Área, la ID que se devuelve para el WIT no se devuelve cuando consulto los nodos de clasificación?
Por ejemplo, imagine que tengo esta jerarquía cuando consulto / DefaultCollection / my project / _apis / wit / classificationnodes? $ Depth = 2
- Mi proyecto: id = 1234
- Área 1: id = 5678
- Área 2: id = 9012
- Área 1: id = 5678
Y luego consulto un elemento de trabajo usando / DefaultCollection / _apis / wit / workItems / 1? $ Expand = all
Si el elemento de trabajo está en el Área 1 o Área 2, el campo System.AreaId es el esperado (5678 y 9012, respectivamente). Sin embargo, si asigno el elemento de trabajo a Mi proyecto, System.AreaID es un valor que no está incluido cuando consulto todos los nodos de clasificación. Parece haber algún tipo de relación entre los identificadores, ya que son en serie (por ejemplo, el ID devuelto por la consulta del nodo de clasificación es 1232 para el área y 1233 para la iteración), pero parece que no puedo encontrar una manera de consultar a obtener la ID real devuelta por la consulta del elemento de trabajo.
De hecho, no solo se devuelve la ID para un elemento de trabajo cuando consulto todos los nodos de clasificación, si asigno el elemento de trabajo a la iteración raíz y al área, la ID devuelta para ambos campos tiene el mismo valor que no es incluido en la consulta del nodo de clasificación.
Lo que necesito es una forma de ver un elemento de trabajo y descubrir el área y la iteración a la que pertenece. Probablemente podría hacer algo con las cadenas de campos de ruta que se devuelven, pero eso parece propenso a errores ya que los usuarios pueden cambiarlas.
**** Editar **** Lo anterior parece ser un error en la API REST, pero para cualquiera que se encuentre con esta publicación hay una forma de obtener una ID de iteración utilizable por la cadena de ruta. Estructure su llamada REST de la siguiente manera:
/ DefaultCollection / [Nombre del proyecto] / _ apis / wit / classificationnodes / iterations / Release 1 / Sprint 1 (etc.)
Hay tres formas de identificar un Área (todo lo que publico igualmente se aplica a Iteraciones). La ruta (cadena), la ID (int) y una Guid. cada uno de ellos se usa de diferentes maneras y tiene diferentes ramificaciones.
Por ejemplo, cambiar el nombre de un Área, NO cambia su identidad, por lo tanto, no actualiza un elemento de trabajo (la ruta devuelta en un elemento de trabajo es dinámica).
También es posible eliminar y volver a crear una ruta idéntica, pero tendrá una ID diferente.
El GUID se usa principalmente para los Informes de Excel (como los padres del portal de SharePoint)
Dependiendo de cómo quiera que las cosas reaccionen, determina el elemento apropiado para usar.
No he visto ningún problema con la identificación que mencionas, y si pudieras crear una reproducción simple, me gustaría verla.
david (punto) corbin (at) dynconcepts (punto) com
Nunca he hecho esto con ID. Solo uso el camino. En el servicio de clasificación puede obtener el nodo por ruta con la suficiente facilidad.
Por ejemplo, al utilizar la API REST, puede acceder a esta url para obtener los datos sobre una iteración específica:
/DefaultCollection/[Project Name]/_apis/wit/classificationnodes/iterations/[Release X]/[Sprint Y]
Tenga en cuenta que tratar de acceder a la ruta de iteración predeterminada (el nombre del proyecto en lugar de una iteración específica) devolverá un error:
/DefaultCollection/[Project Name]/_apis/wit/classificationnodes/iterations/[Project Name]
daré :
{"$id":"1","innerException":null,"message":"VS402485: The node name is not recognized: [Project Name]","typeName":"Microsoft.TeamFoundation.WorkItemTracking.Server.Metadata.WorkItemTrackingTreeNodeNotFoundException, Microsoft.TeamFoundation.WorkItemTracking.Server","typeKey":"WorkItemTrackingTreeNodeNotFoundException","errorCode":0,"eventId":3200}
Entonces, si haces un trabajo por lotes, debes filtrar esos antes de consultar la API.