Создание отчета с помощью TFS и Crystal Reports. часть 2

В недавно завершенной мной серии работ показано, как создавать некоторые типы отчетов для agile-проектов с использованием TFS и Crystal Reports. Данная статья продолжает традицию использования TFS и Crystal Reports, на этот раз для создания карточек историй на основе информационного хранилища данных.

В части 1 нашей серии статей мы рассмотрели предпосылки использования Базового сервера команды (TFS) и инструментального средства Crystal Reports для создания отчетов в рамках agile-проектов. Во 2-й части серии публикаций мы создадим 2 отчета: Отчет по журналу регистрации подробностей историй, который позволяет распространить журнал обрабатываемых историй между удаленными пользователями. Ко второму рассмотренному типу отчетов относится отчет о текущей итерации, в котором фиксируется состояние текущей итерации и отчет об авариях.

В части 3 рассматривается процедура создания диаграммы отказов с использованием TFS и Crystal Reports.

В рамках этой статьи будет создан отчет, который позволит менеджеру проекта разместить карточки историй, созданные на основе хранящихся на сервере TFS данных, на информационной доске в оперативной комнате. Данный отчет имеет также отношение к вопросам, связанным с различиями в представлении стандартных карт историй и распечатанных с сервера карт историй.

Системные требования

* Базовый сервер команды (TFS);
* SQL Server 2005;
* Visual Studio 2005
* Crystal Reports XI

Отчет по историям

Как было подробно рассмотрено в части 1, мы используем TFS для сбора историй.Я осуществляю сбор историй в TFS по ряду причин.Одна из причин состоит в возможности хранения этих историй в массиве данных, который постоянно резервируется и т.д. Другая причина заключается в возможности создания отчетов различными способами с использованием SQL.

Для удаленных заказчиков существуют отчеты, которые эти заказчики могут просматривать. Решающим фактором для меня является удобство хранения моих историй в базе данных, а не в виде каталожных карточек, которые я могу потерять.

Мы рассмотрим шаг за шагом процедуру создания отчета, который будет генерировать истории для Вас. Прежде всего, отчет историй предназначен для распечатки карточек историй, которые можно приколоть к информационной доске. Если читатель знаком с agile-проектами, при создании которых используется ЭП или аналогичные методики, то он, вероятно, знаком также и с обычной процедурой создания карточек историй. Большинство команд разработчиков, работающих с историями, используют карточки для заметок, на которых они записывают истории. После этого они помещают карточку с историей на информационную доску, где фиксируется рабочий задел.

Согласно нашему сценарию, информация по конкретной истории вводится в рабочий компонент сценария на базовом сервере команды. И затем мы используем этот отчет для распечатки историй. Один из созданных мною оригинальных отчетов историй не содержал никакой разметки, которая бы определяла его уникальность. После распечатки и размещения историй на информационной доске проекта некоторые полученные от заказчиков отзывы свидетельствовали о том, что оказалось достаточно сложно ориентироваться в распечатанных карточках историй.

Обычно написанные от руки карточки историй имеют свои специфические, характерные особенности с различными обозначениями. Я полагаю, что неплохо было бы придать некоторую уникальность отпечатанным на лазерном принтере карточкам историй. Когда мы приступим к созданию отчета, вы увидите способ решения этой проблемы.

Давайте рассмотрим SQL-оператор, использованный для генерации этого отчета.

Листинг 1
select [System.Id]

, [System.Title]

, [System.CreatedDate]

, [System.TeamProject]

, [Microsoft.VSTS.Common.RoughOrderOfMagnitude]

, [Microsoft.VSTS.Common.Rank] as Iteration

, [System.State]

, [System.Reason]

, [Microsoft.VSTS.Common.ClosedDate]

from dbo.WorkItemsLatestUsed

where [System.WorkItemType] = ‘Scenario’

В этом SQL-операторе мы собираем ID, Заголовок, Microsoft.VSTS.Common.Rank для итерации и .VSTS.Common.RoughOrderOfMagnitude в качестве балльного показателя. Этот SQL-оператор создает основу для отчета историй.

