2012-08-23 8 views
8

quiero ser capaz de crear programas que se pueden ejecutar basan en una fecha fija, repiten a diario, que se repite en un día concreto de la semana, que se repite en un determinado mes del año, que se repite en una fecha particular cada año, y repetida en un momento particular del día.base de datos para la programación de tareas

¿Cómo hago para construir las tablas de la base de datos para este problema?

Edición # 1

Básicamente, estoy escribiendo una aplicación que permite a los usuarios programar saludos pre-configurado para ser enviados en diferentes momentos preconfigurados. Sé que necesito una tabla que almacene información sobre un cronograma (por ejemplo, Navidad, Marketing Uno, ... | y cuándo se debería ejecutar el cronograma). Luego, otra tabla para registrar qué programa se ejecutó, qué saludo envió, a quién y qué correo electrónico; básicamente una tabla de transacciones.

Mi problema es diseñar la tabla de programación porque quiero permitir a los usuarios ejecutar la programación en una fecha específica, en un día de la semana en particular (recurrente), en un día particular de cada mes, en un momento determinado todos los días , y en un día/mes en particular (por ejemplo, 25/12) cada año.

¿Cómo puedo crear un conjunto de tablas para la programación que se encargará de estas entradas de manera flexible?

+1

No se puede utilizar un programador incorporado? La mayoría de los RDBMS los tienen y no es necesario reinventar la rueda. – Ben

+0

¿La "ejecución" también debería estar representada en la base de datos (y cómo?) O simplemente en la programación? –

+0

@BrankoDimitrijevic Sí, debería. – Tebo

Respuesta

6

Esta es la estructura de la mesa que se me ocurrió;

Schedule 
- ScheduleName 
- ScheduleTypeId (Daily, Weekly, Monthly, Yearly, Specific) 
- StartDate 
- IntervalInDays 
- Frequency 
- FrequencyCounter 

ScheduleDaily 
- ScheduleDailyId 
- ScheduleId 
- TimeOfDay 
- StartDate 
- EndDate 

ScheduleMonthly 
- ScheduleMonthlyId 
- ScheduleId 
- DayOfMonth 
- StartDate 
- EndDate 

ScheduleSpecific 
- ScheduleSpecificId 
- ScheduleId 
- SpecificDate 
- StartDate 

... 

ScheduleJob 
- ScheduleJobId 
- ScheduleId 
- ScheduleTypeId 
- RunDate 
- ScheduleStatusId 
1

Como está hablando de programas, supongo que desea crear una aplicación por lotes para la administración y ejecución de trabajos.

Puede comprobar spring batch meta data design para una implementación de referencia. Sin embargo, el diseño exacto dependería de su requerimiento. Esto es solo un puntero.

+0

Gracias. Pero es bastante genérico. Necesito un diseño que represente períodos variados (fecha fija, día del mes recurrente, día de la semana recurrente, ...) para el programa. Que finalmente se traducirá a una fecha especificada. – Tebo

Cuestiones relacionadas