Заметки консультанта

Шамрай Александр Владимирович

Posts Tagged ‘reporting’

Дополнительная настройка стандартных RDL отчетов Team Foundation Server

Posted by Shamrai Alexander на Февраль 23, 2018

Отчеты на основе SQL Server Reporting Services, которые поставляются «из коробки» в TFS, предоставляют достаточно информации для понимания ситуации с качеством и текущими требованиями в работе. Весь список отчетов можно посмотреть здесь: https://docs.microsoft.com/en-us/vsts/report/sql-reports/reporting-services-reports. Команде конечно может хватать оперативных отчетов, которые предоставляет TFS (VSTS) на основе отчетов от запросов по рабочим элементам, цифровым панелям и т.д.: https://docs.microsoft.com/en-us/vsts/report/dashboards/overview. Но, если же нет желания предоставлять доступ к проектам и исходному коду внешним пользователям, а на это может быть достаточно причин, то можно воспользоваться отчетам SQL Server Reporting Services и Power BI. В рамках данной статьи мы рассмотрим, как можно дополнительно настроить один из стандартных отчетов SQL Server Reporting Services.

Перед настройкой отчетов необходимо проверить следующее:

  • Включена ли отчетность SQL Server Reporting Services. Если нет, то ее можно подключить этими шагами: https://docs.microsoft.com/en-us/vsts/report/admin/add-reports-to-a-team-project
  • Есть ли отчеты для выбранного проекта. Если нет, то можно подключить следующими шагами: https://ashamray.wordpress.com/2018/02/16/create_tfs_default_reports/
  • Выбрать отчет для дополнительной настройки. В нашем случае отчет «Обзор требований» из проекта на основе шаблона CMMI, который дает полную информацию о состоянии реализации требований и их тестирования.

Рисунок 1. Пример отчета

  • Выбрать инструмент для реализации изменений. Тут будем использовать SQL Server Report Builder.
  • Открыть отчет через выбранный инструмент:

Рисунок 2. Открытие отчета

В открывшемся отчете мы увидим несколько разделов, но нас будет интересовать только два из них – Параметры и Наборы данных. Свойства одного из параметров можно увидеть на рисунке ниже.

Рисунок 3. Настройка параметра отчета

Параметры, которые имеет смысл настраивать:

  • IncludeTasks – отображать ли дочерние задачи в отчете. По умолчанию отображаются только требования без какой-либо декомпозиции. Если необходимо отображать задачи, то в значении по умолчанию устанавливаем =1.

Рисунок 4. Включение дочерних задач

Рисунок 5. Пример работы отчета

  • DisplayOwnValues – учитывать ли в трудозатратах их значение в суммарных задачах. По умолчанию установлено, что учитываются только значения конечных задач.
  • DeliverableCategory – список типов рабочих элементов, которые считаются как поставляемые типы рабочих элементов. По молчанию это требования и пользовательские истории. Но если мы хотим видеть декомпозицию выше, то мы можем добавить функции:

Рисунок 6. Добавление функции в общую структуру работ

Рисунок 7. Пример работы отчета

Вышеприведенные настройки по сути позволяют немного расширить представляемую информацию. Ниже рассмотрим еще два примера:

  1. Включение новых задач в отчет. По умолчанию учитываются только те задачи, которые были выведены из инициирующего состояния, т.е. взяты работу и потом выполнены. Все новые задачи при работе отчета игнорируются.
  2. Добавление дополнительного поля в общую таблицу отчета. Отчет отбирает достаточное количество полей, например, идентификатор, тип рабочего элемента. Но иногда есть необходимость отобразить какое-то свое пользовательское поле.

Эти два примера реализуются уже на основе набора данных. В частности, выбранный отчет как основной набор данных использует dsOverview. Изменить набор данных можно с помощью кнопки Конструктор запросов, в котором запрос находится в текстовом виде.

Рисунок 8. Изменение запроса

Рисунок 9. Пример запроса

Мы не будем разбирать весь код запроса, а сосредоточимся только на решении выбранных задач.

Для того, чтобы включить в запрос новые задачи, необходимо закомментировать строки, которые отбрасывают эти задачи при построении иерархии данных. Это строка 98 в запросе:

Рисунок 10. Установка комментария вместо отбрасывания предложенных задач

Далее добавим поле, которого нет в стандартном наборе полей. По умолчанию список отбираемых полей можно посмотреть в свойствах набора данных:

Рисунок 11. Поля запроса

Выполним пример на основе поля Приоритет. Для начала необходимо узнать, как поле называется в общей отчетной базе данных. Сделать это можно, создав новый набор данных и подключив источник данных TfsReportsDS:

Рисунок 12. Создание нового набора данных

В конструкторе запроса необходимо выбрать представление CurrentWorkItemView и найти необходимое поле (Microsoft_VSTS_Common_Priority). Как правило, названия колонок для полей, которые подвергаются отчетности, именуются также как свойство Reference Name с заменой точек на подчеркивания.

Рисунок 13. Поле Важность

Далее необходимо «провести» отбор данного поля через все промежуточные таблицы, которые создаются при обработке данных в отчете. Это нужно сделать в следующих строках:

  • Добавить дополнительную колонку в таблицу Rollups (строка 227)

Рисунок 14. Новая колонка для отбора приоритета

  • Добавить извлечение поля приоритета (строка 259):

Рисунок 15. Получение приоритета из представления

  • Добавить столбец при обработке собственных значений (строка 390):

Рисунок 16. Добавление приоритета для собственных значений

  • Добавить колонку при создании результирующего набора данных (строка 431):

Рисунок 17. Добавление приоритета в результирующие данные

После сохранения запроса необходимо добавить новый столбец в таблицу отчета и выбрать новое поле как отображаемое значение:

