Plandora

 
 

Otwarta platforma Java do zarządzania projektami

Planuj, śledź i zarządzaj projektami przy użyciu wykresów Gantta, tablic Agile, przepływu pracy i integracji na otwarto‑źródłowej platformie Java.

Czym jest Plandora?

Plandora to dojrzały, otwarto‑źródłowy system zarządzania projektami napisany w Javie, przeznaczony do planowania, śledzenia i współpracy przy projektach klasy korporacyjnej. Oferuje kompleksowe narzędzia, w tym wykresy Gantta, tablice agile, automatyzację przepływu pracy, planowanie pojemności zasobów oraz niestandardowe raportowanie za pomocą JasperReports. Dzięki wbudowanej obsłudze integracji, takich jak JIRA, SVN i RT4, Plandora umożliwia zespołom zarządzanie złożonymi projektami, zachowując śledzalność i przejrzystość w całych działach. Elastyczny system meta‑pól i konfigurowalne formularze pozwalają organizacjom dostosować platformę do unikalnych procesów bez konieczności zmian w kodzie.

System kładzie nacisk na użyteczność i rozszerzalność, oferując bazę wiedzy z wyszukiwaniem podobnym do Google, wielopoziomowe ankiety projektowe, zarządzanie ryzykiem oraz listy zadań typu TO-Do. Plandora obsługuje zarówno tradycyjne metodyki waterfall, jak i agile dzięki zrównoważonej karcie wyników, gadżetom burndown iteracji oraz hierarchiom makrozadań. Od ponownego uruchomienia w 2023 roku projekt naprawił ponad 30 krytycznych błędów, poprawił wydajność, dodał import/eksport CSV oraz rozszerzone możliwości raportowania — w tym generowanie raportów według harmonogramu i eksport do formatu JPG. Programiści mogą przyczyniać się poprzez repozytorium [Plandora GitHub](https://github.com/Cynjut/Plandora) i rozszerzać funkcjonalność korzystając z modularnej architektury oraz wzorców JDBC/DAO.

Previous Next

Rozpoczęcie pracy z Plandora

Plandora jest aplikacją internetową opartą na Javie, zazwyczaj wdrażaną na Tomcat lub innych serwerach JEE. Aby rozpocząć, sklonuj źródło z repozytorium [Plandora GitHub](https://github.com/Cynjut/Plandora), upewnij się, że Java 8+ i Maven są zainstalowane, oraz zbuduj plik WAR używając `mvn clean package`. Wdróż wygenerowany plik WAR do swojego kontenera serwletów. System obsługuje zarówno pulowanie połączeń Tomcat, jak i bezpośrednie połączenia JDBC (skonfigurowane w `web.xml`). Po wstępnej konfiguracji, skonfiguruj dane uwierzytelniające bazy danych, ustawienia SMTP oraz zintegrować z zewnętrznymi systemami takimi jak JIRA lub SVN. Plandora zawiera wbudowane kreatory konfiguracji dla podstawowych komponentów, takich jak przepływy pracy, pola meta i role użytkowników, aby przyspieszyć wdrożenie.

Budowanie i wdrażanie Plandora przy użyciu 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/

Wykresy Gantta z wydarzeniami kalendarza i kamieniami milowymi

Wykres Gantta w Plandora wizualizuje harmonogramy projektów, obsługując zadania makro, kamienie milowe i zdarzenia kalendarzowe. Dynamicznie filtruje zasoby i zadania, zapewniając dokładne śledzenie postępu, nawet gdy zasoby są przydzielane lub usuwane. Wykres zawiera teraz znaczniki kamieni milowych i integruje się z kalendarzami projektów, odzwierciedlając dni robocze i święta. Użytkownicy mogą eksportować widoki Gantta do formatów CSV, XLS lub JPG w celu raportowania i udostępniania. Ulepszenia wydajności zapewniają płynne renderowanie dużych zestawów danych, a system prawidłowo obsługuje przycinanie zadań podczas importu z MSProject. Niestandardowe pola i meta‑pola mogą być wyświetlane bezpośrednio na siatce Gantta, umożliwiając bogatszy kontekst bez opuszczania widoku osi czasu. Dzięki temu Plandora jest idealna zarówno dla tradycyjnych menedżerów projektów, jak i zespołów hybrydowych stosujących połączenia agile‑waterfall.

Eksport wykresu Gantta do JPG za pomocą zaplanowanego raportu

// 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();

Integracja z JIRA w celu importu zgłoszeń

Plandura zawiera dedykowanego agenta do importowania zgłoszeń JIRA jako żądania Plandora, w tym załączniki i metadane. Ta integracja łączy systemy zgłoszeniowe i planowanie projektów, umożliwiając interesariuszom nietechnicznym korzystanie z RT4 lub JIRA, podczas gdy deweloperzy zarządzają pracą w Plandora. Proces importu zachowuje powiązania zgłoszeń, priorytety, przypisane osoby i znaczniki czasu. Obsługuje filtrowanie według projektu, statusu lub zakresu dat i efektywnie obsługuje duże partie. Po imporcie zgłoszenia stają się w pełni funkcjonalnymi żądaniami Plandora z edytowalnymi polami, przejściami w przepływie pracy i hierarchiami zadań. Ta funkcja jest szczególnie cenna dla organizacji migrujących z JIRA lub utrzymujących podwójne systemy. Deweloperzy mogą rozszerzyć agenta poprzez konfigurację lub własne wtyczki, aby obsługiwać dodatkowe pola JIRA lub pola niestandardowe.

Importuj zgłoszenia JIRA za pomocą agenta wiersza poleceń

// 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();

Zarządzanie pojemnością zasobów i porównanie

Formularz pojemności zasobów Plandora umożliwia szczegółowe planowanie i śledzenie dostępności zespołu w porównaniu z rzeczywistym wykorzystaniem. Oblicza używaną pojemność na podstawie przydzielonych zadań, iteracji i kart czasu, z filtrami dla wartości zerowych/pustych oraz zakresów dat. Użytkownicy mogą porównywać szacowaną i używaną pojemność obok siebie, aby zidentyfikować nad- lub niedozallocowanie. System obsługuje zwolnione zasoby w sposób elegancki, naprawiając błędy zapytań DB, gdy członkowie są usunięci ze wszystkich projektów. Dane o pojemności integrują się z wykresami Gantta i gadżetami burndown, umożliwiając realistyczne planowanie sprintów i kamieni milowych. Menedżerowie mogą dynamicznie dostosowywać szacunki, a zmiany są propagowane do raportów i pulpitów nawigacyjnych downstream. Ta funkcja jest kluczowa dla zarządzania zasobami na poziomie portfela i prognozowania w środowiskach wieloprojektowych.

Filtruj pojemność zasobów według wartości zerowych

// 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());
    }
}

Automatyzacja przepływu pracy i dostosowywanie pól meta

Silnik przepływu pracy Plandora obsługuje konfigurowalne łańcuchy zatwierdzania, przejścia statusów oraz komentarze uzupełniające powiązane z żądaniami, zadaniami i zdarzeniami. Interfejs wyskakujący przepływu pracy wyświetla teraz powiązane opisy żądań oraz pełną historię komentarzy, poprawiając możliwość śledzenia. Meta‑pola pozwalają administratorom definiować własne atrybuty (np. tagi zgodności, identyfikatory klientów) dla zadań, żądań i projektów — w tym obowiązkowe pola wymuszane walidacją interfejsu użytkownika. Te pola pojawiają się w siatkach, raportach i eksportach, umożliwiając elastyczne modelowanie danych bez zmian w kodzie. System obsługuje także wyświetlanie meta‑pól w głównych siatkach formularzy oraz importy CSV, zapewniając spójność we wszystkich punktach wprowadzania danych. Ta rozszerzalność sprawia, że Plandora jest odpowiednia dla regulowanych branż i złożonych struktur organizacyjnych wymagających ścieżek audytu i ustandaryzowanych procesów.

Zdefiniuj obowiązkowe meta-pole za pomocą 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");
}
 Polski