2011-01-21 1 views
1

Я пытаюсь использовать новый серверный плагин функции для TFS 2010 (я получил основы того, как начать делать это с here и here)Обновление TFS рабочего элемента с использованием методов на сторону сервера

It отлично работает и во много раз быстрее, чем обычный способ веб-службы обработки событий TFS.

Но методы на стороне сервера очень не документированы. Я понял, как получить рабочий элемент (через Microsoft.TeamFoundation.WorkItemTracking.Server.DataAccessLayerImpl.GetWorkItemGetWorkItemXml)

Но делать обновление в заблуждении меня. Все методы обновлений принимают XML. Но XML вы получите обратно от GetWorkItemXml не правильный формат (он говорит, что «Действие« FIELD »не разрешено).

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

Есть ли у кого-нибудь опыт работы на стороне сервера с TFS? Можете ли вы дать мне указатель на то, как сделать обновление для рабочего элемента, используя методы на стороне сервера?

+0

Какие методы вы используете для обновления рабочих элементов? –

ответ

2

К сожалению, объектная модель сервера для отслеживания рабочего элемента не очень полезна. Если вы не хотите серьезно тяжело поднимать себя, лучший вариант - использование объектной модели клиента (Microsoft.TeamFoundation.WorkItemTracking.Client.dll).

Если вы хотите работать с сервером OM для рабочих элементов, вам необходимо работать в пакетах XML. Они не документированы/не поддерживаются, поэтому YMMV. Вот «лучшая» документация, что есть на них: http://marshalbyrefobject.blogspot.com/search/label/Work%20Item%20Tracking

А вот пример того, что один выглядит следующим образом:

<Package Product=http://your_server:8080/WorkItemTracking/v1.0/ClientService.asmx DisableNotifications=”True” xmlns=””> 
    <InsertWorkItem ObjectType=”WorkItem” BypassRules=”True”> 
    <ComputedColumns> 
     <ComputedColumn Column=”System.RevisedDate”> 
    </ComputedColumns> 
    <Columns> 
     <Column Column=”System.WorkItemType”> 
     <Value>Bug</Value> 
     </Column> 
     <Column Column=”System.AreaId”> 
     <Value>40</Value> 
     </Column> 
     <Column Column=”System.CreatedBy” Type=”String"/> 
    </Columns> 
    <InsertText FieldName=”Microsoft.VSTS.CMMI.Analysis” FieldDisplayName=”Analysis”>text goes here </InsertText> 
    </InsertWorkItem> 
</Package>