Рисунок 18. Добавление нового столбца таблицу отчета

Рисунок 19. Назначение в столбец поля приоритета

Кроме этого можно поправить форматирование, чтоб поле приоритета не выстраивалось в виде дерева.

Рисунок 20. Вызов свойства поля

Рисунок 21. Исправление отступа

Сохраняем изменения и в результате получим следующий вид:

Рисунок 22. Рабочий отчет

Реклама

Posted in Microsoft, Team Foundation Server, Visual Studio | Отмечено: , , , | Leave a Comment »

Как создать отчеты по умолчанию в Reporting Services для проекта Team Foundation Server

Posted by Shamrai Alexander на Февраль 16, 2018

<< Перейти в раздел «Team Foundation Server Admin FAQ»

По умолчанию, когда проект создается в TFS из веб-интерфейса, отчеты на основе Reporting Services не создаются. Однако отчеты дают неплохие возможности для подключения внешних заинтересованных лиц, включая возможность экспорта отчетов и подписки на отчеты, без необходимости обеспечения непосредственного доступа к проектам. Для того, чтобы «вернуть» набор отчетов по умолчанию, необходимо воспользоваться командой TfsConfig addProjectReports с параметрами:

/collection:’url к колекции проектов’

/teamProject:’имя проекат’

/template:’Шаблон для отчетов: CMMI, Agile или Scrum’

Пример выполнения команды:

Детальная информация о команде: AddProjectReports

Posted in Admin FAQ, Microsoft, Team Foundation Server, Team Foundation Server FAQ, Visual Studio | Отмечено: , , | Leave a Comment »

Создание альтернативной Kanban доски в TFS на основе Report Server

Posted by Shamrai Alexander на Июнь 14, 2017

Не всегда есть желание «пускать» внешних Заказчиков в свой проект, т.к. в нем может быть информация, которая к нему может не относиться, а также нет желания отображать всю внутреннюю коммуникацию. Для таких целей можно использовать Report Server. В этом случае для Заказчика нет необходимости докупать лицензии, а также уделять внимание административным функциям. Ниже приведены детальные шаги для создания отчета на основе Report Server для проекта TFS. Итак, приступим:

  • Запускаем построитель отчетов

  • В мастере создания отчетов нажимаем отмена для дальнейшей его конфигурации.
  • Открываем Параметры приложения.

  • Указываем путь к серверу отчетов, который в дальнейшем будет использоваться по умолчания для новых отчетов и поиска существующих.

  • Добавляем новый источник данных для отчета, из которого будем получать необходимые данные.

  • В появившемся окне вводим наименование источника данных и нажимаем Обзор для выбора необходимого подключения к данным:

  • Выбираем источник данных, в нашем случае мы будем работать с кубом, и нажимаем кнопку Ок в окне выбора источника данных и мастера.

  • Выбираем создание нового набора данных, который будет использоваться для построения отчета

  • В появившемся окне указываем наименование набора данных и выбираем пункт Использовать набор данных, внедренных в отчет.

  • На данном шаге выбираем источник данных и нажимаем кнопку конструктор запросов.

  • В окне конструктора запросов выбираем куб командного проекта.

  • Перетаскиваем в область запрос измерение Количество рабочих элементов.

  • Перетаскиваем также следующие поля в область отчета (Идентификатор, Название, Кому назначено, Тип рабочего элемента):

  • Устанавливаем также следующие значения для фильтра:

  • Нажать Ок в конструкторе и потом в создании набора данных.
  • Выбираем вставку новой таблицы, которая будет отражать наши тикеты для новых рабочих элементов:

  • Удаляем лишний столбец, т.к. мы будем использовать только два. Один столбец будет содержать цвет тикета, второй детальную информацию

  • Выбрать свойства табликса и указываем набор данных.

  • И сохраняем свойства.
  • Добавить еще три строки внутри группы, которые будут содержать детали тикетов.

  • Выполняем следующее форматирование и установливаем следующие поля:

  • Выбираем свойства боковой свободной строки данных:

  • Переключиться на заливку и выбрать указание функции.

  • Указываем следующее выражение, которое будет переключать цвет тикета в зависимости от типа рабочего элемента. Если ошибка, то красный цвет, для других элементов будет зеленый цвет. (=IIf(Fields!System_WorkItemType.Value=»Ошибка», «Red», «LimeGreen»)):

  • Выполнить настройку для следующих ячеек:

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

  • Делаем также подчеркивание для шрифта поля идентификатора.
  • Также нам необходимо, чтоб для значения «Нет данных», если поле не имеет значения в TFS, в ячейке было просто пусто. Для этого для поля Кому назначено указываем следующее выражение в качестве значения (=IIf(Fields!System_AssignedTo.Value=»Нет данных»,»»,Fields!System_AssignedTo.Value)):

  • Указываем параметр единого отчета в свойствах табликса, чтоб отчет не разбивался на множество страниц.

  • Проверить работу отчета.

  • Создаем дополнительные наборы данных для состояний:
    • Активно
    • Разрешено
    • Закрыто

  • Копируем существующий табликс несколько раз (для каждого нового состояния) и изменяем заголовки на соответствующие состояния.

  • Выбираем свойства каждого табликса и указываем имя соответствующего набора данных.

  • Выбираем сохранение отчета и сохраняем его в любом проекте в каталоге отчетов Управления проектом

  • Открыть Visual Studio или портал проектов в веб-браузере и переходим к отчетам необходимого проекта.

  • Проверяем работу отчета

Posted in Microsoft, Team Foundation Server, Visual Studio | Отмечено: , , | Leave a Comment »

Отчет по возрасту ошибок в TFS

Posted by Shamrai Alexander на Апрель 3, 2017

