نظام إدارة المشاريع المفتوحة للقطاع العام

نستمر في إخبارك عن المنتجات مفتوحة المصدر المنفذة على إطار JS - IONDV. الإطار. اليوم سنتحدث عن نظام إدارة المشروع ، الذي كان أحد أول مشاريعنا الواسعة النطاق والذي قمنا بتطبيقه في البداية لصالح حكومة إقليم خاباروفسك في روسيا. الآن أصبح تطبيق الويب مفتوحًا على GitHub بموجب ترخيص Apache 2.0 . تم تصميم النظام الذي أنشأناه بشكل أكثر ملاءمة للقطاع العام الإقليمي ، بحيث يحتوي على بنية بيانات التعريف المناسبة ومجموعة من الوظائف. لكننا لا نرى عقبات كبيرة من شأنها أن تمنع النظام من وضع اللمسات الأخيرة على مهام محددة ، ولا أحد يحظر استخدامه للغرض المقصود منه.


قبل مشاركة التجربة ، سنقوم بالإجابة على الأسئلة الواضحة للوهلة الأولى. ما هو ولماذا؟ تبحث عن الانتهاء أو جعل بنفسك؟ وسنقدم خبرتنا في تنفيذ حل تقني.



ماذا ولماذا؟


ما هو نظام إدارة المشروع ولماذا تحتاجه؟ هذه مجموعة من الأساليب والأدوات التنظيمية والتكنولوجية التي تدير وتدعم مشاريع المنظمة وتحسن من جودة وفعالية تنفيذها. بالنسبة لأولئك الذين هم في هذا الموضوع ، لم أقل أي شيء جديد هنا ويمكنك التمرير على الفور إلى الجزء الفني من المقال. يتيح لك النظام تحسين جودة إدارة جميع المشاريع وزيادة نسبة المشاريع الناجحة التي تتناسب مع الوقت والميزانية. أيضًا ، بالنسبة للزعيم ، يمكن أن يصبح هذا أداة للتحكم في عبء عمل الموظفين على المشاريع ، وبالتالي سيسمح ذلك بتخصيص الموارد اقتصاديًا للمشروع الأكثر أولوية أو المتخلفة. لا تنسَ أنه لمنع الأخطاء المميتة ، من المهم جدًا رؤية الصورة الكاملة للمشروع. سيتيح لك ذلك الرد في الوقت المناسب وتغيير التكتيكات واتخاذ القرار الإداري الصحيح.


بالمناسبة ، بالنسبة للأكثر دقة - تم تنفيذها وفقًا للمعايير ، فهي طويلة - في المفسد.


Normativka

مع مراعاة المرسوم الصادر عن حكومة الاتحاد الروسي بتاريخ 31 أكتوبر 2018 رقم 1288 "بشأن تنظيم أنشطة المشروع في حكومة الاتحاد الروسي" والتوصيات المنهجية بشأن تنفيذ إدارة المشاريع في الهيئات التنفيذية التي تمت الموافقة عليها بموجب أمر من وزارة التنمية الاقتصادية في روسيا بتاريخ 14 أبريل 2014 رقم 26-.


من خارج منطقة الجزاء أو التنمية من نقطة الصفر؟


سوق البرامج مشبع بعدد كبير من الحلول الحديثة الجاهزة. كما يقولون ، تم اختراع الدراجة بالفعل. لكن من قال أنه لا يمكنك ترقيته وفقًا لتقديرك الخاص؟ لقد توصلنا إلى حل وسط لتطوير من أنظمة الصفر وخارج الصندوق. بطريقة أو بأخرى ، يتم تجميع نظام المعلومات لتلبية الاحتياجات المحددة ، ولكن ليس من نقطة الصفر ، ولكن من مكونات جاهزة ، مثل مُنشئ شرطي. يقرر المستخدم فقط ما سيتم تضمينه فيه وما لا ، والمطور هو الذي يقرر أي مكونات لتنفيذ ذلك. توفر متطلبات وتوقعات نظام المعلومات الموضوعة بوضوح النتيجة المتوقعة.


شروط تنفيذ مثل هذا الحل أقل بكثير من شروط التطوير من الصفر ، ولا توجد مشاكل مع القيود الصارمة على الإعدادات وقدرات إعادة البرمجة. والأهم من ذلك ، أنه من الأسهل والأرخص الحفاظ على مثل هذا النظام. حسنًا ، نظرًا لأنه متاح للجميع على GitHub ، فهو مجاني أيضًا.


