Sistema de gestión de proyectos abiertos del sector público

Continuamos informándole sobre los productos de código abierto implementados en el marco JS - IONDV. Marco Hoy hablaremos sobre el sistema de gestión de proyectos, que fue uno de nuestros primeros proyectos a gran escala y que implementamos inicialmente para el gobierno del Territorio de Khabarovsk de Rusia. Ahora la aplicación web está abierta en GitHub bajo la licencia Apache 2.0 . El sistema que creamos está más adaptado al sector público regional, por lo que tiene una estructura de metadatos apropiada y un conjunto de funciones. Pero no vemos obstáculos significativos que impidan que el sistema se finalice para tareas específicas, y nadie prohíbe usarlo para el propósito previsto.


Antes de compartir la experiencia, responderemos las preguntas que son obvias a primera vista. ¿Qué es y por qué? ¿Buscando uno terminado o haciendo uno? Y brindaremos nuestra experiencia en la implementación de una solución técnica.



Que y por que


¿Qué es un sistema de gestión de proyectos y por qué lo necesita? Este es un conjunto de métodos y herramientas organizativas y tecnológicas que administran y respaldan los proyectos de la organización y mejoran la calidad y la eficacia de su implementación. Para aquellos que están en el tema, no dije nada nuevo aquí y pueden desplazarse inmediatamente a la parte técnica del artículo. El sistema le permite mejorar la calidad de la gestión de todos los proyectos y aumentar la proporción de proyectos exitosos que se ajustan al tiempo y al presupuesto. Además, para el líder, esto puede convertirse en una herramienta para controlar la carga de trabajo de los empleados sobre los proyectos; posteriormente, esto permitirá asignar recursos económicamente al proyecto más prioritario o rezagado. No olvide que para evitar errores fatales es muy importante ver la imagen completa del proyecto. Esto le permitirá reaccionar a tiempo, cambiar de táctica y tomar la decisión gerencial correcta.


Por cierto, para los más meticulosos, se implementaron de acuerdo con el estándar, es largo, en el spoiler.


Normativo

Sujeto al Decreto del Gobierno de la Federación de Rusia del 31 de octubre de 2018 No. 1288 "Sobre la organización de actividades de proyectos en el Gobierno de la Federación de Rusia" y las Recomendaciones metodológicas sobre la implementación de la gestión de proyectos en los organismos ejecutivos aprobados por la orden del Ministerio de Desarrollo Económico de Rusia del 14 de abril de 2014 No. 26-.


¿Fuera de la caja o desarrollo desde cero?


El mercado de software está saturado con una gran cantidad de soluciones modernas llave en mano. Como dicen, la bicicleta ya está inventada. Pero, ¿quién dijo que no puede actualizarlo a su propio criterio? Hemos llegado a un compromiso de desarrollar desde cero y sistemas listos para usar. De una forma u otra, un sistema de información se ensambla para necesidades específicas, pero no desde cero, sino a partir de componentes listos para usar, como un constructor condicional. Solo el usuario decide qué se incluirá y qué no, y el desarrollador decide con qué componentes implementar esto. Los requisitos y expectativas claramente formulados del sistema de información proporcionan el resultado esperado.


Los términos de implementación de tal solución son mucho más bajos que los del desarrollo desde cero, y no hay problemas con restricciones estrictas en la configuración y las capacidades de reprogramación. Y lo más importante, es más fácil y económico mantener un sistema de este tipo. Bueno, dado que está disponible públicamente en GitHub , también es gratis.


Por cierto, nosotros mismos utilizamos este método. Cuando surgió la cuestión de implementar dicho sistema, armamos un prototipo con metadatos durante una semana y pasamos otra semana para crear un nuevo módulo del diagrama de Gantt: el marco terminado se atornilló a la API central.


Este marco ya era un prototipo viable. Y todo lo que se hizo en el futuro fue rehacer sin cesar los metadatos de acuerdo con los nuevos requisitos. "Y aquí está: el control deslizante debe tener la forma de una barra de progreso ...".


Esos detalles


Aplicación IONDV. La gestión de proyectos se implementa sobre la base de la tecnología patentada de IONDV. Marco Este es el marco de código abierto de node.js para crear aplicaciones web basadas en metadatos de alto nivel, que no requiere habilidades de programación serias. El núcleo del marco es un modelo de datos independiente, API de kernel, módulos de funciones y plantillas de presentación. MongoDb se utiliza para el DBMS: almacena la configuración de la aplicación, los metadatos y los datos en sí. El marco se ejecuta en Node.js. Todos juntos proporcionan un marco multiplataforma.
La combinación de IONDV. Estudio + IONDV. Marco + IONDV. Aplicaciones (creador de aplicaciones del repositorio): es un sistema de creación rápida de prototipos. En el que puede obtener una aplicación web para resolver la lógica de negocios y la estructura de datos, la seguridad y una API REST ya preparada, para que luego pueda editar el frente con su angular o reaccionar favorito. Y SOAP: para resolver la integración.

Proceso de preparación del sistema


El trabajo en el sistema se realizó de acuerdo con un proceso tecnológico establecido en 4 etapas: preparación, implementación, corrección y aceptación.


Eche un vistazo a nuestra sencilla infografía, donde dibujamos la esencia del proceso de trabajo con el cliente.





Detalles


El sistema de gestión de proyectos utiliza módulos funcionales como: un módulo de proceso de negocio, un módulo de informe y análisis, un módulo de diagrama de Gantt, un módulo de gráfico, un geomódulo, un módulo de gabinete personal, un módulo de almacenamiento en la nube; todos están disponibles en el github . En la etapa de implementación del sistema, estos módulos listos para usar le permiten complementar la funcionalidad del sistema para un campo específico de actividad y acelerar la implementación de la lógica empresarial y comenzar a recopilar rápidamente custdev. A veces creamos nuevos módulos por nuestra propia iniciativa o para resolver problemas de trabajo, por lo que el banco de módulos listos se actualiza constantemente.


