0

Je dois développer un système à surveiller la génération/transmission des rapports.Rapport planifié (tâche) Moniteur

  • Les données du système seront stockées dans des tables de base de données (Sybase)
  • Les rapports seront générés avec des horaires différents (« de 22:00 mon-fri », « assis cinq heures », « 1er jour du mois », etc.
  • Le système surveillera simplement que les rapports ont été créés. Il ne créera pas les rapports lui-même.
  • Le système avertira le personnel approprié lorsqu'un rapport ne s'est pas terminé.
  • système maintiendra un journal de tous les rapports générés

Quelqu'un sait d'un bien (Eprouvée) table (s) conception pour le stockage de la tâche shedules ?. J'ai déjà une idée, mais je ne veux pas réinventer la roue.

+0

Je cherche des informations sur la façon dont fonctionne la logique de Cron. – lamcro

Répondre

1

Si vous allez vraiment prendre en charge des horaires complexes de tous ces types, je ne suis pas sûr que ce soit une bonne idée d'essayer d'inventer un schéma DB relationnel tout aussi complexe pour tous les détails de ces horaires. Je envisagerais de concevoir un schéma XML pour les détails des plannings et, si vous avez vraiment besoin de stocker des plannings dans une base de données relationnelle, de stocker les données XML dans une colonne. Vous pouvez utiliser des colonnes pour les attributs de planification applicables à une planification de tout type (par exemple, nom de planification ou qui l'a modifiée la dernière fois et à quel moment).

Par exemple, en supposant qu'un programme peut être utilisé pour plus d'un rapport, vous pouvez faire quelque chose comme ceci:

Table: Schedule 
--------------- 
Columns: 
    ID     - Surrogate key to refer to schedules 
          from other tables. 

    Name    - Short textual description of the schedule 
          (to be shown in GUI). 

    ... 

    Details    - XML containing all the details of 
          the schedule (frequency, exceptions, 
          complex combinations of simple schedules, 
          whatsoever). 

Même si votre application doit répondre à des questions comme « quels rapports sont censés être en raison d'une date/heure donnée », je pense que vous devez avoir un très grand nombre de plannings pour justifier l'utilisation d'un schéma relationnel pour stocker des détails de calendrier précis dans des colonnes séparées (et peut-être dans plusieurs tables).

1

Vous pouvez créer une table calendrier avec les colonnes

  • id
  • nom
  • lun, mar, mer, jeu, ven, sam, dim
  • jours
  • mois
  • année
  • heure (h * 60 + m)

vos exemples seraient:

mon-fri 22:00

mon, tue, wed, thu, fri = true, time=22*60, the rest are NULL 

sat 5 heures

sat=true, time=5*60, the rest are NULL 

1er jour du mois

day=1, the rest are NULL 

Vous pouvez également avoir une table rapports avec les colonnes

  • id
  • Nom
  • schedule_id

et une table report__schedule___late avec les colonnes:

  • id
  • date_time
  • REPORT_ID