...
L’appel doit se faire via les fonctions de l’objet métier (voir chapitre plus haut)
Ces fonctions encapsulent l’entité et l’appel aux couches communes des fonctions de réservation
Exemple : A5_Proc_Lock_SQL_
ne doit pas être appelé directement, mais on passe par Res_ART_Lock
(qui fait appel au Reservation_ART_Lock
) qui fait appel au GT_Proc_Lock_SQL
et enfin la fonction commune
Voici un exemple d’une fonction de haut niveau qui expose plusieurs modes de réservation
Bloc de code |
---|
;* Public Procedure Maj_Compteur_article(ref,cpt,ReserverArt) ; Mise à jour d'une comptauer article pour quantité 'cpt' 1 ref >GTFDD.dhsd REF ; référence article 1 cpt >GTFDD.dhsd RESQTE ; quantité 1 ReserverArt 1,0 ; =0 si pas de résevation,= 1 si RES, =2 si shift 1A x X ; retour de fonction BeginP if cpt <> 0 ; met à jour le compteur article switch ReserverArt case 1 x = Res_Art_Lock( ref, 0, NoWait) if x = H_RESERVED x = Res_Art_Shift ( ref, 0, NoWait) ReserverArt = 2 ; Pour remettre en l'état endif case 2 x = Res_Art_Shift( ref, 0, NoWait) default x = 0 endswitch if x = 0 if Seek_ARTicleArticle(RS_Article,ref) = 0 RS_Article.CptA = cpt Update_Article(RS_Article) endif switch ReserverArt case 1 Res_Art_Unlock(ref) case 2 Res_Art_Share(ref) endswitch else Log_Ano(2269,ref) endif endif EndP |
Les ouvertures disponibles et erreur signalées
Un programme appelant peut implémenter des ouvertures prévues en standard:
Initialiser_Temps_Time_out
Par défaut, en absence de cette ouverture chez l’appelant, le temps d’attente en interactif est de 10s
L’ouverture permet de retourner une valeur en secondes
La valeur 0 est interdite, remplacée par la valeur par défaut
Initialiser_Temps_Time_out_Batch
Par défaut, , en absence de cette ouverture chez l’appelant, le temps d’attente en interactif est de 600s=10mn
L’ouverture permet de retourner une valeur en secondes
La valeur 0 est interdite, remplacée par la valeur par défaut
ProcLock_arreter_prog
Par défaut, si l’entité est réservée (et le temps d’attente dépassé) l’appelant est “tué”
L’ouverture permet de retourner 'N' pour indiquer de ne pas tuer la tâche
Exemple:
le A5TTICP000.dhsp illustre
ProcLock_arreter_prog
pour ne pas arrêter le synchronisateur inter-compagnie
Bloc de code |
---|
;*
Public function char ProcLock_arreter_prog
;
beginf
;si réservé, on ne veut pas tuer la tache
freturn ('N')
endff |
le GTTTDHB001.dhsp illustre
Initialiser_Temps_Time_out_Batch
pour attendre 10s
Bloc de code |
---|
;*
Public function int Initialiser_Temps_Time_out_Batch
;
beginf
;pour le synchronisateur, on attend max 30s de résa
freturn (30)
endf |