El sistema de gestión de proyectos es una aplicación web, pero con el marco nw.js intentamos crear una aplicación de escritorio.


Lo que incluye IONDV. Gestión de proyectos?


  • Contabilidad de proyectos y eventos.
  • Separación de derechos y seguridad.
  • Presupuesto
  • Monitoreo de objetos
  • Visualización de datos geográficos
  • Imprimir formularios
  • Recopilación de información de informes
  • Diagrama de Gantt
  • Almacenamiento de documentos de proyecto en almacenamiento de archivos.

Como resultado, un sistema con una interfaz bastante simple en el que se trabaja con módulos para resolver tareas clave: crear un proyecto, monitorear, administrar todo tipo de indicadores en cualquier etapa de su desarrollo. El almacenamiento de archivos y la colaboración de documentos son posibles gracias al almacenamiento en la nube: Nextcloud . Además, es posible conectar una versión gratuita de Collabora en línea para la edición colaborativa de documentos en línea. Permítanos mostrar un ejemplo de cómo se ve en modo de usuario. Por cierto, puedes probarlo en la demo. En la tarjeta del proyecto, en la sección "Información", vamos al campo "Archivos" y hacemos clic en el botón con el icono "compartir".



Se forma un enlace, haga clic en la casilla de verificación "Permitir editar" y el archivo voilà está disponible para edición conjunta.


Por cierto, grabamos un video donde hablamos sobre cómo iniciar proyectos y eventos en el sistema y mostramos la funcionalidad básica. Me gusta, suscríbete al canal, Bueno, ya tienes la mirada.


En el sistema de gestión de proyectos, la clase clave, por supuesto, es la clase de proyecto, que en formato JSON se ve así:


{ "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 }, 

Ya le hemos dicho que las clases de metadatos se pueden heredar. Para ellos, las vistas se configuran por separado y difieren en los distintos pasos de los procesos empresariales y mucho más. La propiedad de propiedades enumera la lista de atributos. Esta clase tiene más de 40 atributos. Obtenga más información sobre los metadatos. Y la profundidad de la herencia es de 7 niveles: el objeto base / proyecto / bloque de eventos / evento / evento del objeto / desarrollo del evento del objeto / punto de control. Y también hay ramas de los herederos. Gran familia ...


El módulo del Portal implementa las funciones de monitoreo de los indicadores del proyecto:



También implementa estaciones de trabajo basadas en roles, por ejemplo, estaciones de trabajo del Curador de proyectos.


Una característica del proyecto es: plantillas especiales con información resumida sobre el proyecto.



Esto se implementa en forma de pequeñas plantillas. Además, las fuentes de datos son:


  • La API de objeto es la más lenta.
  • Cálculos en caché del proyecto en sí, modificado cuando se guarda.
  • API del módulo de informes: los datos programados son la forma más rápida.

Por ejemplo, el widget de progreso:


 <% 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> 

Y así, la plantilla está conectada en lugar del atributo:


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

¿Dónde mirar y tocar?


En Linux, puede instalar la aplicación en una línea, si git, node.js y mongodb se instalan localmente utilizando el instalador de la aplicación iondv. El script instalará las dependencias del entorno, clonará todos los repositorios necesarios del marco, los módulos y las aplicaciones de GitHub, recopilará, iniciará e iniciará la aplicación:


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

Donde en lugar de localhost: 27017 debe especificar la dirección de MongoDb. Tenga en cuenta que el sistema espera nextcloud, disponible en http: // localhost: 8080 y con la cuenta de demostración, contraseña de ion-demo.


También puede iniciar el contenedor docker:


 #     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 

Después de comenzar, abra el enlace http: // localhost: 8888 . Para el back office, inicie sesión: demo, contraseña: ion-demo con derechos de administrador. El segundo usuario con derechos de operador limitados es la contraseña de operador ion-demo.


Consulte también la guía del usuario de la aplicación.


Prueba la aplicación de demostración . Inicio de sesión - demo, contraseña - ion-demo.


La demostración incluye el módulo de Gantt y la representación jerárquica de directorios de indicadores (TreeGrid de la aplicación viewlib-extra adicional) en varios objetos. Desafortunadamente, estos módulos contienen componentes patentados y no podemos publicarlos en GitHub (recuerde, teníamos prisa por mostrar el prototipo ???), por lo tanto, la versión de la aplicación y el contenedor público de docker no los contienen.


Mayor desarrollo


La decisión de implementar un sistema de gestión de proyectos es un proceso multilateral, que a menudo depende de factores que no son obvios a primera vista. Elegir un sistema también es elegir un equipo para ayudarlo a implementarlo. Si tiene confianza en sus habilidades y colegas, actúe y lo apoyaremos técnica y moralmente .


Todos los esfuerzos y costos se verán recompensados ​​cuando, gracias al sistema, comience a administrar de manera más efectiva el tiempo, los recursos humanos y financieros para alcanzar los objetivos de su empresa. Y lo más importante, puede rehacer todo, tal como funciona para usted.


Esperamos que tenga algunas ideas para su desarrollo posterior y le mostramos que no es necesario pagar una cantidad inmodesta por un sistema que puede recopilar y modificar usted mismo. Es interesante escuchar su opinión sobre cómo generalmente considera que un modelo de núcleo abierto de este tipo es viable en condiciones modernas, especialmente con sistemas tan pesados ​​como IONDV. Gestión de proyectos .

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


All Articles