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

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

Руководство по настройке шаблона процесса TFS. Сценарий 3 – Проверка уровня вложения пути области

Posted by Шамрай Александр на Февраль 16, 2015

Краткий обзор бизнес-проблемы

Этот сценарий как заставить пользователя выбрать путь области, который является по крайней мере «X» уровня вложения. Мы изменим существующий Product Backlog Item из шаблона MSF Scrum, чтобы включить необходимую проверку допустимости.

Что в этом руководстве?

  • Настройка определения типа рабочего элемента для задачи
  • Принудительный выбор уровня вложения «Х» для пути области
  • Реализация и развертывание

Настройка

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

Мы возьмем шаблон рабочего элемента Product Backlog Item и настроим его. Эта настройка проверяет, что выбран правильный путь области:

  1. На форму будут выведены вкладка проверки допустимости или поле, сообщающие пользователю необходимые данные
  2. Запрещенное значение в сообщении проверки создаст подсказку в VS в верхней части рабочего элемента
  3. Пользователь может проверить сообщение для получения дополнительной информации
  4. После того, как пользователь выбирает допустимый Area Path, сообщение проверки обновляется допустимым значением; пользователь может теперь сохранить рабочий элемент

В центре подпрограммы проверки является поле сообщения. Во время изменений в пути области поле сообщения обновляется, чтобы указать, что выбранный путь области не соответствует желаемому критерию. Сообщение, которое мы представляем конечному пользователю, это запрещенное значение для этого поля. Это в свою очередь заставит Visual Studio отобразить предупреждающее сообщение в верхней части формы, сообщающее пользователю, чтобы необходимо сделать правильный выбор для поля Area Path.

Рисунок 24 – Пример сообщения об ошибке для области

Для целей этого руководства мы выполним следующую настройку Area Path.

Рисунок 25 – Пример настройки для пути области

Настройка позволит запретить пользователям выбирать корневой узел (FabrikamFiber), а также два узла второго уровня (Client и Web).

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

 

Шаги

Шаг Описание Сделано
1 Экспортировать тип рабочего элемента, который вы ходите модифицировать [ ]
2 Открыть файл типа рабочего элемента для настройки [ ]
3 Определить идентификаторы запрещенных путей области [ ]
4 Создать новое поле AreaPathValidation со специальным правилом [ ]
5 Создать вкладку Validation Info, чтобы отображать проблему проверки в рабочем элементе, и добавить созданное поле AreaPathValidation на новую вкладку Validation Info [ ]
6 Импортировать настроенный шаблон рабочего элемента [ ]
7 Протестировать настроенный рабочий элемент [ ]

Таблица 4 – Шаги решения

Реализация и развертывание

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

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

Чтобы выполнить это, мы можем использовать программу witadmin:

Перейдите в Пуск-> Microsoft Visual Studio 2012-> Visual Studio Tools и откройте Developer Command Prompt

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

witadmin exportwitd /collection:http://tfsserver:8080/tfs/CollectionName /p:TeamProjectName /f:WorkItemTypePathName.xml /n:Task

2. Откройте файл типа рабочего элемента для настройки, например:


Рисунок 26 – Первоначальный тип рабочего элемента Product BackLog Item

3. Определите идентификатор области для ограничиваемой области

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

Альтернативно, если вы имеете доступ к базе данных, вы можете запустить следующий запрос:

select tbl_nodes.path, treenodes.id from treenodes inner join tbl_nodes on convert(varchar(36), tbl_nodes.id) = treenodes.CSSNodeId order by tbl_nodes.path

Рисунок 27 – Запросы в Team Explorer

Это запустит редактор запросов

Рисунок 28 – Редактор запросов

Нажмите кнопку Параметры столбца на панели инструментов конструктора запросов. Это отобразит окно Параметры столбцов, которое позволит вам обновлять столбцы, которые будут включены в результат запроса, при его выполнении. Измените столбцы для включения AreaID и Area Path (я включил также IterationID и Iteration Path). Нажмите кнопку ОК.

Рисунок 29 – Настройка столбцов в редакторе запросов

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

Рисунок 30 – Запрос путей и идентификаторов области

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

Путь итерации Идентификатор итерации
FabrikamFiber 19
FabrikamFiber\Client 32
FabrikamFiber\Web 33

Таблица 5 – Идентифицированные пути области для запрета

В этом случае AreaID – 19,32 и 33. Значения и количество AreaID будет варьироваться в зависимости от вашей конкретной конфигурации Team Foundation Server

4. Создайте новое поле AreaPathValidation с определенным правилом.

Рисунок 31 – Поле AreaPathValidation

<FIELD name=»Area Path Validation» refname=»Demo.AreaPathValidation» type=»String»>

<COPY fromvalue» valueNo Errors» />

<PROHIBITEDVALUES>

<LISTITEM valueArea path has to be at least 3 levels deep» />

</PROHIBITEDVALUES>

<WHEN fieldSystem.AreaID» value19«>

<COPY fromvalue» valueArea path has to be at least 3 levels deep» />

</WHEN>

<WHEN fieldSystem.AreaID» value=»32″>

<COPY fromvalue» valueArea path has to be at least 3 levels deep» />

</WHEN>

<WHEN fieldSystem.AreaID» value33«>

<COPY fromvalue» valueArea path has to be at least 3 levels deep» />

</WHEN>

</FIELD>

Исходный код 7 – Поле AreaPathValidation

5. Создайте Вкладку Validation Info для отображения проблем проверки в рабочем элементе и добавьте на нее созданное поле AreaPathValidation.

Рисунок 32 – AreaPathValidation добавленное на форму

<Tab LabelValidation Info«>

<Group LabelValidation Errors«>

<Column PercentWidth100«>

<Control TypeFieldControl« FieldNameDemo.AreaPathValidation«
LabelArea path validation: » LabelPositionLeft» ReadOnlyTrue» />

</Column>

</Group>

</Tab>

Исходный код 8 — AreaPathValidation добавленное на форму

6. Импортируйте новый настроенный шаблон рабочего элемента

Выполните следующую команду импорта:

witadmin importwitd /collection:http://tfsserver:8080/tfs/CollectionName /f:WorkItemTypePathName.xml /p:TeamProjectName

7. Протестируйте настроенный рабочий элемент

Создайте новый рабочий элемент Product Backlog Item, обратите внимание, что появилась новая вкладка Validation Info. Вы также заметите, что присутствует индикатор ошибки проверки. Это, потому что область в настоящее время присвоена FabrikamFiber (корневой узел иерархии пути области).

Рисунок 33 – Вкладка Validation Info

При нажатии на вкладку Validation Info вы можете оценить сообщение.

Рисунок 34 – Начальная ошибка проверки при создании нового Product Backlog Item

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

Рисунок 35 – Заполненный новый Product Backlog Item с правильным Area Path

 

Итог

В этом пошаговом руководстве мы рассмотрели настройку шаблона процесса для типа рабочего элемента. Было показано как добавить поле, сделать его видимым на форме рабочего элемента, создать правило, которое обеспечит действительный Area Path, и определить AreaID и Area Path.

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

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

Руководство по настройке шаблона процесса TFS. Сценарий 2 – Принудительный выбор причины

Posted by Шамрай Александр на Февраль 11, 2015

Краткий обзор бизнес-проблемы

Сценарий позволяет пользователю выбрать причину при переходе рабочего элемента Task из состояния «TO DO» в состояние «Done».

Что в этом руководстве?

  • Настройка определения типа рабочего элемента для задачи
  • Принудительный выбор причины
  • Реализация и развертывание

Настройка

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

Мы возьмем шаблон рабочего элемента Task и настроим его. Когда пользователь перемещает рабочий элемент в состояние Done:

  1. Состояние изменяется из To Do в Done
  2. Поле Reason отображает сообщение с запросом значения
  3. Поле проверки будет отображаться на форме, сообщая пользователю о необходимых данных
  4. Во время изменения состояния сообщению проверки присваивается сообщение об ошибке (это также запрещенное значение)
  5. Запрещенное значение в сообщении проверки создаст подсказку в VS в верхней части рабочего элемента
  6. Пользователь может просмотреть сообщение проверки для получения дополнительной информации
  7. После того как пользователь выбирает правильную причину, сообщение проверки получает обновление до допустимого значения; Пользователь теперь может сохранить рабочий элемент

