Integración simple de MS Project y Redmine

Epigrafía


"Si tuviera que poner los labios de Nikanor Ivanovich en la nariz de Ivan Kuzmich, tomar un poco de arrogancia como la de Baltazar Baltazarych y tal vez agregar la mayor adversidad de Ivan Pavlovich a esto, decidiría de inmediato". N.V. Gogol Casarse



Hay dos herramientas de gestión de proyectos bien conocidas y muy diferentes: MS Project y Redmine. Cada uno de ellos tiene sus propios méritos, y estos méritos podrían complementarse perfectamente entre sí.


Quiero llamar su atención sobre una pequeña utilidad llamada P2R, que permite sin ninguna instalación y con un mínimo de configuraciones para garantizar la sincronización en línea de proyectos en MS Project y Redmine. Está disponible en


De qué sirve el proyecto:


  • Es conveniente editar el proyecto como un todo en modo documento, una hoja de cálculo. También es una ventaja que varios proyectos pueden combinarse rápidamente en uno consolidado y verse como un todo. (En Redmine, las tareas del proyecto se editan solo una a la vez a través del formulario de tareas).
  • Todo tipo de variedad y flexibilidad de conexiones entre tareas (en Redmine, las comunicaciones se implementan de manera minimalista).
  • Supervisar la carga de recursos y la capacidad de distribuir automáticamente las tareas en un calendario, teniendo en cuenta las relaciones y la carga de recursos. Incluyendo recursos "inhumanos" como equipos, instalaciones, etc. (No hay nada de esto en Redmine; la herramienta se creó para otra).

Lo bueno de Redmine:


  • Un producto gratuito en Ruby On Rails, bastante simple, bien personalizable y extensible, con una comunidad activa, una gran selección de complementos, desarrollado activamente
  • Web y trabajo en equipo. Como resultado, es muy conveniente registrar el progreso de cada tarea, incluido el registro de cambios, la correspondencia y las discusiones sobre la tarea, los archivos, los informes individuales sobre las horas dedicadas, etc. (No hay nada de esto en el Proyecto).

Sería conveniente preparar proyectos en MS Project, enviarlos para su ejecución a Redmine, obtener los términos reales de las tareas y las horas estimadas / gastadas desde allí, compararlos con la línea base previamente guardada, hacer ajustes si es necesario. (Es especialmente conveniente, por ejemplo, en una situación como la nuestra en el trabajo: hay una serie de proyectos con una estructura regular, que deben formarse de acuerdo con plantillas, ligeramente especificadas y dadas al trabajo).


Hay complementos de Rredmine para esta integración. Pero sí se integran mediante la carga y descarga de archivos xml, pero lo quiero sin archivos y más fácil.


El script P2R propuesto está escrito en ruby ​​y funciona con MS Project a través de OLE, y con Redfmine por API. Si Ruby no está instalado, puede tomar el mismo script compilado en .exe (se encuentra en la carpeta de descargas, generada por la utilidad ocra).


La preparación de un proyecto MSP para publicación y sincronización requiere un mínimo de acción.


  1. P2R almacena los identificadores de tareas de Redmine en el atributo Hipervínculo de las tareas de MSP. Para marcar una tarea para publicación, debe poner 0 en este atributo. Después de la publicación, P2R cambiará automáticamente este campo a la ID de tarea real y al mismo tiempo generará la URL correcta en el atributo HyperlinkAddress, por lo que se podrá hacer clic en el enlace. (Por supuesto, no debe olvidar guardar el proyecto MSP, no se guarda automáticamente).
  2. P2R también almacena ID de usuario de Redmine en el atributo "Hipervínculo" de los recursos de MSP. Para asociar este recurso con un usuario de Redmine, debe encontrar la ID de usuario del administrador de Redmine. (El administrador tiene acceso a la lista de usuarios y puede ver su ID, por ejemplo, en los enlaces de la lista).
  3. P2R toma los parámetros de acceso en Redmine de una tarea especial llamada "Sincronización de Redmine". Debe crear dicha tarea y poner los parámetros de acceso en el campo "Notas" en el formato YAML de acuerdo con la muestra (los valores de los parámetros, por supuesto, deben reemplazarse con los suyos):

    redmine_host: 192.168.10.10 redmine_port: 3000 redmine_api_key: a21e583e7670b1fc79378441d485b9608e4c2dc4c redmine_project_uuid: test task_default_redmine_tracker_id: 4 resource_default_redmine_role_id: 4 