«Борьба» с техническим долгом команды является неотъемлемой частью любого процесса разработки. Команда всегда старается минимизировать количество существующих проблем, но зачастую для нового релиза устанавливаются пороги качества, которым он должен соответствовать, и в него входит пограничное количество ошибок определенной важности. Пороги могут варьировать в зависимости от сложности проекта, а иногда приходится выпускать релиз с превышением установленных порогов, находясь под давлением различных обстоятельств (дедлайны, требования заказчика или прямого руководства). В случае если выпущенный релиз содержит ошибки с высокой важностью, то команда старается описать ее как «известную проблему» и в ближайшее время старается ее решить. TFS обеспечивает необходимые отчеты, которые позволяют акцентировать внимание на текущие проблемы качества и их тренды. Но, к сожалению, нет отчетов, которые бы показали насколько старыми являются наши ошибки или насколько долго они находятся в определенном состоянии. Такие отчеты позволяют шире посмотреть на существующие ошибки:

  1. Если ошибка долго находится в зарегистрированном состоянии, то она соответственно длительное время мешает нашему заказчику и влияет на наш авторитет. Поэтому, возможно, стоит повысить приоритет этой ошибки.
  2. Если ошибка находится долго в активном состоянии, то в этом тоже нет ничего хорошего. Т.е. либо разработчик больше не уделяет ей внимания, либо просто не знает, как с ней справиться.

Ниже рассмотрим пример создания подобного отчета. Для этих целей мы воспользуемся возможностями Report Server. Чтобы получать информацию о последнем изменении состояния, нам понадобится соответствующее поле. Такое поле в принципе в TFS поставляется из коробки, но оно не попадает в отчетную базу данных, т.к. не нас троен соответствующий атрибут. Пройдемся по шагам для создания нашего отчета.

  1. Поле для отслеживания изменения состояния. Это поле «Microsoft.VSTS.Common.StateChangeDate», которое обновляется при изменении состоянии соответствующей датой. Для того, чтобы оно попадало в отчетную базу, ему нужно установить атрибут Reportable в значение dimension. Для этого мы воспользуемся TFS Power Tools. На скриншотах ниже отображена последовательность шагов для обновления. После изменения атрибута сохраняем результаты работы.

Рисунок 1. Изменение свойства отчетности для поля

  1. Шаблон отчета. ALM Ranger-ы выпустили Руководство по отчетности TFS, которое было переведено в рамках данного блога. Данное руководство содержит предварительно подготовленный шаблон отчета на английском языке. Тут можно получить шаблон на русском языке. Шаблон отчета открываем в Report Builder и сохраняем в необходимом каталоге проекта на сервере отчетности.
  2. Параметры отчета. Для отчета можно установить параметры, которые позволят сузить количество выдаваемой информации, например, по состояниям. Для этого мы добавим новый параметр, установим для него возможные значения, установим значение по умолчанию.

Рисунок 2. Добавление нового параметра

Рисунок 3. Список выбора для параметра

  1. Набор данных отчета. Набор данных включает в себя запрос, который должен отобрать необходимые ошибки согласно заданным параметрам и при этом установить соответствующий атрибут его возраста. В рамках данного запроса устанавливаются атрибуты 1 неделя, 2 недели, 3 недели, 4 недели и более. Пример запроса:
SELECT

CurrentWorkItemView.System_Id

,CurrentWorkItemView.System_Title

,CurrentWorkItemView.System_State

,CurrentWorkItemView.System_AssignedTo

,CurrentWorkItemView.Microsoft_VSTS_Common_Priority

,CurrentWorkItemView.Microsoft_VSTS_Common_Severity

,CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate

,CurrentWorkItemView.System_CreatedDate

,CASE WHEN (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())>0) AND (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())<8) THEN 1 ELSE 0 END One_Week

,CASE WHEN (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())>7) AND (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())<15) THEN 1 ELSE 0 END Two_Weeks

,CASE WHEN (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())>14) AND (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())<22) THEN 1 ELSE 0 END Three_Weeks

,CASE WHEN (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())>21) AND (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())<29) THEN 1 ELSE 0 END Four_Weeks

,CASE WHEN (DATEDIFF(day, CurrentWorkItemView.Microsoft_VSTS_Common_StateChangeDate, GETDATE())>28) THEN 1 ELSE 0 END Very_Old

FROM

CurrentWorkItemView

WHERE

CurrentWorkItemView.System_WorkItemType = N’Ошибка’

AND CurrentWorkItemView.System_State IN (@State)

AND CurrentWorkItemView.ProjectNodeGUID = @ProjectGuid

  1. Отображение отчета. Отчет может быть представлен в табличном или графическом виде. Мы же воспользуемся столбиковой диаграммой. Шаги установки атрибутов диаграммы отображены ниже.

Рисунок 4. Выбор набора данных для диаграммы

Рисунок 5. Тип диаграммы

Рисунок 6. Выбор полей для диаграммы

Рисунок 7. Стиль диаграммы

  1. Отчет готов. Можно оценить его результат.

Рисунок 8. Отчет «Возраст ошибок»

Готовый отчет можно скачать здесь.

Posted in Microsoft, Team Foundation Server, Visual Studio | Отмечено: , | Leave a Comment »

Отчет о списывании времени с задач

Posted by Shamrai Alexander на Март 28, 2015

Team Foundation Server позволяет исполнителям ежедневно отчитываться о времени потраченном на свои задачи. Данная возможность позволяет команде и менеджеру проекта оперативно в целом оценивать ситуацию и понимать вкладываемся ли в итерацию, спринт или успеем мы отдать доработку к обещанному сроку. Но когда встает вопрос узнать об истории изменения времени или как списывалось время в конкретный день, то это стандартными возможностями через запросы по рабочим элементам не получить. Поучить можно ее с помощью отчетов, но стандартного такого отчета нет в коробке TFS, поэтому его необходимо создавать.