بالمناسبة ، نحن أنفسنا نستخدم هذه الطريقة. عندما نشأ سؤال حول تطبيق مثل هذا النظام ، قمنا بتجميع نموذج أولي مع البيانات الوصفية لمدة أسبوع وقضينا أسبوعًا آخر لإنشاء وحدة نمطية جديدة لمخطط جانت - تم ربط الإطار النهائي بواجهة برمجة التطبيقات الأساسية.


كان هذا الإطار بالفعل نموذجًا عمليًا. وكان كل ما تم القيام به في المستقبل هو إعادة البيانات الوصفية إلى ما لا نهاية وفقًا للمتطلبات الجديدة. "ومن هنا - يجب أن يكون شريط التمرير على شكل شريط تقدم ...".


هذه التفاصيل


التطبيق IONDV. يتم تنفيذ إدارة المشاريع على أساس تكنولوجيا الملكية IONDV. الإطار. هذا هو إطار عمل node.js مفتوح المصدر لإنشاء تطبيقات ويب عالية المستوى تعتمد على بيانات التعريف ، والتي لا تتطلب مهارات برمجة جدية. جوهر الإطار هو نموذج بيانات مستقل ، واجهات برمجة التطبيقات لـ kernel ، ووحدات الوظائف ، وقوالب العروض التقديمية. يستخدم MongoDb لنظام إدارة قواعد البيانات - فهو يخزن إعدادات التطبيق والبيانات الوصفية والبيانات نفسها. يعمل الإطار في Node.js. كل ذلك يوفر إطار عمل عبر منصة.
مزيج من IONDV. استوديو + IONDV. الإطار + IONDV. التطبيقات (منشئ التطبيق من المستودع) - هو نظام سريع للنماذج الأولية. حيث يمكنك الحصول على تطبيق ويب للعمل على منطق الأعمال وهيكل البيانات والأمان و REST API الجاهزة - بحيث يمكنك بعد ذلك تحرير المقدمة باستخدام الزاوي المفضل لديك أو الرد. والصابون - للعمل على التكامل.

عملية إعداد النظام


تم العمل على النظام وفقًا لعملية تكنولوجية راسخة في 4 مراحل: الإعداد والتنفيذ والتصحيح والقبول.


ألق نظرة على الرسم التخطيطي البسيط الخاص بنا ، حيث نرسم جوهر عملية العمل مع العميل.





تفاصيل


يستخدم نظام إدارة المشروع وحدات وظيفية مثل: وحدة العمليات التجارية ، وحدة التحليل والتقرير ، وحدة مخطط جانت ، وحدة الرسم البياني ، الوحدة الجغرافية ، وحدة الخزانة الشخصية ، وحدة التخزين السحابية - كلها متوفرة في جيثب . في مرحلة تنفيذ النظام ، تسمح لك هذه الوحدات الجاهزة بإكمال وظيفة النظام لمجال نشاط معين وتسريع تنفيذ منطق الأعمال والبدء في جمع custdev بسرعة. في بعض الأحيان نقوم بإنشاء وحدات جديدة بمبادرة خاصة بنا أو لحل مشاكل العمل ، لذلك يتم تحديث بنك الوحدات الجاهزة باستمرار.


نظام إدارة المشروع هو تطبيق ويب ، ولكن باستخدام إطار nw.js ، حاولنا إنشاء تطبيق سطح مكتب منه.


ما يشمل IONDV. إدارة المشروع؟


  • المحاسبة عن المشاريع والأحداث
  • فصل الحقوق والأمن
  • الميزانية
  • مراقبة الأجسام
  • التصور البيانات الجغرافية
  • أشكال الطباعة
  • الإبلاغ عن جمع المعلومات
  • مخطط جانت
  • تخزين وثائق المشروع في تخزين الملفات.

نتيجة لذلك ، نظام ذو واجهة بسيطة إلى حد ما يتم فيه العمل مع وحدات لحل المهام الرئيسية: إنشاء مشروع ، ورصد وإدارة جميع أنواع المؤشرات في أي مرحلة من مراحل تطويره. تخزين الملفات والتعاون في المستندات ممكن بفضل التخزين السحابي - Nextcloud . بالإضافة إلى ذلك ، يمكن توصيل إصدار مجاني من coopera عبر الإنترنت للتحرير التعاوني للمستندات عبر الإنترنت. دعنا نعرض مثال على كيفية ظهوره في وضع المستخدم. بالمناسبة ، يمكنك اختباره في العرض التوضيحي. في بطاقة المشروع ، في قسم "المعلومات" ، نذهب إلى حقل "الملفات" ونضغط على الزر مع أيقونة "المشاركة".