Создание отчета

С помощью этого SQL-оператора можно создать отчет, содержащий истории размером 4×6 каталожных карточек. Давайте создадим отчет с использованием обычной страницы размером 8.5″ x 11″, как я обычно делаю, а затем вырезаю из него по мере надобности карточки историй.

Прежде всего для отчета нам нужно добавить следующие поля. System.ID, System.Title, Microsoft.Common.VSTS.RoughOrderOfMagnitude и Iteration. Поле ID удобно для поиска истории в TFS позже в ходе проведения совещания по планированию с заказчиками. После этого можно хранить подробности в поле описания. С его помощью легче находить эти истории, особенно при наличии большого их количества. В среднем проекте можно обрабатывать до 200 историй, и такой проект очень удобен для их хранения.

На иллюстрации 1 показаны места расположения полей. Поле @IdNum (формула, которая добавляет знак # перед числом) должно находиться в центре верхней строки. Поле System.Title располагается в середине, а поля Score и номер Iteration размещаются в нижней части карточки. Для всех полей используется шрифт Arial размером 36 пунктов, если не указано иное. Давайте применим дополнительное форматирование.

Рисунок 1

Прежде всего, для каждой карточки мы должны предусмотреть уникальный внешний вид с тем, чтобы карточки легко различались на совещании по планированию. Для этого давайте воспользуемся шрифтами Wingdings, которые поставляются совместно с другими шрифтами ОС Windows. Если у Вас на компьютере отсутствует шрифт Wingdings, поищите шрифт символьного типа, который может быть уникальным.

В дополнение, чтобы придать каждой карточке уникальный внешний вид, мы хотим присвоить каждой карточке уникальный цвет. Для имитации случайного цвета мы воспользуемся формулой для цвета шрифта, чтобы сделать его разным для каждой 10-й карточки.

Для этого будем использовать поле System.ID, которое всегда имеет разные значения. Поэтому мы зададим значение первого поля System.ID. Поместим это поле в верхнюю левую часть карточки. Давайте установим шрифт поля System.ID на Wingdings в разделе свойств. Затем на вкладке Font Color щелкнем мышью на кнопке Formula и поместим формулу в Листинг 2.

Листинг 2

iif(mid (cstr( {command.System.Id} ),3)=”1″, crBlack,

iif( mid( cstr( {command.System.Id} ),3) =”2″, crRed,

iif( mid( cstr( {command.System.Id} ),3) =”3″ , crBlue ,

iif( mid( cstr( {command.System.Id} ),3)=”4″, crGreen,

iif( mid( cstr( {command.System.Id} ),3)=”5″, crPurple,

iif( mid( cstr( {command.System.Id} ),3)=”6″, crYellow,

iif( mid( cstr( {command.System.Id}),3) =”7″, crGray,

iif( mid( cstr( {command.System.Id} ),3)=”8″, crMaroon, crTeal))))))))

Мы хотим также подставить ту же самую формулу в формулу для цвета поля System.Title.При этом цвет заголовка будет совпадать с уникальным цветом карточки. Теперь давайте скопируем это поле System.ID, имеющее шрифт wingding, в правый верхний угол карточки, а затем в нижние два угла на каждой стороне карточки. Теперь вашу карточку можно распечатать!

Краткие выводы

В этой статье мы показали, как можно использовать базовый сервер команды и приложение Crystal Reports для создания карты истории. Эта информация полезна для любого пользователя, использующего TFS в качестве хранилища информации для своего agile-проекта. Этой картой может воспользоваться любой сотрудник, понимающий преимущества использования в проекте распечатанной карты относительно написанных от руки индексных карт. Я надеюсь, что приведенная здесь информация окажется полезной для любого разработчика, применяющего стиль ЭП при разработке agile-проекта, и желаю всем разработчикам успехов в программировании.

Comments are closed.