Problemillas en algunos reports de TFS con la plantilla de SCRUM

 

Hace unos días uno de los equipos de desarrollo de la empresa detectó que no se mostraban algunos reports de la plantilla de Scrum (ScrumforTeamSystem.2.2.14165.003). Concretamente se trataba de los reports Builds y Build Unit Test.
El error venía dado porque aun habiendo compilaciones lanzadas, el servidor no mostraba datos disponibles. Al no tratarse de un problema del refresco del DataWarehouse damos por sentado que el error se estaba produciendo en el report.

Nos bajamos el rdl del servidor de reporting para dar un vistazo a la Select principal que utiliza el report en cuestión, la cual es:

SELECT CONVERT(DATETIME,CONVERT(VARCHAR,b.[Build Start Time],112),112) AS BuildDay 
        , bs.[Build Status] AS BuildStatus 
        , COUNT(b.[__ID]) AS  BuildCounter 
    FROM dbo.Build b 
        INNER JOIN dbo.[Build Details] bd 
            ON b.[__ID] = bd.Build 
        INNER JOIN dbo.[Team Project] tp 
            ON bd.[Team Project] = tp.[__ID] 
        INNER JOIN dbo.[Build Status] bs 
            ON bd.[Build Status] = bs.[__ID] 
            AND bs.[Build Status] IN ('Succeeded', 'Partially Succeeded', 
 
'Failed', 'Stopped') 
    WHERE CONVERT(DATETIME,CONVERT(VARCHAR,b.[Build Start Time],112),112) BETWEEN 
 
@vStartDate AND @vEndDate 
    AND b.[Build Type] = @vBuildType 
    AND tp.[Team Project] = @vProject 
    GROUP BY CONVERT(DATETIME,CONVERT(VARCHAR,b.[Build Start Time],112),112) , 
 
bs.[Build Status] 
 

 

 

Tras ver el código, comprobamos que en la tabla  build status de la base de datos TfsWarehouse, los valores que se usan para guardar el estado de una compilación son los siguientes:

__ID    Build Status    __LastUpdatedTime    __DimensionMemberActive 
1    En curso    2009-03-16 10:31:58.003    1 
2    Correcto    2009-03-16 10:31:58.020    1 
3    Completado parcialmente    2009-03-16 10:31:58.020    1 
4    Incorrecto    2009-03-16 10:31:58.020    1 
5    Detenido    2009-03-16 10:31:58.020    1 
6    Sin iniciar    2009-03-16 10:31:58.020    1 

Por lo tanto, la select anterior no mostrará nunca ningún valor en el report Builds  citado anteriormente al filtrar por los valores del estado en inglés(Suceeded, Failed, etc. ) mientras que los valores reales que TFS asocia a la compilación están en español en la base de datos(Correcto, Incorrecto, etc.)

Por tanto hemos decidido editar el report cambiando los estados de inglés a castellano, quedando la consulta principal  del report de la siguiente manera:

SELECT BuildDay 
    , ISNULL([Correcto],0) [Correcto] 
    , ISNULL([Completado parcialmente],0) [Completado parcialmente] 
    , ISNULL([Incorrecto],0) [Incorrecto] 
    , ISNULL([Detenido],0) [Detenido] 
FROM 
( 
    SELECT CONVERT(DATETIME,CONVERT(VARCHAR,b.[Build Start Time],112),112) AS BuildDay 
        , bs.[Build Status] AS BuildStatus 
        , COUNT(b.[__ID]) AS  BuildCounter 
    FROM dbo.Build b 
        INNER JOIN dbo.[Build Details] bd 
            ON b.[__ID] = bd.Build 
        INNER JOIN dbo.[Team Project] tp 
            ON bd.[Team Project] = tp.[__ID] 
        INNER JOIN dbo.[Build Status] bs 
            ON bd.[Build Status] = bs.[__ID] 
            AND bs.[Build Status] IN ('Correcto', 'Completado', 
 
'parcialmente', 'Incorrecto', 'Detenido') 
    WHERE CONVERT(DATETIME,CONVERT(VARCHAR,b.[Build Start Time],112),112) BETWEEN 
 
@vStartDate AND @vEndDate 
    AND b.[Build Type] = @vBuildType 
    AND tp.[Team Project] = @vProject 
    GROUP BY CONVERT(DATETIME,CONVERT(VARCHAR,b.[Build Start Time],112),112) , 
 
bs.[Build Status] 
    ) p PIVOT 
( 
    SUM(BuildCounter) FOR BuildStatus IN ([Correcto], [Completado 
 
parcialmente], [Incorrecto], [Detenido) 
) AS pvt 
 

Hay que pensar que se hace referencia a estos valores en diversas partes del rdl, por lo que habrá que tenerlo en cuenta a la hora de modificar el report.

Después de esto, sólo hace falta subirlo de nuevo (en nuestro caso, hemos dejado el original y el modificado se ha subido con otro nombre), volver a configurar el origen de datos, de reports y de olap y el report comienza a proporcionarnos los datos que necesitamos.

Entiendo que es un problema que sólo se da en instalaciones de la plantilla de Scrum en un TFS instalado en castellano (con el language pack correspondiente en WSS). Si alguno tiene algún problema similar, estaría encantado de comentarlo.

Una última cosa, también hemos tenido que modificar los parámetros de inicio (start date) y final (end date) del report y quitarles los valores por defecto. Sin este último paso, no había manera de que cogiese los valores introducidos por el usuario y usaba siempre de los de la configuración.

 

Saludos

5 comentarios sobre “Problemillas en algunos reports de TFS con la plantilla de SCRUM”

  1. Jo !!! pues miedo me da !!!
    como para prepararme para la próxima, me podes comentar que partes del entorno de desarrollo tienen en español y cuales en ingles ??

    Salu2 😀

  2. Hola Bruno,
    Bueno, es un TFS montado en dos servidores. La capa de datos en un w 2008 de 64 bits y la de aplicación en otro 2008 de 32 que corre como máquina virtual dentro del primero. Ambos en español.
    TFS 2008 y WSS 3 también en español (este último con el language pack en inglés).
    Todos los clientes que conectan corren VS Team Suite también en español.
    La verdad, el último paso que comento me ha despistado mucho, cuando modificamos el report y pensábamos que ya funcionaría seguia apareciendo el dichoso mensaje «No data available yet» y la información de fechas que aparece en pantalla era la de «por defecto», pasándose por el forro las que elegías en el formulario para filtrar. No sé porqué puede ser porque no he podido mirarlo. Si averiguases algo y lo comentas, cojonut! 🙂
    Saludos

  3. @Santi, muchisimas gracias por la informacion.

    No creo que pueda reproducir un entorno asi, pero me lo apunto para que si alguna vez me lo cruzo por el camino, tener en cuenta estos escenarios.

    Salu2

Responder a sbalboa Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *