Поддержка динамической ниспадающей модели управления проектами.

О плагине

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

Известные проблемы

В браузерах отличных от Firefox некорректно отображаются границы групп по причине неверной подддержки CSS.

Настройка

Все настройки из данного раздела размещаются в конфигурации сервера. Конфигурацию плагина рекомендуется сделать вложенной конфигурацией, включённой в основную.

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

Пример настройки, 10 - код очереди процессов.

blow:board.1.title=Тест
blow:board.1.queueId=10
blow:board.1.stringExpressionCell=<<END
     result = process.getDescription() + " [<b>" + ctxProcessStatusMap[process.getStatusId()] + "</b>]";
     return result;
END

В JEXL процессор для вычисления текста ячейки помимо стандартных переменных и process передаются значения, выбранные в столбцах очереди процессов как переменные colX, где X - код столбца.

С их помощью возможен вывод дополнительных данных в ячейках, например ссылок на JIRA тикеты, выводимые в колонке очереди с кодом 5:

blow:board.1.title=Product
blow:board.1.queueId=1
blow:board.1.stringExpressionCell=<<END
     result = process.getDescription() + " [<b>" + ctxProcessStatusMap[process.getStatusId()] + "</b>]";
     jiraTicket = params.get("col5");
     if (jiraTicket) {
          for (ticketId : jiraTicket.split(","))
             result += " <a target='_blank' href='https://jira/browse/" + ticketId + "'>" + ticketId + "</a>";
     }
     return result;
END

Работа

Blow план отображает иерархию, порядок выполнения и исполнителей процессов. Форма представления табличная, столбцы таблицы - исполнители либо группы решения. По вертикали в ячейках отображаются процессы: код со ссылкой на открытие и текст описания, сгенерированный JEXL выражением.

Все процессы представляются в виде дерева, связанного типом связи Порождён. Проект, подпроект, задача - всё представляется в виде процессов. Некоторые из процессов существуют длительное время, другие выполняются и закрываются.

board

Выбираемые для плана процессы должны быть открытыми (пустая дата завершения).

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

Процессы на каждом уровне сортируются следующим образом:

  • назначенные процессы;

  • процессы с дочерними процессами, сортировка обратно приоритету;

  • не назначенные процессы, сортировка обратно приоритету.

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

Процессы, содержащие дочерние, выделяются полужирным шрифтом. В нижней области таблицы отображается виртуальный родительский процесс НЕ РАСПРЕДЕЛЁННЫЕ. Ячейки с процессами можно перетаскивать мышью, изменяя предка. Для преобразования процесса в независимый в качестве предка использовать НЕ РАСПРЕДЕЛЁННЫЕ.

При наведении мыши на процесс выделяется он сам и все его дочерние процессы. Если процесс имеет нулевой приоритет - его приоритет наследуется от родительского процесса.

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

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

Основная идея Blow диаграммы состоит в постепенном всплывании процессов наверх с распределением их среди исполнителей. Процессы создаются и структурируются по группам внизу и поднимаются вверх для исполнения.

Фильтры

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

filters

Пример конфигурации фильтра по статусу In progress [4] для доски с кодом 1:

blow:board.1.filter.1.color=green
blow:board.1.filter.1.stringExpression=<<END
     count = 0;
     for (item : items) {
          if (item.getProcess().getStatusId() =~ [4]) {
               count += 1;
               item.addFilterId(filter.getId());
          }
     }
    return "In progress: <b>[" + count + "]</b>";
END

Пример вывода кнопки с общим количеством процессов для доски с кодом 1:

blow:board.1.filter.1.color=#b2b02a
blow:board.1.filter.1.stringExpression=<<END
     return "Всего: <b>[" + items.size() + "]</b>";
END

Открытый интерфейс

При добавлении в конфигурации плана параметра openUrl равным он станет доступным в открытом интерфейсе с адресом ../open/blow/<openUrl>. Пример открытого плана разработки BGERP.

Дальнейшее развитие

  • Отображение параметров: задач по исполнителям, оценочного и затраченного времени, бюджетов с суммированием по уровням.