/***************************************************************/
Type Travail Defaut Final TailleSegment 8 ConserverObjets
/* Objet : Type des objets correspondant aux travaux en attente.*/
/***************************************************************/
/*-------------------------------------------------------------*/
/* Heritage des proprietes d'Objet. */
/*-------------------------------------------------------------*/
Prive :
EstInstanceDe : Type Lecture Public;
/*-------------------------------------------------------------*/
/* Proprietes propres. */
/*-------------------------------------------------------------*/
Prive :
NomTravail : Caractere Lecture Public Trace;
Etat : EtatTravail Lecture Public Trace;
MessageErreur : Nul Ou Caractere Lecture Public;
CodeErreur : Entier Lecture Public;
File : Nul Ou FileDAttente Lecture Public;
Planification : TypePlanification Lecture Public;
Priorite : Entier Lecture Public;
DatePlanification : Nul Ou Date Lecture Public;
Duree : Entier Lecture Public;
Numero : Entier Lecture Public;
CalendrierDExecution : Nul Ou Calendrier Lecture Public;
/*-------------------------------------------------------------*/
/* 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 :
Procedure Habilitation PlanifierAuPlusTot(DateDebut : Date, DureeEstimee : Entier=3, PrioriteDuTravail : Entier=2);
Procedure Habilitation PlanifierAuPlusTard(DateFin : Date, DureeEstimee : Entier=3, PrioriteDuTravail : Entier=2);
Procedure Habilitation PlanifierApres(LT : Nul Ou ListeDe Nul Ou Travail, DureeEstimee : Entier=3, PrioriteDuTravail : Entier=2);
Procedure Habilitation PlanifierPeriodiquement(C : Nul Ou Calendrier, DureeEstimee : Entier=3, PrioriteTravail : Entier=2);
Procedure Habilitation Supprimer();
Fonction LireValeurEnumere(NumeroParametre : Entier) Retourner Enumere;
Fonction LireValeurEntier(NumeroParametre : Entier) Retourner Entier;
Fonction LireValeurReel(NumeroParametre : Entier) Retourner Reel;
Fonction LireValeurObjet(NumeroParametre : Entier) Retourner Nul Ou Objet;
Prive :
Destructeur(MettreEnAnteMemoire : Booleen) Retourner Booleen;
Fin Type
Le type Travail ne possède pas de constructeur implicite ni de constructeur explicite.
Les objets de type Travail sont créés automatiquement lors de la mise en file d'attente au moyen de l'opérateur ||
.
Variable
/******/
E : Entier;
MonTravail : Nul Ou Travail;
FileDAttente
/**********/
MaFile(1);
/****************************************************************/
Procedure P(A : Entier Entree Sortie)
/* Objet : Procedure quelconque. */
/****************************************************************/
Debut
Ecran.Ecrire("P="+Caractere(A));
Fin Procedure
Principal
/*******/
Debut
E=10;
MonTravail=P(E)||MaFile;
/* Mise en file de l'appel de 'P' dans la file 'MaFile'. Le travail est 'MonTravail'. */
MonTravail.PlanifierAuPlusTard(DateSysteme()+10);
/* Le travail est à déclencher dans au plus 10 secondes. */
Ecran.Ecrire(MaFile.NbTachesServeur);
Ecran.Ecrire(MaFile.NbTravauxEnAttente());
TantQue (MonTravail.Etat!=TravailTermine) Et (MonTravail.Etat!=TravailEnErreur) Faire
/* Nous attendons que le travail soit accompli. */
Attendre(5);
Fin TantQue
Si MonTravail.Etat==TravailEnErreur Alors
/* Il y a eu une erreur. */
Ecran.Ecrire(MonTravail.MessageErreur);
Sinon
/* Lit la valeur de sortie correspondant au premier paramètre. */
Ecran.Ecrire(MonTravail.LireValeurEntier(1));
Fin Si
Fin Principal
- | - | - | - | - | - | - | - | - |