We continue to tell you about the open-source products implemented on the JS framework - IONDV. Framework . Today we will talk about the project management system, which was one of our first large-scale projects and which we initially implemented for the government of the Khabarovsk Territory of Russia. And now the web application is open on GitHub under the Apache 2.0 license. The system that we have created is more focused on the regional public sector, so it has an appropriate metadata structure and a set of functions. But we do not see significant obstacles that would prevent the system from being refined for specific tasks, and nobody forbids using it for its intended purpose.
Before sharing our experience, we will answer obvious at first glance questions. What is it and why? Search for ready or make your own? And we give our experience in the implementation of technical solutions.
What is a project management system and why do you need it? This is a set of organizational and technological methods and tools that manage and support projects of the organization and improve the quality and effectiveness of their implementation. For those who are in the subject, I did not say anything new here and can immediately scroll to the technical part of the article. The system allows to improve the quality of management of all projects and increase the rate of successful projects that fit into the time and budget framework. Also, for a manager, this can become a tool for controlling the workload of employees over projects; subsequently, this will allow economical allocation of resources to the project with the highest priority or the project that is lagging behind in terms. Do not forget that in order to avoid fatal errors it is very important to see the whole picture of the project. This will allow time to react, change tactics and make the right management decision.
By the way, for absolutely meticulous ones, they were implemented according to the standards, it is long - in a spoiler.
Taking into account the Decree of the Government of the Russian Federation No. 1288 of October 31, 2018 “On the Organization of Project Activities in the Government of the Russian Federation” and the Methodological Recommendations for Implementing Project Management in Executive Bodies Approved by the Order of the Ministry of Economic Development of the Russian Federation of April 14, 2014 No26-.
The software market is saturated with a large number of ready-made modern solutions. As they say, the bike has already been invented. But who said that you can not upgrade it on your own? We have come to a compromise of development from scratch and out of the box system. Information system is somehow built for specific needs, but not from scratch, but from ready-made components, like a conditional constructor. Only the user decides what will be included in it, and what will not, and the developer decides with the help of what components to implement it. Clearly defined requirements and expectations from the information system provide the expected result.
The implementation timeline for such a solution is significantly lower than that of the development from scratch, and there are no problems with strict limitations of the settings and reprogramming capabilities. And most importantly, to keep such a system easier and cheaper. Well, since it is publicly available on GitHub , it’s also free.
By the way, we ourselves use this method. When there was a question of implementing such a system, we collected a prototype with metadata for the week and spent another week to create a new Gantt chart module - the ready framework was screwed to the core API.
This frame was already operational prototype. And all that was done in the future - it is endlessly reworked metadata for all new and new requirements. "And here again - the slider should be in the form of a progress bar ...".
IONDV app. Project management is based on IONDV’s proprietary technology . Framework . This is an open source framework for node.js for creating high-level web applications based on metadata that does not require serious programming skills. The framework is an independent data model, kernel API, function modules, and presentation templates. For DBMS, MongoDb is used - it stores application settings, metadata, and the data itself. The framework runs in the Node.js environment. All together, it provides a cross-platform framework.
IONDV combination. Studio + IONDV. Framework + IONDV. Apps (application builder from the repository) - is a rapid prototyping system. In which you can get a web application for working out business logic and data structures, security and ready REST API - then to edit the front with your favorite angular or reaction. And SOAP - to work out the integration.
The work on the system was carried out according to a well-established technological process in 4 stages: preparation, implementation, correction and acceptance.
Look at our simple infographics, where we draw the essence of the process of working with the customer.
The project management system uses functional modules such as: business process module, reporting and analysis module, Gantt chart module, graph module, geomodule, personal account module, cloud storage module - they are all available on the github . At the stage of implementation of the system, these ready-made modules allow you to add functionality to the system for a specific field of activity and speed up the implementation of business logic and quickly start building custdev. Sometimes we create new modules on our own initiative or for solving work tasks, therefore the bank of ready-made modules is constantly replenished.
The project management system is a web application, but with the nw.js framework we tried to make a desktop application out of it.
As a result, the system has a fairly simple interface, in which work is carried out with modules for solving key tasks: creating a project, monitoring, managing all kinds of indicators at any stage of its development. File storage and collaboration with documents are possible thanks to the cloud storage - Nextcloud . Plus, it is possible to connect the free version of collabora online for co-editing documents online. Let us show by example how it looks in user mode. By the way, you can test it in the demo. In the project card, in the "Information" section we go down to the "Files" field and click on the button with the "sharing" icon.
The link is formed, click the checkbox “Allow for editing” and the voilà file is available for joint editing.
By the way, we recorded a video where we tell how to start projects and events in the system and showed basic functionality. Put likes, subscribe to the channel, Well, you understand, look.
In the project management system, the key class is of course the “project” class, which in JSON format looks like this:
{ "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 },
We have already told you that metadata classes can be inherited. For them, views are defined separately, differing in different steps of business processes and much more. The properties property lists a list of attributes. This class has 40+ attributes. Read more about metadata. And the depth of inheritance is 7 levels: the base object / project / block of events / event / event of the object / event development of the object / reference point. And there are more branches of the heirs. Big family...
The functions of monitoring project indicators are implemented by the Portal module:
In it, AWPs are implemented by roles, for example, the AWS of the Project Curator.
A feature of the project is - special templates with a summary of the project.
It is implemented in the form of small templates. Moreover, the data sources are:
For example, the progress informer:
<% 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>
And this is how the template is connected instead of the attribute:
{ "caption": " ", "type": 7, "property": "totalProgress", "size": 12, "options": { "template": "attrs/project/totalProgress" } }
Under Linux, you can install the application in one line, if locally is git, node.js and mongodb using the installer iondv-app. The script will install the dependencies of the environment, clone all the necessary repositories of the framework, modules and applications from GitHub, collect, initiate and launch the application:
bash <(curl -sL https://raw.githubusercontent.com/iondv/iondv-app/master/iondv-app) -q -i -m localhost:27017 pm-gov-ru
Where instead of localhost: 27017 you need to specify the address MongoDb. Please note that the system expects nextcloud, available at http: // localhost: 8080 and with a demo account, the password is ion-demo.
You can also run the docker container:
# 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
After launch, open the link http: // localhost: 8888 . For back office login: demo, password: ion-demo with administrator rights. The second user with limited operator rights is the password ion-demo.
See also the application manual .
Test the demo application . Login - demo, password - ion-demo.
The demo includes a Gantt module and a hierarchical representation of indexes of indicators (TreeGrid from the viewlib-extra application) in a number of objects. Unfortunately, these modules contain proprietary components and we cannot publish them on GitHub (remember, we rushed to show a prototype ???), so the application version and the public docker container do not contain them.
The decision to implement a project management system is a multifaceted process, which often depends on factors that are not obvious at first glance. The choice of system is also the choice of the team that will help you implement it. If you are confident in your abilities and colleagues, then act, and we will support you technically and morally .
All efforts and costs will pay off when, thanks to the system, you begin to more efficiently manage your time, human and financial resources to achieve your company's goals. And most importantly, you can redo everything - just as it works for you.
We hope that you have learned some ideas for further development and we have shown you that it is not necessary to pay an immodest amount for a system that you can assemble and modify yourself. It is interesting to hear your opinion on how generally you consider such an Open Core model to be viable in modern conditions, especially with such heavyweight systems, like IONDV. Project management .
Source: https://habr.com/ru/post/459578/
All Articles