/***************************************************************/
Type PeriodeCalendrier Defaut Final TailleSegment 8 ConserverObjets
/* Objet : Type des objets correspondant aux periodes des */
/* calendriers. */
/***************************************************************/
/*-------------------------------------------------------------*/
/* Heritage des proprietes d'Objet. */
/*-------------------------------------------------------------*/
Prive :
EstInstanceDe : Type Lecture Public;
/*-------------------------------------------------------------*/
/* Proprietes propres. */
/*-------------------------------------------------------------*/
Prive :
TypePeriode : TypePeriodeCalendrier Lecture Public Trace;
DatePlanification : Nul Ou Date Lecture Public Trace;
FrequenceRepetition : Entier Lecture Public Trace;
DateArret : Nul Ou Date Lecture Public Trace;
HeureArret : Nul Ou Date Lecture Public Trace;
/*-------------------------------------------------------------*/
/* Heritage des methodes d'Objet. */
/*-------------------------------------------------------------*/
Public :
Fonction Optimiser(Invariant) Identique(O : Nul Ou Objet) Retourner Nul Ou Booleen;
Procedure Convertir(O : Nul Ou Objet);
Fonction Optimiser(Invariant) CreeParLeServeur() Retourner Entier;
Fonction Optimiser(Invariant) CreeParLeProcessus() Retourner Entier;
Fonction Optimiser(Invariant) CreeDansLEntrepot() Retourner Entrepot;
Fonction Cloner(EntrepotCible : Nul Ou Entrepot=Nul, Profondeur : ModeClonage = ClonageObjetSeul) Retourner Nul Ou Objet;
Fonction LirePropriete(NomPropriete : Caractere) Retourner Nul Ou Objet;
Procedure EcrirePropriete(NomPropriete : Caractere, Valeur : Nul Ou Objet);
Fonction IncrementerDecrementerPropriete(NomPropriete : Nul Ou Caractere, Incrementer : Booleen, Prefixe : Booleen) Retourner Nul Ou Objet;
Procedure SupprimerPropriete(NomPropriete : Caractere);
Fonction Optimiser(Invariant) EnumererProprietes(NumeroPropriete : Entier, TypePropriete : Nul Ou Type=? Sortie, PeutEtreNul : Booleen=? Sortie, Aide : Nul Ou Caractere=? Sortie, NomEnumere : Nul Ou Caractere=? Sortie) Retourner Nul Ou Caractere;
Fonction Optimiser(Invariant) Adresse() Retourner Nul Ou Caractere;
Prive :
Fonction Exporter(E : Nul Ou IEchangeElementaire) Retourner Boolean;
Fonction Importer(E : Nul Ou IEchangeElementaire, EntrepotCible : Nul Ou Entrepot=Nul, EstFiltre : Booleen=Faux, V : Entier=0, R : Entier=0, C : Entier=0) Retourner Nul Ou Objet;
/*-------------------------------------------------------------*/
/* Methodes propres. */
/*-------------------------------------------------------------*/
Public :
Constructeur(TypeDeLaPeriode : TypePeriodeCalendrier, DatePremierePlanification : Date, FrequenceDeRepetition : Entier=0, DateDArret : Nul Ou Date=Nul, HeureDArret : Nul Ou Date=Nul);
Prive :
Destructeur(MettreEnAnteMemoire : Booleen) Retourner Booleen;
Fin Type
Le type PeriodeCalendrier possède un constructeur explicite. Le paramètre TypeDeLaPeriode permet de préciser s'il s'agit d'une période journalière, hebdomadaire, bimensuelle, mensuelle, bimestrielle, semestrielle ou annuelle. Le paramètre DatePremierePlanification permet de définir à partir de quelle date et à quelle heure s'applique la période de répétition du calendrier.
Il est possible de différer l'application de la période en spécifiant une date de première planification qui soit éloignée de plus d'une période de la date courante. Il est également possible de spécifier une date limite de planification au moyen du paramètre DateDArret. A partir de cette date, la période du calendrier est supprimée du calendrier. Si DateDArret est nulle, alors la répétition est sans limite.
Lorsque le jour de planification est arrivé, l'heure effective est celle spécifiée dans la date DatePremierePlanification. Il n'y a qu'un déclenchement ce jour si le paramètre FrequenceDeRepetition vaut zéro. Sinon il y a un déclenchement tous les FrequenceDeRepetition minutes dans ce même jour. Il est également possible de spécifier une heure limite de répétition au moyen du paramètre HeureDArret. A partir de cette heure, la répétition dans la journée est déprogrammée.
Variable
/******/
MonCalendrier : Nul Ou Calendrier;
Periode : Nul Ou PeriodeCalendrier;
FileDAttente
/**********/
MaFile(1);
Principal
/*******/
Debut
E=10;
MonTravail=P(E)||MaFile;
/* Mise en file de l'appel de 'P' dans la file 'MaFile'. Le travail est 'MonTravail'. */
MonCalendrier=Calendrier("MonCalendrier");
Periode=PeriodeCalendrier(PeriodeJournaliere, Date("1-1-1 8:0:0"));
MonCalendrier.AjouterPeriodeIncluse(Periode);
/* Le calendrier comprend tous les jours de la semaine avec un déclenchement à 8 heures du matin. */
Periode=PeriodeCalendrier(PeriodeHedomadaire, Date("7-8-1999 8:0:0"));
MonCalendrier.AjouterPeriodeExclue(Periode);
/* Le calendrier ne comprend pas les samedis. */
Periode=PeriodeCalendrier(PeriodeHedomadaire, Date("8-8-1999 8:0:0"));
MonCalendrier.AjouterPeriodeExclue(Periode);
/* Le calendrier ne comprend pas les dimanches. */
MonTravail.PlanifierPeriodiquement(MonCalendrier);
/* Le travail est à déclencher selon le calendrier 'MonCalendrier'. */
Fin Principal
- | - | - | - | - | - | - | - | - |