يتم تكوين رابط ، انقر فوق مربع الاختيار "السماح بالتحرير" وملف voilà متاح للتحرير المشترك.


بالمناسبة ، سجلنا مقطع فيديو نتحدث فيه عن كيفية بدء المشروعات والأحداث في النظام وعرضنا الوظائف الأساسية. مثل ، اشترك في القناة ، حسنا ، أنت تحصل على الشكل.


في نظام إدارة المشروع ، تكون الفئة الرئيسية بالطبع هي فئة المشروع ، والتي تبدو بتنسيق JSON كما يلي:


{ "isStruct": false, "key": [ "guid" ], "semantic": "name| ( |code| )", "name": "project", "version": "31", "caption": " ", "ancestor": "basicObj", "container": null, "creationTracker": "", "changeTracker": "", "history": 0, "journaling": true, "compositeIndexes": null, "properties": [ { "orderNumber": 20, "name": "code", "caption": " ", "type": 0, "size": null, "decimals": 0, "allowedFileTypes": null, "maxFileCount": 0, "nullable": false, "readonly": false, "indexed": true, "unique": true, "autoassigned": true, "hint": "     .      .    .", "defaultValue": {"if": ["$basicObj", {"concat": ["$basicObj.project_code", "-", {"next": ["$basicObj.project_code"]}]}, ""]}, "refClass": "", "itemsClass": "", "backRef": "", "backColl": "", "binding": "", "semantic": null, "selConditions": [], "selSorting": [], "selectionProvider": null, "indexSearch": false, "eagerLoading": false, "formula": null }, { "orderNumber": 30, "name": "project_code", "caption": "project_code [,   ]", "type": 0, "size": null, "decimals": 0, "allowedFileTypes": null, "maxFileCount": 0, "nullable": false, "readonly": false, "indexed": true, "unique": false, "autoassigned": true, "hint": null, "defaultValue": {"if": ["$basicObj", "$basicObj.project_code", "$code"]}, "refClass": "", "itemsClass": "", "backRef": "", "backColl": "", "binding": "", "semantic": null, "selConditions": [], "selSorting": [], "selectionProvider": null, "indexSearch": false, "eagerLoading": false, "formula": null }, 

أخبرناك بالفعل أن فئات البيانات الوصفية يمكن أن تكون موروثة. بالنسبة لهم ، يتم تعيين طرق العرض بشكل منفصل والتي تختلف في الخطوات المختلفة للعمليات التجارية وأكثر من ذلك بكثير. خاصية الخصائص تسرد قائمة السمات. هذه الفئة لديها 40+ سمات. معرفة المزيد عن البيانات الوصفية. وعمق الميراث هو 7 مستويات: الكائن الأساسي / المشروع / كتلة الأحداث / الحدث / الحدث لتطوير الكائن / الحدث في نقطة الكائن / التحكم. وهناك أيضا فروع الورثة. عائلة كبيرة ...


يتم تنفيذ وظائف مراقبة مؤشرات المشروع من خلال وحدة البوابة الإلكترونية:



كما أنها تنفذ محطات العمل القائمة على الأدوار ، على سبيل المثال ، محطات عمل أمين المشروع.


ميزة للمشروع هي - قوالب خاصة مع معلومات موجزة عن المشروع.



يتم تطبيق هذا في شكل قوالب صغيرة. علاوة على ذلك ، فإن مصادر البيانات هي:


  • الكائن API هو الأبطأ.
  • الحسابات المخزنة مؤقتًا للمشروع نفسه ، المعدلة عند حفظه.
  • واجهة برمجة تطبيقات وحدة التقارير - البيانات المجدولة هي أسرع وسيلة.

على سبيل المثال ، أداة التقدم:


 <% let value = parseInt(item.property('progress').getValue()) || 0; value = value < 0 ? 0 : value > 100 ? 100 : value; let text = value === 100 ? '' : `${value}%`; let css = value === 100 ? 'ready' : ``; %> <div class="form-group mb30 <%= cssFromTags(field) %>"> <div class="col-sm-12"> <div class="attr-content"> <div class="center-progress <%- css %>"> <div class="center-progress-bar" style="width: <%- value %>%"></div> <div class="center-progress-text"> <%- text %> </div> </div> </div> </div> </div> 

وهكذا يتم توصيل القالب بدلاً من السمة:


 { "caption": " ", "type": 7, "property": "totalProgress", "size": 12, "options": { "template": "attrs/project/totalProgress" } } 

أن ننظر فيها ولمس؟


ضمن Linux ، يمكنك تثبيت التطبيق في سطر واحد ، إذا تم تثبيت git و node.js و mongodb محليًا باستخدام أداة تثبيت التطبيق iondv. سيقوم البرنامج النصي بتثبيت تبعيات البيئة ، واستنساخ جميع المستودعات الضرورية للإطار والوحدات والتطبيقات من GitHub ، وجمع وبدء التطبيق وإطلاقه:


 bash <(curl -sL https://raw.githubusercontent.com/iondv/iondv-app/master/iondv-app) -q -i -m localhost:27017 pm-gov-ru 

حيث بدلاً من المضيف المحلي: 27017 ، تحتاج إلى تحديد عنوان MongoDb. لاحظ أن النظام يتوقع nextcloud ، وهو متاح على http: // localhost: 8080 ومع الحساب التجريبي ، كلمة المرور التجريبية.


يمكنك أيضًا تشغيل حاوية الإرساء:


 #     docker network create iondv #   mongodb    docker run --name mongodb --net iondv -v mongodb_data:/data/db -p 27017:27017 -d mongo #    nextcloud (curl  POST     docker run -d --name nextcloud --net iondv -p 8080:80 nextcloud && \ sleep 120 && \ docker exec -it nextcloud curl -X POST --connect-timeout 90 -k -s -d "install=true&adminlogin=demo&adminpass=ion-demo&adminpass-clone=ion-demo&directory=/var/www/html/data&dbtype=sqlite&dbhost=localhost" -H "Host: nextcloud" http://localhost:80 #  IONDV. PM-GOV docker run -d -p 8888:8888 --net iondv iondv/pm-gov-ru 

بعد البدء ، افتح الرابط http: // localhost: 8888 . للمكتب الخلفي ، تسجيل الدخول: تجريبي ، كلمة المرور: ion-demo مع حقوق المسؤول. المستخدم الثاني مع حقوق مشغل محدودة هي كلمة مرور المشغل ion-demo.


انظر أيضًا دليل مستخدم التطبيق.


اختبار التطبيق التجريبي . تسجيل الدخول - التجريبي ، كلمة المرور - ايون التجريبي.


يتضمن العرض التوضيحي وحدة نمطية لـ Gantt وتمثيل تسلسلي لدلائل المؤشرات (TreeGrid من تطبيق viewlib الإضافي) في عدد من الكائنات. لسوء الحظ ، تحتوي هذه الوحدات على مكونات خاصة ولا يمكننا نشرها على GitHub (تذكر أننا كنا في عجلة من أمرنا لإظهار النموذج الأولي ؟؟؟) ، وبالتالي فإن إصدار التطبيق وحاوية الرصيف العامة لا تحتوي عليها.


مزيد من التطوير


إن قرار تطبيق نظام إدارة المشروع هو عملية متعددة الأطراف ، والتي تعتمد غالبًا على عوامل ليست واضحة للوهلة الأولى. اختيار النظام هو أيضًا اختيار فريق لمساعدتك في تنفيذه. إذا كنت واثقًا من قدراتك وزملائك ، فعليك التصرف ، وسندعمك تقنياً ومعنوياً .


ستؤتي ثمار كل الجهود والتكاليف عندما تبدأ ، بفضل النظام ، في إدارة الوقت والموارد البشرية والمالية بشكل أكثر فعالية لتحقيق أهداف الشركة. والأهم من ذلك ، يمكنك إعادة كل شيء - تمامًا بالطريقة التي تعمل بها.


نأمل أن تكون لديك بعض الأفكار لمزيد من التطوير ، وأظهر لك أنه ليس من الضروري أن تدفع مبلغًا غير معتدل لنظام يمكنك جمعه وتعديله بنفسك. من المثير للاهتمام أن تسمع رأيك حول مدى اعتبارك نموذج Open Core هذا قابلاً للتطبيق في الظروف الحديثة ، خاصة مع أنظمة الوزن الثقيل مثل IONDV. إدارة المشاريع .

Source: https://habr.com/ru/post/ar459578/


All Articles