В центре подпрограммы проверки является поле сообщения. При переходе из состояния To Do в Done мы установим в поле сообщение, информирующее пользователя, что ему нужно сделать выбор. Сообщение, которое мы представляем для конечного пользователя, это запрещенное значение для этого поля. Что в свою очередь это заставит Visual Studio отобразить предупреждающее сообщение в верхней части формы, информируя пользователей, что нужно сделать выбор для в поле Reason.

Шаги

Шаг Описание Сделано
1 Экспортировать тип рабочего элемента, который вы ходите использовать как базовый для нового типа рабочего элемента [ ]
2 Отредактировать переход из To-Do в Done и установить новый ReasonSelectedValidation [ ]
4 Импортировать новый настроенный шаблон рабочего элемента [ ]
5 Протестировать настроенный тип рабочего элемента с измененными состояниями [ ]

Таблица 3 – Шаги решения

Реализация и развертывание

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

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

Чтобы выполнить это, мы можем использовать программу witadmin:

Перейдите в Пуск-> Microsoft Visual Studio 2012-> Visual Studio Tools и откройте Developer Command Prompt

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

witadmin exportwitd /collection:http://tfsserver:8080/tfs/CollectionName /p:TeamProjectName /f:ValidatedTask.xml /n:Task

2. Откройте файл типа рабочего элемента для настройки, например:


Рисунок 13 – Первоначальный тип рабочего элемента Task

3. Добавьте новое поле ReasonSelectedValidation со следующими правилами:

Рисунок 14 – Поле ReasonSelectedValidation

<FIELD nameReasonSelectedValidation» refnameDemo.ReasonSelectedValidation» typeString«>

<PROHIBITEDVALUES>

<LISTITEM valueYou must select a reason to close this task«> </LISTITEM>

</PROHIBITEDVALUES>

<HELPTEXT>You must select a reason when closing a task </HELPTEXT>

</FIELD>

Исходный код 3 – Поле проверки выбранной итерации

4. Создайте новую вкладку Validation Info для отображения проблем проверки внутри рабочего элемента и добавьте новое поле ReasonSelectedValidation на форму типа рабочего элемента.

Рисунок 15 – Поле ReasonSelectedValidation добавленное на форму рабочего элемента

<Tab LabelValidation Info«>

<Group LabelValidation Errors«>

<Column PercentWidth100«>

<Control TypeFieldControl» FieldNameDemo.ReasonSelectedValidation» LabelReason Selected» LabelPositionLeft» ReadOnlyTrue» />

</Column>

</Group>

</Tab>

Исходный код 4 — Поле ReasonSelectedValidation добавленное на форму рабочего элемента

Тут также нужно проверить, что поле System.Reason не настроено как доступное только для чтения (как бывает в случае с некоторыми из встроенных типов рабочих элементов). Ниже приводится то, что вам нужно найти:

Рисунок 16 — System.Reason как поле только для чтения

В этом случае поле помечено как только для чтения, поэтому этот атрибут нужно удалить, и результат будет следующим:

Рисунок 17 — System.Reason доступное для редактирования

5. Модифицируйте переход из состояния To Do в Done, установив поле ReasonSelectedValidation в неправильное значение

Рисунок 18 – Неправильное поле ReasonSelectedValidation при изменении состояния

<FIELDS>

<FIELD refnameDemo.ReasonSelectedValidation«>

<COPY fromvalue» valueYou must select a reason to close this task» />

</FIELD>

</FIELDS>

6. Отредактируйте секцию причин для обновления поля ReasonSelectedValidation значением без ошибки, когда причина установлена

Рисунок 19 – Изменение в переходах между состояниями

<REASONS>

<DEFAULTREASON valueSelect a Reason…» />

<REASON valueWork Finished«>

<FIELDS>

<FIELD refnameDemo.ReasonSelectedValidation«>

<COPY fromvalue» valueNo Errors» />

</FIELD>

</FIELDS>

</REASON>

<REASON valueObsolete«>

<FIELDS>

<FIELD refnameDemo.ReasonSelectedValidation«>

