Статьи

Объединить оставшуюся работу в файлах Excel с TFS

Если вы используете Agile- шаблон процесса в Team Foundation Server, у вас есть три столбца, связанных с планированием и отслеживанием продолжительности задачи, они называются:

  • Оригинальная смета
  • Выполненная работа
  • Оставшаяся работа

Единственная проблема состоит в том, что TFS агрегирует только оставшуюся работу в гибких платах , как вы можете видеть на рисунке 1 :

образ

Рисунок 1. Видны столбцы «Доска с исходной оценкой и выполненной работой»

В Codeplex имеется подключаемый модуль на стороне сервера под названием TFS Aggregator, который может решить эту проблему, но использование подключаемого модуля на стороне сервера может оказаться не оптимальным решением. Если вы используете службу TF в Azure, у вас нет возможности установить какой-либо подключаемый модуль на стороне сервера или какую-либо настройку шаблона процесса , но даже для локальной установки установка подключаемого модуля на стороне сервера может усложнить ваше обслуживание сервера, и вам следует доверять Автор плагина для его обновления по мере выхода новых версий TFS.

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

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

образ

Рисунок 2: Три пустых столбца добавлены на лист Excel, подключенный к TFS

Теперь нам нужно создать формулу для объединения данных всех задач в родительскую историю пользователя. В такой ситуации самый простой подход — создание собственного макроса Excel, например:

Function SumUntilNull(startCell As Range) As Integer
Application.Volatile
If startCell.Cells(1, 1) = "" Then
 
    Dim running As Integer
    running = 0
    Dim row As Integer
    row = 2
    While startCell.Cells(row, 1) <> ""
        running = running + startCell.Cells(row, 1)
        row = row + 1
    Wend
     
    SumUntilNull = running
Else
 
    SumUntilNull = 0
End If

Это очень простой макрос, он принимает Range и выполняет следующие операции:

  • Если первая ячейка диапазона не пуста, возвращается 0
  • если первая ячейка пуста, она начинает циклически повторять все ячейки ниже первой ячейки
  • для каждой ячейки, которая не пуста, она суммирует число с промежуточным итогом
  • цикл остановится, когда встретится первая пустая ячейка ниже первой

После того, как вы определили такую ​​функцию, которую можете использовать в новых столбцах, интересно, что вы можете просто начать вводить формулу (= SumUntilNull), а затем щелкнуть столбец «Оставшаяся работа» в ячейке слева, и Excel автоматически поймет поле, которое вы используете, как вы можете видеть на рисунке 2 .

образ

Рисунок 2: Используйте вашу функцию для создания агрегации

Когда вы закончите формулу, Excel скопирует формулу на все строки области, связанной с TFS. Хитрость заключается в следующем: для каждой строки, в которой присутствует пользовательская история (родительский элемент), значение ячейки равно нулю, поэтому ваша функция автоматически выполняет итерации по всем связанным задачам, пока не найдет другую пустую ячейку (конец интервала или следующая Пользовательская история). Это позволит собрать данные для вас.

образ

Рисунок 3: Ваша формула правильно агрегирует все значения от дочерних рабочих элементов (Task) до родительского (User Story)

Преимущество этого подхода заключается в том, что вы можете просто нажать «обновить» на вкладке «КОМАНДА», и Excel обновит все рабочие элементы с Team Foundation Server , загрузится новая задача, и ваши итоги обновятся автоматически без каких-либо дальнейших изменений.

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

Private Sub Worksheet_Change(ByVal Target As Range)
      
     For rownum = 3 To 100
        If Me.Cells(rownum, 2) = "Task" Then
            Me.Rows(rownum).EntireRow.Hidden = True
        Else
            Me.Rows(rownum).EntireRow.Hidden = False
        End If
 
    Next
 
End Sub

Приведенный выше макрос выполняет итерацию в первых 100 строках листа (он должен быть размещен внутри листа, в который вы загрузили рабочие элементы) и меняет видимость строки, скрывая все строки задач. Лучшее решение — добавить пару кнопок, чтобы скрыть / показать задачи , вместо того, чтобы запускать их для каждого изменения на рабочем листе :), но только для того, чтобы дать вам представление о том, чего вы можете достичь с помощью Excel.

образ+

Рисунок 3: Пара кнопок «Скрыть / Показать», чтобы просто скрыть / показать все строки задач

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

Вы можете скачать Excel, подключенный к виртуальной машине Брайана Келлера со всеми макросами, по этому адресу http://sdrv.ms/16lxfxJ 

Джан Мария