Выполнять разработку отчета с чистого листа нет смыслы, т.к. есть возможность взять за основу отчеты, которые поставляются с TFS. Немного «почистив» стандартный отчет, можно получить типовой шаблон для всех последующих отчетов. Пример такого отчета можно скачать как zip-архив здесь. Данный отчет можно редактировать с помощью Report Builder. Отчет содержит некоторые параметры, которые динамически определяют название проекта, поэтому для того, чтоб он заработал его необходимо открыть и сохранить на Report Server в каталог необходимого командного проекта:

Рисунок 1. Сохранение отчета на сервере отчетности

Кроме этого необходимо убедитmся, что источник данных указывается на правильное соединение TFSReportDS:

Рисунок 2. Свойства источника данных

Далее нам необходимо получить данные о списании времени для рабочих элементов. Это необходимо сделать с помощью добавления нового источника данных:

Рисунок 3. Свойства источника данных

Текст запроса можно использовать ниже приведенный, он взят из руководства по отчетности от ALM Rangers. Этот запрос отбирает из таблицы WorkItemHistoryView необходимые данные, а также стразу подчитывает разницу времени, которe. исполнитель указал в рабочем элементе.

SELECT

[System_Id] As [Id],[System_Rev] As [Rev],

[System_ChangedBy] As [Changed By],

[Microsoft_VSTS_Scheduling_OriginalEstimate] AS [Original Estimate],

[Microsoft_VSTS_Scheduling_RemainingWork] AS [Remaining Work],

[Microsoft_VSTS_Scheduling_CompletedWork] AS [Completed Work],

[System_Title] As [Title],[System_AssignedTo] As [Assigned To],

[System_ChangedDate] As [Changed Date],

[ProjectNodeName] AS [Team Project],

[AreaName],[AreaPath],

[IterationName],

[IterationPath],

[Microsoft_VSTS_Scheduling_RemainingWork] — (Select Top 1 IsNull([Microsoft_VSTS_Scheduling_CompletedWork],0)

FROM [Tfs_Warehouse].[dbo].[WorkItemHistoryView] WITH(NOLOCK)

WHERE [System_Id] = WIHV.[System_Id]

AND [System_Rev] = WIHV.[System_Rev] — 1) as [Completed Diff]

FROM

[Tfs_Warehouse].[dbo].[WorkItemHistoryView] WIHV WITH(NOLOCK)

WHERE

/** Filter team project **/

[ProjectNodeName] LIKE @ProjectName

/** Filter correction entries **/

AND [RevisionCount] IS NOT NULL /** Filter empty entries **/

AND ([Microsoft_VSTS_Scheduling_OriginalEstimate] IS NOT NULL

OR [Microsoft_VSTS_Scheduling_RemainingWork] IS NOT NULL

OR [Microsoft_VSTS_Scheduling_CompletedWork] IS NOT NULL)

ORDER BY ID, Rev

Ну и далее необходимо отразить результаты работы отчета. Для этого можно воспользоваться мастером вставки таблиц:

Рисунок 4. Вставка таблицы результатов мастером

Далее в новую таблицу мы добавляем поля, которые нам необходимы для отображения:

Рисунок 5. Добавление новых полей

И теперь мы уже можем проверить результат, нажав кнопку Выполнить в Report Builder. Но на текущий момент отчет будет отбирать все изменения, которые были выполнены в TFS. Нам же необходимо отобрать по конкретной дате. Для этого нам нужно добавить новый параметр в отчет и вставить его в тело запроса для нашего набора данных. Добавить параметр можно в соответствующем разделе отчета и указав следующие свойства:

Рисунок 6. Свойства параметра

Теперь сталось добавить данный параметр в тело запроса, где мы будем сравнивать задаваемую дату с датой изменения рабочего элемента. При этом нужно помнить, что данный параметр и значение поля рабочего элемента имеют тип Дата-Время, поэтому мы приведем их только к дате. Пример запроса в наборе данных ниже:

Рисунок 7. Измененный запрос

Теперь отчет готов к использованию и его можно скопировать во все проекты, где необходимо его использовать.

Рисунок 8. Готовый отчет

Дополнительные ссылки:

Posted in Microsoft, Team Foundation Server, Visual Studio | Отмечено: , | Leave a Comment »

Практическое руководство по отчетности TFS – Часть 2. Data Warehouse

Posted by Shamrai Alexander на Февраль 5, 2015

Переведено руководство от рейнджеров по работе с отчетами. Оригинал: https://vsarreportguide.codeplex.com/

Содержание

Posted in Microsoft, Team Foundation Server, TFS Practical Reporting Guide, Visual Studio | Отмечено: , , | Leave a Comment »

Практическое руководство по отчетности TFS. Заключение

Posted by Shamrai Alexander на Февраль 5, 2015

На этом завершается наше путешествие по хранилищу данных Team Foundation Server. Мы затронули теорию и познакомили вас с хранилищем данных и отчетностью. Мы рассмотрели различные упражнения в руководстве и провели вас через теорию, проектирование и практическое использования хранилища данных TFS, чтобы активно наблюдать и обнаруживать проблемы состояния среды TFS.

Мы надеемся, что вы оцените эти технологии и найдете это руководство полезным.

Искренне

The Microsoft Visual Studio ALM Rangers

Posted in TFS Practical Reporting Guide | Отмечено: , , | Leave a Comment »

Практическое руководство по отчетности TFS. Введение

Posted by Shamrai Alexander на Февраль 5, 2015

