
Plandora
Avoin Java-lähdekoodin projektinhallintajärjestelmä
Suunnittele, seuraa ja hallitse projekteja Gantt-kaavioilla, ketterillä tauluilla, työnkululla ja integraatioilla avoimen lähdekoodin Java-alustan kautta.
Mikä on Plandora?
Plandora on kypsä avoimen lähdekoodin projektinhallintajärjestelmä, joka on rakennettu Javalla ja suunniteltu yritystason projektisuunnitteluun, seurantaan ja yhteistyöhön. Se tarjoaa kattavat työkalut, kuten Gantt-kaaviot, ketterät taulut, työnkulun automaation, resurssikapasiteetin suunnittelun ja räätälöidyn raportoinnin JasperReportsin avulla. Sisäänrakennetun tuen ansiosta integraatioihin kuten JIRA, SVN ja RT4, Plandora mahdollistaa tiimien hallita monimutkaisia projekteja säilyttäen jäljitettävyyden ja läpinäkyvyyden eri osastojen välillä. Sen joustava metakenttäjärjestelmä ja muokattavat lomakkeet antavat organisaatioille mahdollisuuden mukauttaa alusta ainutlaatuisiin työnkulkuihin ilman koodimuutoksia.
Järjestelmä korostaa käytettävyyttä ja laajennettavuutta, sisältäen tietopohjan, jossa on Google-tyylinen haku, monitasoiset projektikyselyt, riskienhallinta ja tehtäväpohjaiset tehtävälistat. Plandora tukee sekä perinteisiä vesiputous- että ketterämenetelmiä tasapainotetun mittariston, iteraatioiden burndown‑työkalujen ja makro‑tehtävähierarkioiden avulla. Vuoden 2023 uudelleenkäynnistyksen jälkeen projekti on korjannut yli 30 kriittistä virhettä, parantanut suorituskykyä, lisännyt CSV‑tuonnin/viennin ja tehostanut raportointiominaisuuksia – mukaan lukien aikataulutettu raporttien luonti ja JPG‑tuloste. Kehittäjät voivat osallistua [Plandora GitHub](https://github.com/Cynjut/Plandora) -tietovaraston kautta ja laajentaa toiminnallisuutta sen modulaarisen arkkitehtuurin ja JDBC/DAO‑mallien avulla.
Aloittaminen Plandoralla
Plandora on Java-pohjainen web-sovellus, joka yleensä asennetaan Tomcatille tai muille JEE-palvelimille. Aloittaaksesi kloonaa lähdekoodi [Plandora GitHub](https://github.com/Cynjut/Plandora) -varastosta, varmista että Java 8+ ja Maven on asennettu, ja rakenna WAR-tiedosto komennolla `mvn clean package`. Ota luotu WAR käyttöön servlet-säiliössäsi. Järjestelmä tukee sekä Tomcatin yhteyspoolia että suoria JDBC-yhteyksiä (määritetty `web.xml`-tiedostossa). Alkuasetusten jälkeen määritä tietokannan kirjautumistiedot, SMTP-asetukset ja integroi ulkoisiin järjestelmiin kuten JIRA tai SVN. Plandora sisältää sisäänrakennetut asennusvelhoja keskeisille komponenteille, kuten työnkuluille, meta-kentille ja käyttäjärooleille, nopeuttaakseen käyttöönottoa.
Rakenna ja ota käyttöön Plandora Mavenin kautta
# 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/
Gantt-kaaviot kalenteritapahtumilla ja virstanpylväillä
Plandoran Gantt-kaavio visualisoi projektiaikataulut tukien makrotehtäviä, virstanpylväitä ja kalenteritapahtumia. Se suodattaa dynaamisesti resursseja ja tehtäviä, varmistaen tarkan edistymisen seurannan myös silloin, kun resursseja lisätään tai poistetaan. Kaaviossa on nyt virstanpylväsmerkkejä ja se integroituu projektikalentereihin heijastaen työpäiviä ja lomia. Käyttäjät voivat viedä Gantt-näkymiä CSV-, XLS- tai JPG-muodoissa raportointia ja jakamista varten. Suorituskykyparannukset varmistavat sujuvan renderöinnin suurille tietoaineistoille, ja järjestelmä käsittelee tehtävien katkaisemisen oikein MSProject-tuonnissa. Mukautetut kentät ja meta-kentät voidaan näyttää suoraan Gantt-ruudukossa, tarjoten rikastettua kontekstia poistumatta aikajananäkymästä. Tämä tekee Plandorasta ihanteellisen sekä perinteisille projektipäälliköille että ketterä‑vesiputous‑yhdistelmiä käyttävälle hybriditiimille.
Vie Gantt-kaavio JPG-muotoon aikataulutetun raportin avulla
// 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-integraatio ongelmien tuontia varten
Plandora sisältää omistautuneen agentin, jonka avulla voidaan tuoda JIRA-ongelmia Plandora-pyyntöinä, mukaan lukien liitteet ja metatiedot. Tämä integraatio yhdistää tukipyyntöjen ja projektisuunnittelun, jolloin ei-tekniset sidosryhmät voivat käyttää RT4:ää tai JIRAa, kun kehittäjät hallinnoivat työtä Plandorassa. Tuontiprosessi säilyttää ongelmien suhteet, prioriteetin, vastuuhenkilöt ja aikaleimat. Se tukee suodatusta projektin, tilan tai aikavälin mukaan ja käsittelee suuria eräitä tehokkaasti. Tuonnin jälkeen ongelmat muuttuvat täysimittaisiksi Plandora-pyynnöiksi, joissa on muokattavia kenttiä, työnkulun siirtymiä ja tehtävähierarkioita. Tämä ominaisuus on erityisen arvokas organisaatioille, jotka siirtyvät JIRA:sta tai ylläpitävät kaksijärjestelmää. Kehittäjät voivat laajentaa agenttia konfiguraation tai mukautettujen liitännäisten avulla tukeakseen lisä-JIRA-kenttiä tai omia kenttiä.
Tuo JIRA-tehtävät komentorivitoimijalla
// 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();
Resurssikapasiteetin hallinta ja vertailu
Plandoran resurssikapasiteettilomake mahdollistaa yksityiskohtaisen suunnittelun ja tiimin saatavuuden sekä todellisen käytön seurannan. Se laskee käytetyn kapasiteetin perustuen määritettyihin tehtäviin, iteraatioihin ja työaikakirjauksiin, suodattimilla nollaan/tyhjiin arvoihin ja aikaväleihin. Käyttäjät voivat vertailla arvioitua ja käytettyä kapasiteettia rinnakkain tunnistaakseen ylikapasiteetin tai alikapasiteetin. Järjestelmä tukee resurssien vapauttamista sujuvasti, korjaten tietokantakyselyvirheitä, kun jäsenet poistetaan kaikista projekteista. Kapasiteettidata integroidaan Gantt-kaavioihin ja burndown‑työkaluihin, mahdollistaen realistisen sprintti- ja virstanpylväs-suunnittelun. Johtajat voivat säätää arvioita dynaamisesti, ja muutokset leviävät alapuolisiin raportteihin ja hallintapaneeleihin. Tämä ominaisuus on kriittinen portfolion tasoisen resurssihallinnan ja ennustamisen kannalta moniprojektisissa ympäristöissä.
Suodata resurssikapasiteetti nollaarvojen mukaan
// 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());
}
}
Työnkulun automaatio ja metakenttien mukautus
Plandoran työnkulun moottori tukee muokattavia hyväksymisketjuja, tilasiirtymiä ja pyyntöihin, tehtäviin ja tapahtumiin liitettyjä jatkokommentteja. Ponnahdusikkunan työnkulku‑käyttöliittymä näyttää nyt liittyvät pyyntökuvaukset ja koko kommenttihistorian, parantaen jäljitettävyyttä. Meta‑kentät antavat ylläpitäjille mahdollisuuden määritellä mukautettuja attribuutteja (esim. vaatimustenmukaisuustunnisteet, asiakastunnukset) tehtäville, pyynnöille ja projekteille – mukaan lukien pakolliset kentät, jotka pakotetaan käyttöliittymän validoinnilla. Nämä kentät näkyvät ruudukossa, raporteissa ja vienneissä, mahdollistaen joustavan tietomallinnuksen ilman koodimuutoksia. Järjestelmä tukee myös meta‑kenttien näyttöä päälomakkeen ruuduissa ja CSV‑tuonnissa, varmistaen johdonmukaisuuden eri tietojen syöttöpisteissä. Tämä laajennettavuus tekee Plandorasta sopivan säänneltyihin toimialoihin ja monimutkaisiin organisaatiorakenteisiin, jotka vaativat auditointipolkuja ja standardoituja prosesseja.
Määritä pakollinen metakenttä API:n kautta
// 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");
}