Después de eso, el proyecto está listo para la sincronización. El propósito de los parámetros es claro a partir de sus nombres.


El parámetro redmine_project_uuid contiene un código de proyecto único que debe inventarse de acuerdo con las reglas de Redmine, que se pueden encontrar en la página de configuración de cualquier proyecto. Si se produce un error de "Entrada no procesable" al crear un proyecto, lo más probable es que haya seleccionado el uuid de proyecto incorrecto.


El parámetro task_default_redmine_tracker_id opcional. Si lo omite, se fijará la pista predeterminada de la configuración de Redmine.


Si no desea crear un nuevo proyecto en Redmine, sino conectar uno existente, haga lo siguiente:


  1. Agregue el parámetro redmine_project_id a la configuración de Redmine Synchronization y coloque el ID del proyecto Redmine allí. ¡Esto no es válido! Este entero es el ID de la entrada en la base de datos de Redmine. Puede encontrar este ID, por ejemplo, en la tarjeta del proyecto en formato XML o JSON (para el ejemplo anterior, puede obtenerlo en http://192.168.10.10/10000000/projects/test.json ).
  2. Para que las tareas se sincronicen con las existentes en Redmine, coloque en el campo Hipervínculo no sus ceros, sino sus ID reales de Redmine.

Hay una ligera restricción en la asignación de recursos a una tarea:


  • Dado que solo se puede asignar un ejecutor a una tarea en Redmine, el script jurará y se detendrá cuando encuentre más de un recurso en la tarea MSP marcada para sincronización. (1) Es posible que en futuras versiones este comportamiento sea reemplazado por uno más suave, como emitir una advertencia y elegir al azar uno de ellos. (2) Los recursos que no están sincronizados se pueden asignar tantos como desee, P2R los ignora.

Se implementa el siguiente algoritmo de sincronización:


  • El nombre de la tarea, la estructura de subordinación y la persona responsable tienen prioridad en el lado de MSP, es decir. necesitan ser editados en MS Project, y los cambios irán a Redmine durante la sincronización.
  • El comienzo de la tarea, el final, los costos de mano de obra (evaluación y real) tienen prioridad en el lado de Redmine y van a MSP durante la sincronización.

También hay un problema con los costos laborales: en MSP, la estimación de los costos laborales, los costos laborales reales y el porcentaje de finalización están estrechamente relacionados con la fórmula, mientras que en Redmine se establecen de forma independiente. Es decir, lo calificaron a las 10 horas, pasaron 40 horas y al mismo tiempo completaron la tarea en un 30%. Sucede en la vida, y a Redmine no le importa. La solución elegida es:


  • Los costos reales siempre se escriben tal cual
  • Si los costos reales son mayores que la estimación y el porcentaje de finalización es 0, ignore la estimación
  • Si los costos reales son mayores que la estimación y el porcentaje de finalización no es 0, calculamos una nueva estimación basada en el hecho y el porcentaje de finalización.

En total, el proceso de sincronización se ve así:


  1. Abrimos nuestro proyecto en MS Project y lo dejamos activo.
  2. Si queremos, comenzamos la ejecución inactiva de P2R y miramos qué cambios serán.
  3. Comenzamos la sincronización real: con el interruptor –e.

El directorio de trabajo desde el que se inicia el script no importa.


Puede iniciar el script por temporizador y la sincronización se volverá completamente automática.


Gracias por su atencion

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


All Articles