Plandora

 
 

Отворена Java система за управление на проекти

Планирайте, следете и управлявайте проекти с Гант диаграми, агилни дъски, работен процес и интеграции чрез отворена Java платформа.

Какво е Plandora?

Plandora е зряла система за управление на проекти с отворен код, създадена на Java, предназначена за корпоративно ниво на планиране, проследяване и сътрудничество. Тя предоставя цялостни инструменти, включително Гантови диаграми, agile дъски, автоматизация на работни процеси, планиране на капацитета на ресурсите и персонализирани отчети чрез JasperReports. С вградената поддръжка за интеграции като JIRA, SVN и RT4, Plandora позволява на екипите да управляват сложни проекти, като запазват проследимост и прозрачност между отделите. Нейната гъвкава система за мета-полета и персонализируеми форми позволяват на организациите да адаптират платформата към уникални работни процеси без нужда от кодови промени.

Системата поставя акцент върху удобството и разширяемостта, предлагайки база от знания с търсене, подобно на Google, многониво проектирани проучвания, управление на риска и списъци със задачи тип To-Do. Plandora поддържа както традиционните водопадни, така и agile методологии чрез своя балансиран табло за показатели, инструменти за изгаряне на итерации и йерархии от макрозадачи. От рестартирането си през 2023 г. проектът е отстранил над 30 критични грешки, подобрил производителността, добавил импорт/експорт на CSV и разширил възможностите за отчитане — включително генериране на планирани отчети и изход в JPG. Разработчиците могат да допринасят чрез репозитория [Plandora GitHub](https://github.com/Cynjut/Plandora) и да разширяват функционалността, използвайки модулната архитектура и JDBC/DAO модели.

Previous Next

Започване с 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 интеграция за импортиране на задачи

Plandora включва специален агент за импортиране на 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 позволява подробно планиране и проследяване на наличността на екипа спрямо реалното използване. Той изчислява използвания капацитет въз основа на зададени задачи, итерации и работни листове, като предлага филтри за нулеви/празни стойности и периоди от дати. Потребителите могат да сравняват оценени и използвани капацитети един до друг, за да идентифицират препълване или недостиг. Системата поддържа освобождаването на ресурси без проблем, като поправя грешки в DB заявките, когато членове се премахват от всички проекти. Данните за капацитета се интегрират с Гант диаграми и burndown джаджи, позволявайки реалистично планиране на спринтове и етапи. Мениджърите могат динамично да коригират оценките, а промените се разпространяват към последващи отчети и табла. Тази функция е от съществено значение за управление и прогнозиране на ресурсите на ниво портфолио в многопроектни среди.

Филтриране на капацитета на ресурсите по нулеви стойности

// 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");
}
 Български