Closed

Aplicación en NodeJS

IMPORTANTE:

- Leer atentamente la propuesta.

- No contestar con respuestas pre hechas.

A los pre-seleccionados se les pasará una documentación más extendida.

<em><strong>Resumen</strong></em>:

Se debe desarrollar una aplicación utilizando las tecnologías NodeJS y MongoDB el cual llamaremos “Planificador” (de Trabajos). El “Planificador” obtiene desde una base de datos “Trabajos” existentes y debe insertar en otra base de datos “Ordenes de ejecución de Trabajos”, en base a la configuración de momento de ejecución de cada “Trabajo”. Esto es la misma idea que el “Programador de Tareas” de Windows o el “cron” de Unix.

<em><strong>Extendido</strong></em>:

Al iniciarse el “Planificador” obtiene desde una base de datos todos los “Trabajos” existentes. 

Cada “Trabajo” obtenido de la base de datos tendrá, entre otros campos:

- _id: ObjectID. Identificador único del Trabajo

- nombre: String. Nombre del Trabajo

- fechaMod: Date. Ultima fecha en la cual fue modificado

- planificaciones: [String]. Una o más configuraciones de cron tipo unix

Es muy importante el campo “planificaciones”. Cada “Trabajo” se debe ejecutar cada determinado tiempo este está especificado en una o más configuraciones que se encuentran en la propiedad “planificaciones”.

Ejemplo

- _id: 

- nombre : “Tomar Cafe”

- fechaMod:

- planificaciones: [‘/30 10-18 * * *’,”0 22 * * 6,7”]

Entonces el Planificador al ver esto deberá entender que el Trabajo “Tomar Cafe” se debe ejecutar “cada 30 minutos entre las 10 y las 18 horas todos los días de la semana” y “ a las 22 horas los sábados y domingos”.

X cantidad de minutos antes del momento de ejecución, deberá agregar a otra base de datos la “Orden de ejecución de Trabajo”.

La “Orden de Ejecución de Trabajo” tiene las siguientes propiedades:

- _id: ObjectID

- - tra: {Object}. Información del trabajo

- - _id: ObjectID. Identificador del trabajo

- - fecMod: Date. Fecha de modificación del trabajo

- fecPla: Date. Fecha en la cual se debe ejecutar el trabajo.

Además deberá agregar en una base de datos, colección “Ordenes_ya_planificadas” un documento el cual tendrá el identificador del trabajo y la última fecha de planificación generada para el trabajo.

<em><strong>NO duplicar las Ordenes de Ejecución de Trabajo</strong></em>

Cuando el Planificador se inicia, obtiene los trabajos y resuelve los próximos momentos en los cuales se debe ejecutar cada uno de ellos, no se deben generar Órdenes de Ejecución de Trabajo para aquellos momentos en los cuales ya se agregó una orden. Debido a esto la existencia de la base de datos “Ordenes_ya_planificadas”.

Imaginemos esta situación: El planificador genera órdenes de trabajo y por un motivo se cierra inesperadamente. Lo dicho anteriormente es útil para estos casos.

<strong><em>Pruebas</em></strong>.

El trabajo también incluye la realización de tests para confirmar que la app funciona correctamente. Los test deben ser realizados con Mocha.

<em><strong>A tener en cuenta al momento de desarrollar la aplicación</strong></em>

• En NPM ya hay módulos existentes que pueden interpretar configuraciones de cron, se deberá investigar y elegir el mejor que se adapte a la necesidad de la aplicación. 

• Los comentarios, los nombres de objetos, variables, funciones, etc deben ser descriptivos y estar en español.

• Todas las métodos deben tener un header en el cual se explique cuál es la tarea del método, los parámetros que recibe y en caso de corresponder, la respuesta. También cada archivo .js debe tener un header el cual explica cuáles son las responsabilidades del módulo.

• Se debe utilizar el módulo para logs.

• Se debe utilizar el módulo para los archivos de configuración (se deben escribir en YAMP). No debe haber constantes en la aplicación que no se carguen desde el archivo de configuración.

• Se debe utilizar el driver nativo de MongoDB. Ya que no se justifica el uso de algún framework como mongoose.

Skills: Javascript, jQuery / Prototype, node.js, PostgreSQL, Translation

See more:

About the Employer:
( 2 reviews ) Capital Federal, Argentina

Project ID: #12388617

1 freelancer is bidding on average $250 for this job

lisandrocorbala

Hola, Antes que nada, quiero comentar que me gusta el proyecto porque parece un lindo desafió y me interesa saber para que se lo requiere. No soy un experto con Node, pero programo hace mas de 15 años. Cual e More

$250 ARS in 10 days
(0 Reviews)
0.0