Добро пожаловать в руководство по отчетности TFS, где мы, Рейнджеры ALM, возьмем вас в увлекательное путешествие, чтобы вы открыли для себя интересные и мощные функции отчетности, предоставляемые сервером Team Foundation Server.

Это руководство фокусируется на предоставлении практических рекомендаций и примеров, которые позволят пользователям Team Foundation Server создавать полезные отчеты, используя TFS Data Warehouse и основываясь на реальных сценариях.

Целевая аудитория

Мы ожидаем, что большинство нашей аудитории будут разработчики. Однако руководство предназначено для всех, от разработчика до администратора, оно объяснит, как создать и использовать отчеты, которые помогают отслеживать, что Team Foundation Server и связанные проекты хорошо настроены и в рабочем состоянии. Руководство предполагает наличие базовых знаний о Team Foundation Server и понимания отчетности, иными словами, пользователи Team Foundation Server среднего уровня и продвинутые.

Что вам понадобится

Для этого руководства необходимы следующие поддерживаемые компоненты:

  • Visual Studio 2012, 2013
  • Team Foundation Server 2010, 2012, 2013
  • Microsoft Office Excel
  • SQL Server Business Intelligence Development Studio

Рейнджеры Visual Studio ALM

Рейнджеры Visual Studio ALM представляют собой особую группу из членов группы продуктов Visual Studio, Майкрософт, Microsoft Most Valuable Professionals (MVP) и лидеров сообщества Visual Studio. Их миссия заключается в обеспечении внешних решений для отсутствующих возможностей и руководств. Постоянно пополняемое содержимое Рейнджеров доступно онлайн.

Участники

Грант Холлидей, Хамид Шахид, Джесси Хоувинг, Джим Зубрит, Маттиас Скольд, Рамкумар Прасанна, Приянка Джанардхан.

Использование исходного кода для примера, ошибки и поддержка

Весь исходный код данного руководстве доступен для скачивания на домашней странице Практического руководства отчетности TFS, где мы также предоставляем последние исправления и обновления. Скачайте файл eBook2-Package.exe.

Дополнительные ресурсы Рейнджеров ALM

Информация о Рейнджерах ALM – http://aka.ms/vsarunderstand

Решения Рейнджеров Visual Studio ALM – http://aka.ms/vsarsolutions

Posted in TFS Practical Reporting Guide | Отмечено: , , | Leave a Comment »

Практическое руководство по отчетности TFS. Предисловие

Posted by Shamrai Alexander на Февраль 5, 2015

Одним из ключевых предложений Team Foundation Server был единое представление данных, пересекающее весь спектр управления жизненным циклом приложений (ALM). Из коробки мы создали широкий спектр отчетов, использующих эти данные, чтобы помочь дать понимание о состоянии проекта. Очевидно, что невозможно для команды продукта построить все отчеты или предвидеть, каким образом данные могут использоваться в каждой команде. Рейнджеры ALM проделали большую работу по расширению области существующих отчетов через обеспечение дополнительного понимания оценки состояния, фокуса команды и реакции для заказчиков. Эти отчеты могут послужить инструментами для вашей команды, которые помогают улучшить эффективность и стать более предсказуемыми для ваших заказчиков. Как владелец продукта команды для отчетности, я всегда ищу новые, углубленные способы сделать команду более продуктивной, и мы ценим обратную связь на то, как эти отчеты улучшили ваши команды и какие дополнительные идеи вы имеете для отчетов, которые мы хотим в будущем разработать.

Джастин Маркс – старший руководитель программы Cloud Dev Services

Posted in TFS Practical Reporting Guide | Отмечено: , , | Leave a Comment »

Практическое руководство по отчетности TFS. Приложение

Posted by Shamrai Alexander на Декабрь 27, 2014

Шаблон отчета

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

Руководство для шаблона отчета

Форма

Шаблон отчета содержит все элементы формы стандартного отчета TFS:

  1. Описание отчета находится в верхней части и описывает цель отчета.
  2. Ссылки на другие связанные отчеты в правой части для других отчетов в этой категории.
  3. Вопросы, на которые этот отчет помогает ответить.
  4. Значения параметров, используемых для создания отчета. Это полезно, если вы хотите напечатать отчет.
  5. Время обновления данных для определения «свежести» данных в отчете.

Рисунок 9. Форма шаблона отчета

Параметры

Шаблон содержит набор основных параметров для управления отчетом и набор необязательных параметров для поддержки общих сценариев отчетности. Если вы не используете один из необязательных параметров, вы можете просто удалить его.

Ключевые параметры

Это список ключевых параметров, которые необходимы для работы отчета. Их нельзя удалять.

Параметр Использование
ExplicitProject Используется для отладки/тестирования отчета
ReportPath Содержит путь к RDL файлу, что используется потом в dsProjectGuid для получения ProjectGuid
ProjectGuid Содержит Guid проекта
ProjectName Содержит имя проекта
IsDashboard Скрывает все стандартные элементы формы, если установлено как истина, как правило переопределено в URL

Таблица 14. Ключевые параметры

Необязательные параметры

Это список необязательных параметров для поддержки общих сценариев. Удалите их если не будете использовать.

Параметр Использование
IterationParam Содержит выбранную итерацию
AreaParam Содержит выбранную область

Таблица 15. Необязательные параметры

Источники данных

Отчет содержит только один источник данных TFSReports. TFSReports является источником данных для подключения к вашему реляционному TFS хранилищу. Дополнительные сведения о реляционном хранилище TFS и его схеме находятся по адресу http://msdn.microsoft.com/library/bb649552.aspx.

Наборы данных

Шаблон содержит основные наборы данных для управления отчетом и необязательные наборы данных для поддержки общих сценариев отчетности. Если вы не используете один дополнительный набор данных, вы можете просто удалить его и соответствующие параметры.

