Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

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