
Plandora
نظام إدارة مشاريع جافا مفتوح المصدر
خطط، تتبع وأدر المشاريع باستخدام مخططات جانت، لوحات أجايل، سير عمل وتكاملات عبر منصة جافا مفتوحة المصدر.
ما هو Plandora؟
Plandora هو نظام إدارة مشاريع مفتوح المصدر ناضج مبني بلغة Java، صُمم لتخطيط المشاريع على مستوى المؤسسات، وتتبعها، والتعاون فيها. يوفر أدوات شاملة تشمل مخططات جانت، ولوحات أجايل، وأتمتة سير العمل، وتخطيط سعة الموارد، وتقرير مخصص عبر JasperReports. مع دعم مدمج للتكاملات مثل JIRA وSVN وRT4، يتيح Plandora للفرق إدارة مشاريع معقدة مع الحفاظ على إمكانية التتبع والشفافية عبر الأقسام. نظام الحقول التعريفية المرن والنماذج القابلة للتخصيص يسمحان للمؤسسات بتكييف المنصة مع سير عمل فريد دون الحاجة لتغييرات في الشيفرة.
يُبرز النظام سهولة الاستخدام وقابلية التوسع، مع قاعدة معرفة تتميز ببحث شبيه بـ Google، واستطلاعات مشروع متعددة المستويات، وإدارة المخاطر، وقوائم مهام TO-Do القائمة على المهام. يدعم Plandora كلًا من منهجيات الشلال التقليدية والمرنة من خلال بطاقة الأداء المتوازن، وأدوات احتراق التكرار، وتسلسلات المهام الكبيرة. منذ إعادة تشغيله في عام 2023، قام المشروع بإصلاح أكثر من 30 خطأً حرجًا، وتحسين الأداء، وإضافة استيراد/تصدير CSV، وتعزيز قدرات التقارير—بما في ذلك توليد تقارير مجدولة وإخراج بصيغة JPG. يمكن للمطورين المساهمة عبر مستودع [مستودع Plandora على GitHub](https://github.com/Cynjut/Plandora) وتوسيع الوظائف باستخدام هيكله المعياري وأنماط JDBC/DAO.
البدء مع Plandora
Plandora هو تطبيق ويب مبني على جافا يُنشر عادةً على Tomcat أو خوادم JEE الأخرى. للبدء، استنسخ المصدر من مستودع [GitHub الخاص بـ Plandora](https://github.com/Cynjut/Plandora)، وتأكد من تثبيت Java 8+ وMaven، وقم ببناء ملف WAR باستخدام `mvn clean package`. انشر ملف WAR المُولد إلى حاوية الـ servlet الخاصة بك. يدعم النظام كل من تجميع الاتصالات في 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 مثاليًا لكل من مديري المشاريع التقليديين والفرق المختلطة التي تستخدم مزيجًا من الأساليب الرشيقة والشلالية.
تصدير مخطط جانت إلى 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 يتيح تخطيطًا مفصلاً وتتبع توفر الفريق مقارنةً بالاستخدام الفعلي. يحسب السعة المستخدمة بناءً على المهام المخصصة، والتكرارات، وجداول الوقت، مع مرشحات للقيم الصفرية/الفارغة ونطاقات التاريخ. يمكن للمستخدمين مقارنة السعة المقدرة مقابل المستخدمة جنبًا إلى جنب لتحديد الإفراط أو النقص في التخصيص. يدعم النظام الموارد غير المخصصة بسلاسة، ويصلح أخطاء استعلام قاعدة البيانات عندما يتم إزالة الأعضاء من جميع المشاريع. تتكامل بيانات السعة مع مخططات جانت وأدوات الانخفاض، مما يتيح تخطيطًا واقعيًا للسباقات والمعالم. يمكن للمديرين تعديل التقديرات ديناميكيًا، وتنتقل التغييرات إلى التقارير ولوحات التحكم اللاحقة. هذه الميزة حاسمة لحوكمة الموارد على مستوى المحفظة والتنبؤ في بيئات متعددة المشاريع.
تصفية سعة الموارد بالقيم الصفرية
// 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 سلاسل الموافقة القابلة للتخصيص، وانتقالات الحالة، وتعليقات المتابعة المرتبطة بالطلبات والمهام والحوادث. الآن تعرض واجهة سير العمل المنبثقة أوصاف الطلبات ذات الصلة وتاريخ التعليقات الكامل، مما يحسن إمكانية التتبع. تسمح الحقول الوصفية للمسؤولين بتعريف سمات مخصصة (مثل علامات الامتثال، ومعرفات العملاء) للمهام والطلبات والمشاريع—بما في ذلك الحقول الإلزامية التي تُفرض عبر التحقق من صحة واجهة المستخدم. تظهر هذه الحقول في الجداول، والتقارير، والتصديرات، مما يتيح نمذجة بيانات مرنة دون الحاجة لتغييرات في الشيفرة. يدعم النظام أيضًا عرض الحقول الوصفية في جداول النماذج الرئيسية واستيراد ملفات 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");
}