Основные наборы данных

Это список основных наборов данных, необходимых для управления отчетом. Их нельзя удалять.

Набор данных Использование
dsProjectGuid Получает Guid проекта из текущего пути отчета
dsLastProcessedTime Получает время последнего обновления данных

Таблица 16. Ключевые наборы данных

Необязательные наборы данных

Это список необязательных наборов данных.

Набор данных Использование
dsIteration Получает все итерации для командного проекта
dsArea Получает все области для командного проекта

Таблица 17. Необязательные наборы данных

Начало работы

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

Следуйте этим шагам:

Шаг Инструкции
1. Создать новый проект отчета[ ] — Сделано
  • Запустить BIDS (SQL Server Business Intelligence Development Studio).
  • Создать новый Report Server Project с названием MyCustomReport
2. Добавить общий источник данных TfsReportDs[ ] — Сделано
  • В обозревателе решений выбрать правой кнопкой мыши DataSource, Add New Datasource.
  • Назвать его TfsReportDs.
  • Ввести строку подключения и учетные данные для чтения из реляционной базы данных TFS.
3. Добавить и переименовать шаблон[ ] — Сделано
  • В обозревателе решений выбрать правой кнопкой Report, Add existing report.
  • Скопировать и переименовать шаблон отчета ALM рейнджеров в каталог проекта.
  • Выбрать и добавить скопированный отчет.
4. Установить параметр отчета ExplicitProject[ ] — Сделано
  • В обозревателе данных отчета выбрать правой кнопкой мыши ExplicitProject, Parameter Properties.
  • Выбрать вкладку Default Values.
  • Установить в значение по умолчанию путь к существующему командному проекту: /TfsReports/DefaultCollection/TestProject
5. Установить отчет как стартовый для проекта[ ] — Сделано
  • Выбрать правой кнопкой мыши свойства проекта
  • Под элементом Debug/Start item выбрать отчет.
6. Протестировать отчет[ ] — Сделано
  • Нажать F5

Таблица 18. Шаблон отчета – начало работ

Настройка виртуальной машины для использования Analysis Services

Установка Analysis Services в табличном режиме на виртуальной машине Брайана Келлера

Установка SQL Server 2012 Analysis Services

  1. Запустите Виртуальную машину Брайана Келлера и войдите от учетной записи администратора.
  2. Смонтируйте установочный диск SQL Server 2012 или путь к папке с установочным носителем.
  3. Запустите установку.
  4. На странице Product Key нажмите кнопку Next.
  5. Примите условия лицензионного соглашения и нажмите кнопку Next.
  6. Нажмите кнопку Next на странице Product Updates.
    Игнорируйте предупреждение. Мы собираемся установить SP1 позже.
  7. После запуска правил поддержки программы установки, нажмите кнопку Next.
  8. На странице Setup Role выберите SQL Server Feature Installation и нажмите кнопку Next.
  9. На странице выбора компонентов выберите только Analysis Services, Client Tools Connectivity и Client Tools Backwards Compatibility, Management Tools – Basic and Complete и SQL Server Data Tools и нажмите кнопку Next.
    Обратите внимание, что в этом случае мы не будем пытаться устанавливать PowerView. Это более сложный процесс, так что давайте не будем беспокоиться об этом прямо сейчас.
  10. После запуска правил установки, нажмите кнопку Next.
  11. Instance Configuration должен быть именованный экземпляр, так что назовем его «Tabular» и нажмите кнопку Next.
  12. В disk space requirements нажмите кнопку Next.
  13. В разделе server configuration нажмите кнопку Next.
  14. На странице Analysis Services Configuration выберите Tabular Mode (по умолчанию используется Multidimensional and Data Mining Mode).
  15. Нажмите кнопку Add Current User и нажмите кнопку Next (можете добавить других пользователей, но не обязательно).
  16. На странице Error Reporting нажмите кнопку Next.
  17. После выполнения правил настройки установки, нажмите кнопку Next.
  18. На странице готовности для установки нажмите Install.
  19. После завершения установки нажмите кнопку Close.

Установка SQL Server 2012 x64 SP1

  1. Вставьте диск SQL Server 2012 в виртуальной машине и запустите установку x64 SP1.

Проверка установки

  1. Для проверки установки откройте SQL Server Management Server 2012, подключитесь к localhost\tabular и проверьте свойства.

Понимание модели реляционных данных хранилища рабочих элементов

Каждый новый экземпляр Team Foundation Server создает следующие базы данных на сервере данных:

  • Tfs_Configuration
  • Tfs_DefaultCollection (или Tfs_ <CollectionName> если ваша командная коллекция имеет другое имя)
  • Tfs_Warehouse
  • Tfs_Analysis

Первые три базы данных – это OLTP баз данных, созданные в службе баз данных SQL Server. Tfs_Analysis является OLAP базой данных, созданной службой анализа SQL Server. В следующей таблице приведено краткое описание каждой базы данных:

Имя базы данных Тип Описание
Tfs_Configuration Реляционная база данных Эта база данных хранит каталог ресурсов и конфигурации сервера Team Foundation Server. Каждая установка TFS имеет только одну базу данных Tfs_Configuration.
Tfs_<CollectionName> Реляционная база данных Для каждой новой командной коллекции создается новая базы данных Tfs_ <CollectionName>. Эта база данных содержит фактические данные командных проектов в командной коллекции. Это хранилище первичных данных, которые записываются при создании новых рабочих элементов или поставке под контроль файлов.
Tfs_Warehouse Реляционная база данных Tfs_Warehouse реляционная база данных хранилища TFS и предоставляет данные в формате, который упрощает отчетность.
Tfs_Analysis OLAP куб Базы данных Tfs_Analysis является многомерным кубом OLAP, который содержит агрегированные данные team foundation server.