<COPY fromvalue» valueNo Errors» />

</FIELD>

</FIELDS>

</REASON>

<REASON value=»Deferred»>

<FIELDS>

<FIELD refnameDemo.ReasonSelectedValidation«>

<COPY fromvalue» valueNo Errors» />

</FIELD>

</FIELDS>

</REASON>

</REASONS>

7. Импортируйте новый настроенный шаблон рабочего элемента

Выполните следующую команду импорта:

witadmin importwitd /collection:http://tfsserver:8080/tfs/CollectionName /f:WorkItemTypePathName.xml /p:TeamProjectName

8. Протестируйте изменения состояний в настроенном рабочем элементе

Создайте новый рабочий элемент Task, обратите внимание, что появилась новая вкладка Validation Info.

Рисунок 20 – Вкладка Validation Info

Заполните рабочий элемент Task, указав необходимую, информацию и сохраните его. Это установит задачу в состояние To-Do. Ниже приведен пример заполненного рабочего элемента:

Рисунок 21 – новая заполненная задача

Измените состояние на Done, вы заметите, что Validation Info обновится сразу сообщением «You must select a reason to close the task».

Рисунок 22 – Рабочий элемент Task с ошибкой проверки

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

Рисунок 23 — Рабочий элемент Task с исправленной ошибкой проверки

Итог

В этом руководстве мы рассмотрели создание и настройку нового типа рабочего элемента шаблона процесса на основе встроенного типа рабочего элемента Task. Настройки показали, как добавить поле, сделать его видимым в пользовательском интерфейсе рабочего элемента, создать правила, гарантирующие, что требуется причина, если новый рабочий элемент был помечен как «Done».

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

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

Руководство по настройке шаблона процесса TFS. Сценарий 1 – Закрытие итерации

Posted by Шамрай Александр на Февраль 9, 2015

Краткий обзор бизнес-проблемы

Этот сценарий охватывает аспекты блокировки одной или нескольких итераций так, чтоб они больше не могли использоваться после завершения итерации. Мы изменим существующий Product Backlog Item из шаблона MSF Agile для включения необходимой проверки.

Что в этом руководстве?

  • Настройка шаблона процесса
  • Блокирование пути итерации
  • Реализация и развертывание

Настройка

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

Мы возьмем шаблон рабочего элемента Product Backlog Item и настроим его. Эта настройка обеспечит проверку, что выбран допустимый, активный путь итерации, проще говоря, он проверен.

  1. Вкладка проверки или поле будут отображаться на форме, сообщая пользователю о необходимых данных
  2. Запрещенное значение в сообщении проверки создаст подсказку в VS в верхней части рабочего элемента
  3. Пользователь может проверить предупреждение для получения дополнительной информации
  4. После того, как пользователь выберет правильный Iteration Path, сообщение проверки обновится как допустимое значение; Пользователь теперь может сохранить рабочий элемент

Основой проверки является поле сообщения. Во время изменения пути итерации обновляется поле сообщение, чтобы отражать, что выбранная итерация не соответствует желаемому критерию. Сообщение, которое мы представляем для конечного пользователя, это запрещенное значение для этого поля. Что в свою очередь в Visual Studio отобразится как предупреждающее сообщение в верхней части формы, информирующее пользователя сделать правильный выбор для поля Iteration Path.

Рисунок 1 – Пример сообщения с ошибкой для итерации

В этом руководства мы будем использовать следующие установки итерации.

Рисунок 2 – Пример настройки итераций

Настройка позволит вам запретить пользователю выбирать Корневой узел (FabrikamFiber). Кроме этого, шаблон рабочего элемента нужно будет обновляться каждый раз, когда закрывается итерация для обеспечения того, что новые элементы могут быть открыты только в активной итерации.

Шаги

Шаг Описание Сделано
1 Экспортировать тип рабочего элемента, который вы ходите настроить [ ]
2 Определить идентификатор итерации для ограничиваемой итерации [ ]
3 Отредактировать экспортированный файл xml и применить изменения [ ]
4 Импортировать настроенный шаблон рабочего элемента [ ]
5 Протестировать настроенный тип рабочего элемента [ ]

Таблица 1 – Шаги решения

Реализация и развертывание

Проверка реализуется путем создания нового поля, которое отображается в пользовательском интерфейсе, с некоторыми правилами

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

Чтобы выполнить это, мы можем использовать программу witadmin:

Перейдите в Пуск-> Microsoft Visual Studio 2012-> Visual Studio Tools и откройте Developer Command Prompt

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

witadmin exportwitd /collection:http://tfsserver:8080/tfs/CollectionName /p:TeamProjectName /f:ProductBacklogItem.xml /n: ProductBacklogItem

2. Откройте файл типа рабочего элемента для настройки, например:


Рисунок 3 – Первоначальный тип рабочего элемента Product Backlog Item

3. Определите идентификатор итерации для ограничиваемой итерации

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

Альтернативно, если вы имеете доступ к базе данных, вы можете запустить следующий запрос:

select tbl_nodes.path, treenodes.id from treenodes inner join tbl_nodes on convert(varchar(36), tbl_nodes.id) = treenodes.CSSNodeId order by tbl_nodes.path

Рисунок 4 – Запросы в Team Explorer

Это запустит конструктор запросов

Рисунок 5 – Редактор запросов

Нажмите кнопку Параметры столбца на панели инструментов редактора запросов. Это отобразит окно Параметры столбцов, которое позволит вам обновлять столбцы, которые будут включены в результат запроса, при его выполнении. Измените столбцы для включения IterationID и Iteration Path (я включил также AreaID и Area Path). Нажмите кнопку ОК.

Рисунок 6 – Настройка столбцов в редакторе запросов

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

Рисунок 7 – Запрос путей и идентификаторов итераций

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

Путь итерации Идентификатор итерации
FabrikamFiber 19
FabrikamFiber\Iteration 0 38

Таблица 2 – Идентифицированные пути итерации для запрета

В этом случае IterationID — 19 и 38. Значения и количество IterationID будет варьироваться в зависимости от конкретной конфигурации Team Foundation Server

4. Создайте новое поле IterationPathValidation с определенным правилом.

Когда закрыты дополнительные итерации, выделенный раздел в PBI.xml ниже нужно будет скопировать с новым IterationID, чтобы блокировать эти дополнительные итерации.

Рисунок 8 – Поле IterationPathValidation

<!—
************* Adding New Field **************************** —>

<FIELD nameIteration Path Validation» refnameDemo.IterationPathValidation» typeString» reportabledimension» >

<COPY fromvalue» value=»» />

<PROHIBITEDVALUES>

<LISTITEM valueIteration path has to be at least 2 levels deep» />

<LISTITEM valueThe selected iteration has been completed. Log Product Backlog Items against a future iteration» />

</PROHIBITEDVALUES>

<WHEN fieldSystem.IterationID» value=»3«>

<COPY fromvalue» valueIteration path has to be at least 2 levels deep» />

</WHEN>

<WHEN fieldSystem.IterationID» value18«>

<COPY fromvalue» valueThe selected iteration has been completed. Log Product Backlog Items against a future iteration» />

</WHEN>

</FIELD>

<!— END ************* Adding New Field **************************** —>

Исходный код 1 – Поле проверки пути итерации

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

Создайте вкладку Validation Info для отображения проблем проверки в рабочем элементе и добавьте на нее созданное поле IterationPathValidation.

Рисунок 9 – IterationPathValidation добавленное на форму

<Tab LabelValidation Info«>

<Group LabelValidation Errors«>

<Column PercentWidth100«>

<Control FieldNameDemo.IterationPathValidation» TypeFieldControl» LabelIteration path validation: » LabelPositionLeft» ReadOnlyTrue» />

</Column>

</Group>

</Tab>

Исходный код 2 — IterationPathValidation добавленное на форму

5. Импортируйте новый настроенный шаблон рабочего элемента

Предварительно, как хорошая практика, вы можете проверить XML определение перед импортом в ваш Командный Проект:

witadmin importwitd /collection:http://tfsserver:8080/tfs/CollectionName /f:ProductBacklogItem.xml /p:TeamProjectName /v

Выполните следующую команду импорта:

witadmin importwitd /collection:http://tfsserver:8080/tfs/CollectionName /f:ProductBacklogItem.xml /p:TeamProjectName

6. Протестируйте настроенный рабочий элемент

Создайте новый рабочий элемент Product Backlog Item, обратите внимание, что появилась новая вкладка Validation Info. Вы также заметите, что присутствует индикатор ошибки проверки. Это потому, что итерация в настоящее время присвоена FabrikamFiber (корневой узел иерархии пути итерации).

Рисунок 10 – Вкладка Validation Info

При нажатии на вкладку Validation Info мы увидим отображаемое на ней сообщение.

Рисунок 11 – Начальная ошибка проверки при создании нового Product Backlog Item

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

Рисунок 12 – Заполненный новый Product Backlog Item с правильным Iteration Path

Итог

В этом пошаговом руководстве мы рассмотрели настройку шаблона процесса для типа рабочего элемента. Было показано как добавить поле, сделать его видимым на форме рабочего элемента, создать правило, которое обеспечит действительный Iteration Path, и определить IterationID и Iteration Path.

Т.к. этот вид настройки типа рабочего элемента делается в одном проекте, а если у вас есть намерение иметь такую настройку для будущих командных проектов, необходимо обновить шаблон процесса. Пожалуйста, смотрите http://msdn.microsoft.com/en-us/library/ms194972.aspx о том, как обновить шаблон процесса.

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

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

Posted by Шамрай Александр на Февраль 5, 2015

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

Содержание

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

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

Posted by Шамрай Александр на Февраль 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 Шамрай Александр на Февраль 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 Шамрай Александр на Февраль 5, 2015

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

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

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

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

Posted by Шамрай Александр на Декабрь 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 »

Практическое руководство по отчетности TFS. Адаптеры данных и Хранилище TFS

Posted by Шамрай Александр на Декабрь 27, 2014

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

 

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

Рисунок 9. Архитектура Хранилища данных

Вы можете найти информацию о том, как разработать адаптер для более ранних версий TFS из публикаций от Матиаса Скольда, Стива Сен-Жана и Стивена Райта. Если вам нужно что-то более директивное, то есть загружаемый код и пошаговое руководство на веб-сайте корпорации Майкрософт.

Основы разработки адаптеров хранилища TFS

Реализация адаптера

Реализуются два интерфейса, когда вы получаете данные из операционных таблиц и вставляете их в хранилище данных TFS: IWarehouseAdapter и IDataStore. Интерфейс IWarehouse используется службой хранилища данных TFS для вызова пяти основных адаптеров по определенному графику для изменения данных. Интерфейс IDataStore используется службой хранилища данных TFS для взаимодействия в хранилище данных TFS.

IWarehouseAdapter имеет четыре метода:

  • Initialize: создает объекты, которые взаимодействуют с операционным хранилищем и хранилищем данных.
  • MakeSchemaChanges: создает новый атрибут измерения в хранилище. Этот атрибут содержит описание политики переопределения.
  • MakeDataChanges: вызывается каждый раз, когда вы обновляете хранилище. В этом адаптере метод проверяет все наборы изменений, сделанные с времени последнего обновления хранилища. Если набор изменений содержит описание переопределения политики, он вызывает метод SavePolicyOverrideCommentDimAttribute, который сохраняет описание в хранилище.
  • Cancel: когда вы хотите остановить адаптер.

Используя пример CSharp Assembly Churn, который предоставляется Microsoft, вы увидите лучшие практики создания отдельного таблицы измерения для данных, которые требуется добавить в хранилище данных TFS. Вам нужно иметь в виду, что версии TFS разные и вам не нужно быть привязанным к их таблицам, так как нет никакой гарантии, что они будут такими же после применения накопительного обновления или обновления версии.

Этот пример содержит SQL и классы, используемые при создании таблиц измерений, фактов и хранимых процедур, используемых в хранилище данных TFS и SQL.

Реализация с использованием адаптера для внесения данных изменений находится в классе CSharpAssemblyCodeChurnSampleAdapter. Этот класс содержит метод ProcessChangesets, который используется для получения сведений о сборке для файлов и их добавления в хранилище данных TFS.

Развертывание адаптера

Хорошим подходом является тестирование развертывания в непроизводственной среде. Можно рассмотреть использование виртуальной машины Брайана Келлера, если у вас только одна среда.

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

  • Скопируйте сборку в папку plugins хранилища
    • «C:\Program Files\Microsoft Team Foundation Server 11.0\Application Tier\Web Services\bin\Plugins» для TFS 2012
    • «C:\Program Files\Microsoft Team Foundation Server 12.0\Application Tier\Web Services\bin\Plugins» для TFS 2013
  • Перезапустите IIS.
  • Откройте браузер и перейдите по адресу https://localhost/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx?op=GetProcessingStatus и нажмите кнопку Invoke.
  • Продолжайте делать это до тех пор, пока статус возвращается как Idle.
  • Убедитесь, что это не вызвало никаких проблем, проверив журнал событий приложений Windows на отсутствие каких-либо ошибок.

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

Рекомендуется выполнять мониторинг состояния обработки хранилища данных TFS. Отчеты о состоянии обработки куба Гранта Холлидея обеспечат информацию об ошибках, которые возникают.

Важная информация

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

  • Важные изменения схемы в структуре таблицы хранилища:
    • TFS 2010: до сих пор используется много внешних ключей каскадного удаления, что убивает производительности
    • TFS 2010 SP1: удалено большинство связей с внешними ключами, адаптерам необходимо «очищать после себя»
    • TFS 2012/2013: едва ли были какие-либо изменения в хранилище данных, но схема операционного хранилища была значительно изменена, особенно в области сборок
  • Версии платформы .NET framework, параметры ЦП для адаптеров
    • TFS 2010: .NET 4, AnyCPU, с ожидаемой загрузкой в среде x64
    • TFS 2012: .NET 4.5, AnyCPU, с ожидаемой загрузкой в среде x64
    • TFS 2013: .NET 4.5.1, AnyCPU, с ожидаемой загрузкой в среде x64
  • Минимальные требования SQL Server
    • TFS 2010 (SQL Server 2008)
    • TFS 2012 (SQL Server 2008 R2)
    • TFS 2013 (SQL Server 2012)
    • SQL 2014 не был проверен
  • Сборки для ссылки и где их найти
    • Описания SK/BK для существующих измерений и фактов
    • Отладка адаптера (присоединить Visual Studio к службе TFS Job)
    • Срабатывание адаптера (вызов веб-службы хранилища)

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

Рабочий элемент TFS с системными полями

Posted by Шамрай Александр на Декабрь 23, 2014

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

Такой шаблон типа рабочего элемента есть и его можно скачать по этой ссылке.

Список полей рабочего элемента:

Name Reference Name Type Reportable Help Text
Iteration Path System.IterationPath TreePath dimension The iteration within which this task will be completed
Iteration ID System.IterationId Integer
External Link Count System.ExternalLinkCount Integer
Team Project System.TeamProject String dimension
Hyperlink Count System.HyperLinkCount Integer
Attached File Count System.AttachedFileCount Integer
Node Name System.NodeName String
Area Path System.AreaPath TreePath dimension The area of the product to which this task contributes
Revised Date System.RevisedDate DateTime detail
Changed Date System.ChangedDate DateTime dimension
ID System.Id Integer dimension
Area ID System.AreaId Integer
Authorized As System.AuthorizedAs String
Title System.Title String dimension Work required and how this will implement a User Story
State System.State String dimension Active = work remains to be done. Closed = tested and checked in.
Authorized Date System.AuthorizedDate DateTime
Watermark System.Watermark Integer
Rev System.Rev Integer dimension
Changed By System.ChangedBy String dimension
Reason System.Reason String dimension The reason why the task is in its current state
Assigned To System.AssignedTo String dimension The person currently working on this task
Work Item Type System.WorkItemType String dimension
Created Date System.CreatedDate DateTime dimension
Created By System.CreatedBy String dimension
Description System.Description HTML What to do, pointers to resources and inputs, design notes, exit criteria
History System.History History Discussion thread plus automatic record of changes
Related Link Count System.RelatedLinkCount Integer
Tags System.Tags PlainText

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

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