Les attributs d'extension permettent d'attribuer des propriétés ou des fonctionnalités spécifiques à des procédures ou à des variables. Cela permet par exemple d'indiquer dans le cas d'un site WEBDEV qu'une variable devra être synchronisée avec le navigateur.

sNomUtilisateur est une chaîne <synchronisé navigateur>

 

Dans la version 24, de nouveaux attributs sont disponibles. Ils permettent par exemple dans la déclaration d'une procédure d'indiquer qu'elle s'exécutera dans un thread et de préciser le contexte HFSQL à utiliser :

 

Procedure CompteClic(sAdresseLien est une chaîne, sNomPage est une chaîne) <thread,contexte HFSQL complet,délai=1s>


Ici la procédure sera exécutée dans un thread lancé une seconde après l'appel et utilisera une copie de contexte HFSQL complète.

 

C'est très pratique car on voit instantanément les conditions d'exécution de la procédure en lisant le code !

 

Voici la liste des nouveaux attributs d'extension et leur signification :


<timer>

  • la procédure sera exécutée par timer dans le thread principal
  • <répétition> implicite
  • si la période du timer est indiquée dans l'attribut <timer>, les attributs <délai> et <intervalle> sont implicites et automatiquement initialisé avec la période
  • si la période du timer n'est pas indiquée dans l'attribut <timer>, il est nécessaire de préciser l'intervalle du timer par l'attribut <intervalle>
  • incompatible avec <thread> et <thread principal>

 

<thread>

  • la procédure sera exécutée dans un thread secondaire
  • incompatible avec <timer> et <thread principal>

 

<thread principal>

  • la procédure sera exécutée dans le thread principal
  • incompatible avec <timer> et <thread>

 

<répétition>

  • la procédure est répétée automatiquement jusqu'à
    • l'appel à FinAutomatismeProcédure
    • la fermeture de l'élément auquel elle appartient (fenêtre, page, état)
    • la destruction de l'instance à laquelle elle appartient
    • la fin de l'application
  • implicite avec <timer>
  • n peut préciser le nombre maximal de répétitions: <répétition=5>

 

<intervalle=5s>

  • espacement entre deux appels en cas de répétition
  • nécessite <timer>ou <répétition>
  • implicite si une valeur a été indiqué dans l'attribut <timer>

 

<contexte HFSQL léger>

  • une copie légère du contexte HFSQL est effectuée (connexions uniquement)
  • nécessite <thread>

 

<contexte HFSQL complet>

  • une copie compléte du contexte HFSQL est effectuée (Connexions, positions, requêtes, etc...)
  • nécessite <thread>

 

<rappel>

  • caractéristiques pour les appels ultérieurs
  • nécessite <timer>
  • valeurs possibles:
    • <rappel=ignorer>: (défaut) ignore le timer
    • <rappel=nouveau>: déclenche un nouveau timer
    • <rappel=relancer>: relance le timer

 

<délai=5s>

  • délai avant l'exécution de la procédure
  • implicitesi une valeur a été indiqué dans l'attribut <timer>

 

<automatique>

  • la procédure est appelée automatiquement
  • incompatible avec <fin traitement> et <fin événement>

 

<fin traitement>

  • la procédure sera exécutée automatiquement à la fin de la procédure courante
  • incompatible avec <automatique> et <fin événement>

 

<fin événement>

  • la procédure sera exécutée automatiquement à la fin de l'événement courant
  • incompatible avec <automatique> et <fin traitement >

 

Voici un exemple de procédure qui s'exécute en différée puis en boucle via un timer, grâce aux attributs d'extension de sa déclaration :

 

Mise à jour 9/12/2019

Une illustration avec l'exécution d'un traitement en tâche de fond :

Utiliser les attributs d'extension et les procédures internes pour simplifier l'écriture d'un traitement parallèle non bloquant ...

 

 

< Retour

2 commentaires

José
05/01/2024 - 21:58 - Répondre
bonjour, j'ai beau chercher, je ne comprends pas comment utiliser l'attribut d’extension pour une procédure interne un exemple?

jose
05/01/2024 - 22:04 - Répondre
bonjour, j'ai beau chercher, je ne comprends pas comment utiliser l'attribut d’extension "fin de traitement" pour une procédure interne un exemple? désolé pour le doublon, "" est supprimé automatiquement

Publier un commentaire : 
Votre adresse email ne sera pas publiée