Таблица 19. Базы данных сервера данных TFS

Майкрософт рекомендует использовать базы данных Tfs_Warehouse и Tfs_Analysis для отчетности. О структуре и схеме этих баз данных существует достаточно документации. Однако каналы данных Tfs_Warehouse обновляются каждые два часа и формат может быть нежелателен при определенных обстоятельствах. Все базы данных командных коллекций сходятся в эти базы данных (Tfs_Warehouse и Tfs_Analysis).

В этом разделе описывается схема Tfs_DefaultCollection для поддержки пользователей, которые хотят использовать данные из базы данных OLTP для отчетности.

Предупреждение Майкрософт не рекомендует использовать эту базу данных для отчетности по следующим причинам:

  • Схема базы данных Tfs_DefaultCollection может изменяться в будущих версиях или при обновлении сервера TFS.
  • Запросы непосредственно к базе данных могут иметь неблагоприятное воздействие на производительность вашего сервера TFS. Поэтому рекомендуется использовать locking hint, чтобы ваши запросы не блокировали базу данных.
  • Любые случайные изменения в данных этой базы данных может повредить ваш сервер TSF. Данные в этой базе данных не должны изменяться. Всегда подключайтесь к этой базе данных пользователем, который имеет доступ только для чтения.

 

Чтобы обеспечить рекомендации от Microsoft, при создании нового командного проекта (значение по умолчанию — службы Reporting Services), мы должны подключаться только к источникам данных из баз данных Tfs_Warehouse (названный TFSReportsDS) и Tfs_Analysis (названный TFSOlapReportsDS). В этом документе мы подробно рассмотрим, как данные по рабочим элементам хранятся в базе данных Team Foundation Server.

Таблицы Tfs_DefaultCollection

На первый взгляд схема базы данных Tfs_DefaultCollection выглядит несколько запутанной. Есть множество таблиц и не очень очевидно, какая таблица содержит какие данные. Т.к. мы сосредоточены на рабочих элементах, мы начинаем с таблиц, связанных с рабочими элементами.

[dbo].[WorkItemsAre]

Эта таблица является первичной таблицей, которая содержит все рабочие элементы. Таблица содержит следующие столбцы:

Название поля Описание
[PartitionId] Столбец может использоваться для разделения таблицы. Если разделение не сконфигурировано, он всегда заполняется со значением 1.
[Changed Date] Дата и время последнего изменения рабочего элемента
[PersonId] ID персоны, которая создала рабочий элемент
[AreaID] ID области, к которой принадлежит рабочий элемент. Это поле содержит внешний ключ к таблице [xxTree]
[Rev] Номер версии рабочего элемента. При каждом обновлении значение поля увеличивается на 1.
[State] Текстовое поле состояния рабочего элемента
[Reason] Текстовое поле причины рабочего элемента
[Assigned To] ID пользователя, на которого назначен рабочий элемент.
[Created By] ID пользователя, который создал рабочий элемент.
[ID] ID рабочего элемента.
[Changed Order] Поле отметки времени для записи
[Authorized Date] Дата и время последнего обновления рабочего элемента
[Created Date] Дата и время создания рабочего элемента
[IterationID] ID выбранной итерации рабочего элемента. Это поле содержит внешний ключ к таблице [xxTree]
[Title] Текстовое поле названия рабочего элемента
[Changed By] ID пользователя, который последним изменил рабочий элемент.
[Work Item Type] Текстовое поле типа рабочего элемента

Таблица 20. Таблица [dbo].[WorkItemsAre]

В дополнение к указанным выше полям таблица также содержит несколько полей, начинающихся с имени «fld» с номером, например «fld10002». Это динамические поля. Они обеспечивают гибкость модификации шаблонов процессов. Вторая часть поля является идентификатор поля, данные которого содержатся в таблице «Fields».

Например, следующая таблица возвращает имя и значение из поля fld10002 для всех рабочих элементов:

SELECT WorkItems.ID, Fields.Name as FieldName, WorkItems.Fld10002 as FieldValue FROM [WorkItemsAre] WorkItems LEFT JOIN [Fields] ON Fields.FldID = 10002

[dbo].[WorkItemsLatest]

Таблица [dbo].[WorkItemsLatest] имеет ту же схему, что и таблица [dbo].[WorkItemsAre], за исключением того, что он содержит дополнительное поле под названием «Revised Date». Эта таблица может использоваться взаимозаменяемо с таблицей [dbo].[WorkItemsAre].

[dbo].[WorkItemsWere]

Таблица [dbo].[WorkItemsWere] содержит исторические данные таблицы [dbo].[WorkItemsAre]. Она имеет ту же схему, что и таблица [dbo].[WorkItemsAre]. При каждом изменении рабочего элемента создается новая запись в этой таблице. Новая запись содержит состояние рабочего элемента до изменения.

[dbo].[WorkItemLongTexts]

Html поля рабочих элементов хранятся в отдельной таблице, называемой [dbo].[WorkItemLongTexts]. Каждый раз, когда обновляется поле html, создается новая запись в этой таблице. Однако эта таблица записывается только тогда, когда есть изменения в поле html. Это означает, что не все номера версии установленные в таблице [dbo].[WorkItemsWere] будут иметь соответствующую запись в этой таблице. Схема таблицы представлена подробно здесь:

