PreviousNext
Help > Développement > Programmes et DataQueues > Utilisation DATA QUEUE
Utilisation DATA QUEUE

 Les DataQueues sont des objets permettant des canaux de communication entre programmes. Elles sont plus puissantes et plus simples d'emploi que les DataAreas . Tout comme elles, elles permettent l'échange de données entre programmes de type différent (JAVA avec CL par exemple) et bien sûr les applications Easycom.

 

On distingue :

les DTAQ FIFO (First In, First Out) : réception de msg1 puis msg2 ,3,4...

les DTAQ LIFO : réception de msg4 puis msg3,2,1...
et les KEYED DTAQ qui permettent d'accéder à un message donné suivant une clé .

 

La Data Queue doit avoir été décrite (voir constructeur) et importée dans l'analyse.

Une Data Queue est écrite de manière directe, mais la lecture peut se faire en mode direct ou temporisée.

 

Ecriture

 

Quel que soit le type d’une Data Queue, une écriture est réalisée par la commande HAjoute().

Note: Il n’est pas utile de mettre des valeurs dans les champs de contrôle (les 3 ou 4 premiers, en fonction du type de la Data Queue).

 

Exemple :

// Initialise les rubriques...

DTAQ_FIFO.Data = DATA

 

// Ecriture dans la DataQueue

HAjoute(DTAQ_FIFO)

 

 

Lecture directe

 

La récupération des messages est immédiate et se fait avec la commande HLitRecherchePremier.

 

// Lecture de la DataQueue

HLitRecherchePremier(DTAQ_FIFO,Timeout,"000000")

 

 

// Affichage du résultat

SI H.EnDehors = Vrai ALORS

 Info("DataQueue vide !")

SINON

 // Affichage...

   SAI_MSG1=DTAQ_FIFO.Data

FIN

 

Lecture temporisée

 

Si : la Data Queue contient au moins un message, la récupération est immédiate, sinon une temporisation paramétrable (en secondes) est lancée pour attendre un nouveau message.

Ceci est réalisé par la commande HLitRecherchePremier, en indiquant le délai dans la clé simple "TIMEOUT".

 

txtAttente est une chaîne

 

// Lecture de la Data Queue

txtAttente = TIMEOUT

HLitRecherchePremier (DTAQ_FIFO, TIMEOUT, txtAttente)

 

// Affichage du résultat

SI HEnDehors ALORS

   Info("DataQueue vide !")

SINON

  DATA = DT.DATA

FIN

 

Attention : dans ce cas l'application reste "bloquée" sur la fonction pendant toute la durée du timeout à moins que la Data Queue ne reçoive un message.

 

Data Queue de type KEYED

 

Il n’existe qu’une seule façon de lire une Data Queue KEYED : lecture par clé par la commande HLitRecherchePremier.

 

La composition de la clé suit les règles suivantes:

Le champ "TIMEOUT" indique en secondes une valeur d’attente avant un nouvel essai (il est possible de ne rien indiquer), dans ce cas la réponse est immédiate.

Le champ "FILER" doit être vide,

Le champ "ORDER" donne le type de recherche :

EQ

=

égal

NE

<> 

différent

GT

>=

strictement supérieur

GE

supérieur ou égal

LT

strictement inférieur

LE

<=

inférieur ou égal

 

Le 4ème champ contient la valeur de recherche, il dépend de votre Data Queue.

 

Exemple 

 

txtCle est une chaîne

 

// Lecture de la DataQueue

 

txtCle=HConstruitValClé(

 

HLitRecherche(DTAQ_KEY, DTAQ_KEY, txtCle)

 

// Affichage du résultat

SI H.EnDehors = Vrai ALORS

 Info("DataQueue vide !")

SINON

   // Affichage...

   DATA = DT.DATA

FIN