
Plandora
Открытая система управления проектами на Java
Планируйте, отслеживайте и управляйте проектами с помощью диаграмм Ганта, гибких досок, рабочих процессов и интеграций через платформу с открытым исходным кодом на Java.
Что такое Plandora?
Plandora — зрелая система управления проектами с открытым исходным кодом, написанная на Java, предназначенная для корпоративного планирования, отслеживания и совместной работы над проектами. Она предоставляет комплексные инструменты, включая диаграммы Ганта, agile‑доски, автоматизацию рабочих процессов, планирование ёмкости ресурсов и пользовательскую отчётность через JasperReports. Благодаря встроенной поддержке интеграций, таких как JIRA, SVN и RT4, Plandora позволяет командам управлять сложными проектами, сохраняя прослеживаемость и прозрачность между отделами. Её гибкая система метаполей и настраиваемые формы позволяют организациям адаптировать платформу к уникальным рабочим процессам без изменения кода.
Система делает акцент на удобстве использования и расширяемости, предлагая базу знаний с поиском, похожим на Google, многоуровневыми опросами проектов, управлением рисками и списками задач TO-Do. Plandora поддерживает как традиционные каскадные, так и гибкие методологии через сбалансированную карту показателей, гаджеты сгорания итераций и иерархии макрозадач. С момента перезапуска в 2023 году проект исправил более 30 критических ошибок, улучшил производительность, добавил импорт/экспорт CSV и расширил возможности отчетности — включая плановое создание отчетов и вывод в формате JPG. Разработчики могут вносить вклад через репозиторий [GitHub Plandora](https://github.com/Cynjut/Plandora) и расширять функциональность с помощью модульной архитектуры и шаблонов JDBC/DAO.
Начало работы с Plandora
Plandora — это веб‑приложение на Java, обычно развертываемое на Tomcat или других серверах JEE. Чтобы начать, клонируйте исходный код из репозитория [Plandora GitHub](https://github.com/Cynjut/Plandora), убедитесь, что установлены Java 8+ и Maven, и соберите WAR‑файл с помощью `mvn clean package`. Разверните сгенерированный WAR в вашем контейнере сервлетов. Система поддерживает как пул соединений Tomcat, так и прямые JDBC‑соединения (настраиваются в `web.xml`). После начальной настройки сконфигурируйте учётные данные базы данных, параметры SMTP и интегрируйте с внешними системами, такими как JIRA или SVN. Plandora включает встроенные мастера настройки основных компонентов, таких как рабочие процессы, метаполя и роли пользователей, чтобы ускорить развертывание.
Сборка и развертывание Plandora через Maven
# Clone the repository
git clone https://github.com/Cynjut/Plandora.git
cd Plandora
# Build the WAR file
mvn clean package
# Deploy to Tomcat
cp target/plandora.war $TOMCAT_HOME/webapps/
Диаграммы Ганта с календарными событиями и вехами
Диаграмма Ганта Plandora визуализирует сроки проектов с поддержкой макрозадач, контрольных точек и календарных событий. Она динамически фильтрует ресурсы и задачи, обеспечивая точный контроль прогресса даже при назначении или удалении ресурсов. Теперь диаграмма включает маркеры контрольных точек и интегрируется с календарями проекта, отражая рабочие дни и праздники. Пользователи могут экспортировать представления Ганта в форматы CSV, XLS или JPG для отчетности и обмена. Улучшения производительности обеспечивают плавную отрисовку больших наборов данных, а система корректно обрабатывает усечение задач при импорте из MSProject. Пользовательские поля и метаполя могут отображаться непосредственно на сетке Ганта, предоставляя более богатый контекст без выхода из представления временной шкалы. Это делает Plandora идеальной как для традиционных менеджеров проектов, так и для гибридных команд, использующих сочетание agile и waterfall.
Экспорт диаграммы Ганта в JPG через запланированный отчет
// Use Report2File agent to schedule Gantt export
Report2File report = new Report2File();
report.setReportName("ProjectGantt");
report.setOutputFormat("jpg");
report.setSchedule("0 0 2 * * ?"); // Daily at 2 AM
report.setFilePath("/reports/gantt/");
report.execute();
Интеграция с JIRA для импорта задач
Plandera включает специальный агент для импорта задач JIRA в виде запросов Plandora, включая вложения и метаданные. Эта интеграция соединяет систему тикетирования и планирование проектов, позволяя нетехническим заинтересованным сторонам использовать RT4 или JIRA, в то время как разработчики управляют работой в Plandora. Процесс импорта сохраняет взаимосвязи задач, приоритет, исполнителей и метки времени. Он поддерживает фильтрацию по проекту, статусу или диапазону дат и эффективно обрабатывает большие партии. После импорта задачи становятся полноценными запросами Plandora с редактируемыми полями, переходами рабочего процесса и иерархией задач. Эта функция особенно ценна для организаций, мигрирующих из JIRA или поддерживающих двойные системы. Разработчики могут расширять агент через конфигурацию или пользовательские плагины для поддержки дополнительных полей JIRA или пользовательских полей.
Импортировать задачи JIRA через командный агент
// Example agent invocation (simplified)
JiraImporter importer = new JiraImporter();
importer.setJiraUrl("https://jira.example.com");
importer.setUsername("api_user");
importer.setPassword("token");
importer.setProjectKey("PROJ");
importer.setIssueFilter("status = 'Done'");
importer.setImportAttachments(true);
importer.execute();
Управление ресурсными мощностями и сравнение
Форма расчёта ресурсов Plandora позволяет детально планировать и отслеживать доступность команды по сравнению с фактическим использованием. Она вычисляет использованную ёмкость на основе назначенных задач, итераций и табелей, с фильтрами для нулевых/пустых значений и диапазонов дат. Пользователи могут сравнивать оценочную и фактическую ёмкость бок о бок, чтобы выявлять пере- или недоиспользование. Система корректно поддерживает освобождённые ресурсы, исправляя ошибки запросов к БД, когда участники удаляются из всех проектов. Данные о ёмкости интегрируются с диаграммами Ганта и гаджетами сгорания, позволяя реалистично планировать спринты и вехи. Менеджеры могут динамически корректировать оценки, и изменения распространяются на последующие отчёты и панели мониторинга. Эта функция критична для управления ресурсами на уровне портфеля и прогнозирования в многопроектных средах.
Фильтрация ресурсов по нулевым значениям
// Pseudo-code for capacity filtering logic
ResourceCapacityFilter filter = new ResourceCapacityFilter();
filter.setProjectId(projectId);
filter.setShowZeroValues(true);
filter.setCompareEstimates(true);
List entries = capacityService.getFilteredCapacities(filter);
for (CapacityEntry entry : entries) {
if (entry.getUsed() == 0) {
System.out.println("Unused capacity: " + entry.getResourceName());
}
}
Автоматизация рабочего процесса и настройка метаполей
Движок рабочего процесса Plandora поддерживает настраиваемые цепочки одобрения, переходы статусов и последующие комментарии, связанные с запросами, задачами и событиями. Всплывающий интерфейс рабочего процесса теперь отображает описания связанных запросов и полную историю комментариев, улучшая отслеживаемость. Метаполя позволяют администраторам определять пользовательские атрибуты (например, теги соответствия, идентификаторы клиентов) для задач, запросов и проектов — включая обязательные поля, проверяемые через валидацию UI. Эти поля отображаются в сетках, отчетах и экспортах, обеспечивая гибкое моделирование данных без изменения кода. Система также поддерживает отображение метаполей в основных сетках форм и импорт CSV, гарантируя согласованность точек ввода данных. Такая расширяемость делает Plandora подходящей для регулируемых отраслей и сложных организационных структур, требующих аудиторских следов и стандартизированных процессов.
Определить обязательное метаполе через API
// Example: Mark meta-field as mandatory
MetaField field = metaFieldService.findById("client_id");
field.setIsMandatory(true);
field.setValidationRegex("^[A-Z]{3}[0-9]{4}$");
metaFieldService.update(field);
// Validation enforced in forms and imports
if (request.getClientId() == null || request.getClientId().isEmpty()) {
throw new ValidationException("Client ID is required");
}