Название поля Описание
[PartitionId] Столбец может использоваться для разделения таблицы. Если разделение не сконфигурировано, он всегда заполняется со значением 1.
[AddedDate] Дата добавления значения html поля
[FldID] ID персоны, которая создала рабочий элемент
[ID] ID рабочего элемента для этого поля html.
[Words] Текст поля html.
[Changed Order] Поле отметки времени для записи
[Rev] Номер версии рабочего элемента, в которой было сделано изменение html поля.
[fHtml] Логическое поле, которое показывает, что данное поле html.
[IndexedWords] Бинарное поле, которое содержит хеш-код поля Words.
[WordsDocumentType] Текстовое поле, которое содержит тип данных хранящихся в поле. Возможные значения .txt, .html
[TextID] Это поле идентификационных данных и первичный ключ таблицы.
[EndDate] End Date заполняется только для записей, которые не являются в настоящее время активными. То есть поле было обновлено и создается новая запись с новыми значениями. Для каждого обновления поля для текущей записи заполняется поле EndDate и создается новая запись.

Таблица 21. Таблица [dbo].[WorkItemsLongTexts]

[dbo].[WorkItemFiles]

Таблица [dbo].[WorkItemFiles] содержит информацию о всех файлах, прикрепленных к рабочему элементу. В следующей таблице приведена схема таблицы [dbo].[WorkItemFiles]:

Название поля Описание
[PartitionId] Столбец может использоваться для разделения таблицы. Если разделение не сконфигурировано, он всегда заполняется со значением 1.
[RemovedDate] Дата и время удаления вложения из рабочего элемента. Заполняется только для удаленных вложений.
[AddedDate] Дата и время добавления вложения к рабочему элементу
[FldID] ID поля рабочего элемента, которое хранит прикрепленный файл
[ID] ID рабочего элемента, к которому прикреплен файл.
[FilePath] Поле заполняется с GUID из поля FileGuid в таблице [dbo].[Attachment], где хранится содержимое файла.
[ExtID] Это поле идентификационных данных и первичный ключ таблицы.
[Comment] Текстовое поле, которое содержит комментарий, написанный пользователем при вложении файла.
[CreationDate] Дата и время создания файла во вложении.
[LastWriteDate] Дата и время последнего изменения файла во вложении.
[Length] Размер файла в байтах.
[Historical Added Date] Дата и время сохранения рабочего элемента, когда было давлено вложение.
[Historical Removed Date] Дата и время сохранения рабочего элемента, когда было удалено вложение.

Таблица 22. Таблица [dbo].[WorkItemsFiles]

[dbo].[LinksAre]

Таблица [dbo].[LinksAre] содержит информацию об одной или нескольких связей.

Название поля Описание
[PartitionId] Столбец может использоваться для разделения таблицы. Если разделение не сконфигурировано, он всегда заполняется со значением 1.
[SourceID] ID рабочего элемента, из которого создана связь
[TargetID] ID рабочего элемента, к которому создана связь
[LinkType] Link Type ID для связи. Это поле является внешним ключом, ссылающимся на таблицу [dbo].[LinkTypes], которая содержит информацию о различных типах ссылок, которые могут быть созданы между двумя рабочими элементами.
[ReverseLinkType] Link Type ID для ссылки из целевого рабочего элемента на исходный рабочий элемент. Это поле является внешним ключом, ссылающимся на таблицу [dbo].[LinkTypes], которая содержит информацию о различных типах ссылок, которые могут быть созданы между двумя рабочими элементами.
[Created By] ID пользователя, который создал ссылку.
[Created Date] Дата и время создания ссылки.
[Comment] Текстовое поле, которое содержит комментарий, написанный пользователем при создании ссылки.
[Historical Added Date] Дата и время сохранения рабочего элемента, когда была давлена связь.

Таблица 23. Таблица [dbo].[LinksAre]

[dbo].[LinksWere]

Похоже на таблицу [dbo].[WorkItemsWere], [dbo].[LinksWere] содержит историческую информацию о связях между рабочими элементами. Когда связь между рабочими элементами отредактирована или удалена, создается новая строка в таблице [dbo].[LinksWere] считывая информацию неизмененной ссылки из таблицы [dbo].[LinksAre] перед записью в таблицу [dbo].[LinksAre] при редактировании или удалении.

[dbo].[WorkItemsDestroyed]

Таблица [dbo].[WorkItemsDestroyed] содержит список удаленных рабочих элементов. Когда рабочий элемент удаляется, его данные удаляются из таблиц [dbo].[WorkItemsAre] и [dbo].[WorkItemsWere] и создается новая запись в таблице [dbo].[WorkItemsDestroyed].

Название поля Описание
[PartitionId] Столбец может использоваться для разделения таблицы. Если разделение не сконфигурировано, он всегда заполняется со значением 1.
[ID] ID удаленного рабочего элемента.
[Changed Order] Поле отметки времени для записи
[Changer ID] ID пользователя, который удалил рабочий элемент.

Таблица 24. Таблица [dbo].[WorkItemsDestroyed]

[dbo].[WorkItemLinksDestroyed]

Когда рабочий элемент связан с другими рабочими элементами и источник или целевой объект удаляется, создается запись в таблице [dbo].[WorkItemLinksDestroyed]. Таблица имеет следующую схему.

Название поля Описание
[PartitionId] Столбец может использоваться для разделения таблицы. Если разделение не сконфигурировано, он всегда заполняется со значением 1.
[SourceID] ID рабочего элемента, из которого создана связь
[TargetID] ID рабочего элемента, к которому создана связь
[LinkType] Текстовое поле, которое содержит описание типа ссылки, которая была удалена.
[ChangeDate] Дата, когда ссылка была удалена
[DeletedTimeStamp] Отметка времени записи оригинальной ссылки, которая была удалена.
[TimeStamp] Отметка времени записи.

Таблица 25. Таблица [dbo].[WorkItemLinksDestroyed]

Posted in Microsoft, Team Foundation Server, TFS Practical Reporting Guide, Visual Studio | Отмечено: , , | Leave a Comment »

 
%d такие блоггеры, как: