Использование пользовательских расширений для рабочих элементов TFS - Использование пользовательских элементов
ОГЛАВЛЕНИЕ
Использование пользовательских элементов
Не всегда использование встроенных элементов пользовательского интерфейса удовлетворяют необходимым условиям их использования. Для расширения возможностей и более гибкой работы с данными рекомендуется применять пользовательские расширения для интерфейса. Вот некоторые причины, которые могут подтолкнуть к использованию пользовательских элементов для динамических списков:
- Стандартные конструкторы правил не удовлетворяют все необходимые условия;
- Используются очень большие объемы данных;
- Данные используются из внешнего источника;
- Значение поля будет храниться в другом месте, а не в стандартом хранилище данных рабочих элементов;
Подготовка проекта
Для создания и редактирования пользовательских расширений интерфейса используется среда разработки MS Visual Studio 2005 или 2008, причем, использование одного и того же расширения допускается в обоих версиях MS Visual Studio.
Для нового пользовательского элемента необходимо создавать проект как «Windows Control Library» (см. Рисунок 8).
Рисунок 8. Создание нового проекта
Кроме того, класс, который создается, должен реализовывать интерфейс «IWorkItemControl». Этот интерфейс определен в сборке «Microsoft.TeamFoundation.WorkItemTracking.Controls.dll», которая обычно находится в каталоге «<Диск>:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies». Также необходим доступ к сборке «Microsoft.TeamFoundation.WorkItemTracking.Client.dll», в которой находится описание основных классов, которые необходимы для работы с рабочим элементом. Для того, чтоб получить доступ к интерфейсу и к основным классам рабочего элемента, необходимо добавить ссылку на сборки «Microsoft.TeamFoundation.WorkItemTracking.Controls.dll» и «Microsoft.TeamFoundation.WorkItemTracking.Client.dll» (см. Рисунок 9) и добавить в исходный код строки:
using Microsoft.TeamFoundation.WorkItemTracking.Client; using Microsoft.TeamFoundation.WorkItemTracking.Controls; |
Рисунок 9. Ссылки на сборки
Интерфейс «IWorkItemControl» имеет следующие важные составляющие (см. Таблица 1):
Таблица 1. Элементы интерфейса «IWorkItemControl»
Наименование | Тип | Описание |
WorkItemDatasource | Свойство | Определяет доступ к объекту рабочего элемента. Для использования этого свойства, его необходимо приводить к типу WorkItem (определение этого типа описано в сборке «Microsoft.TeamFoundation.WorkItemTracking.Controls.dll») |
WorkItemFieldName | Свойство | Свойство определяет наименование поля, с которым ассоциирован пользовательский элемент. Пользовательский элемент может быть ассоциирован с одним полем или не ассоциирован вовсе. |
InvalidateDatasource | Метод | Этот метод используется для перерисовки пользовательского элемента. |
SetSite | Метод | Передает указатель на интерфейс IServiceProvider. Используется если необходимо получить доступ сервисам VS Services. |
Clear | Метод | Используется для сброса содержимого пользовательского элемента. |
Properties | Свойство | Дает доступ ко всем атрибутам, которые были установлены для этого пользовательского элемента при описании рабочего элемента. |
BeforeUpdateDatasource | Обработчик события | События вызываются перед и после обновления значений объекта WorkItem соответственно. Когда значение, которое установлено в пользовательском элементе, изменяется, форма рабочего элемента выполняет для всех элементов (через вызов метода InvalidateDatasource) для обновления их значений. |
AfterUpdateDatasource | Обработчик события | |
ReadOnly | Свойство | Определяет доступ только для чтения к пользовательскому элементу. |
FlushToDatasource | Метод | Пользовательский элемент запрашивается для сброса значения в объект рабочего элемента. Обычно вызывается при операции сохранения или когда вышли из формы рабочего элемента. Этот метод можно не использовать, если значение пользовательского элемента устанавливается в объект рабочего элемента сразу после его изменения. |
В результате для нового пользовательского элемента должен получиться листинг, который приведен ниже.
using System; #region IWorkItemControl Members |
Регистрация пользовательского элемента
Перед началом использования пользовательского расширения и его отладкой, dll-файл, который содержит расширение, необходимо разместить в определенном месте. Все пользовательские элементы для MS Visual Studio 2005 находятся в специальной папке «Microsoft\Team Foundation\Work Item Tracking\Custom Controls», местонахождение которой система определяет в следующей последовательности:
- В первую очередь поиск папки производится по пути «Environment.SpecialFolder.CommonApplicationData»;
- Далее по пути «Environment.SpecialFolder.LocalApplicationData».
Если Вы используете MS Visual Studio 2008, то пользовательские элементы размещаются в подкаталоге «9.0» вышеприведенного каталога. Такой подход сделан для тех случаев, если на одном рабочем месте используются MS Visual Studio 2005 и MS Visual Studio 2008.
Примечание: Если на одном рабочем месте используются MS Visual Studio 2005 и MS Visual Studio 2008, то важно помнить, что пользовательское расширение необходимо перекомпилировать под каждую среду, в которой оно будет использоваться. Это связано с различными dll-зависимостями для каждой среды.
Кроме этого необходимо определить для каждого пользовательского расширения специальный (.wicc) файл, в котором находится описание элемента. Этот файл должен находиться вместе с dll-файлом пользовательского элемента и иметь наименование как «<имя_элемента>.wicc». Файл описания расширения представляет собой xml-файл и имеет следующую структуру:
<?xml version="1.0"?>
<CustomControl xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Assembly>DependentComboBox.dll</Assembly>
<FullClassName> DependentComboBox.DependentComboBoxControl</FullClassName>
</CustomControl>
Как видно из структуры, файл описания определяет следующее:
- Наименование сборки (элемент <Assembly>) пользовательского расширения;
- Полное наименование класса (элемент <FullClassName>), в котором это расширение реализован.
Отладка проекта
Для отладки пользовательского расширения можно использовать другую запущенную копию MS Visual Studio, в которой это расширение будет использоваться. Для этого необходимо сконфигурировать опцию отладки проекта, как это изображено на рисунке ниже (см. Рисунок 10) для MS Visual Studio 2005.
Размещение элемента на форме
Для редактирования форм, состава полей и состояний рабочего элемента используются два подхода:
- С помощью специального xml-файла, который используется для описания рабочих элементов, и утилит импорта (witimport) и экспорта (witexport) рабочих элементов из шаблона процесса на сервере. С правилами редактирования и составом xml-файла можно ознакомиться по адресу http://msdn.microsoft.com/en-us/library/ms243849.aspx ;
- С помощью графического редактора шаблона процесса, который входит в состав утилит Team Foundation Server Power Tools. Скачать и просмотреть полную информацию об этом продукте можно:
- Для MS Visual Studio 2005 - http://msdn2.microsoft.com/en-us/teamsystem/aa718351.aspx ;
- Для MS Visual Studio 2008 - http://msdn.microsoft.com/tfs2008/bb980963.aspx .