Rafraîchissement sur événement externe
Le rafraîchissement sur événement externe permet de spécifier le rafraîchissement de l'élément à la réception d'un événement externe via une URL "fire event".
L'URL "fire event" fonctionne avec l'ordonnanceur. Celui-ci doit donc être renseigné et activé : consultez la page Paramètres des rafraîchissements pour plus de détails.
Ce mécanisme permet de déclencher le rafraîchissement comme s'il était programmé de façon calendaire, mais immédiatement à l'entrée de l'URL.
Configurer le rafraîchissement sur événement
Pour configurer le rafraîchissement sur événement, il faut ajouter une programmation à la fois sur le flux et le cube :
- Dans le champ ID de l'événement externe, entrez le nom de l'événement. Par exemple, EVENT1.
- Vous pouvez définir un écart minimal entre 2 rafraîchissements :
Cochez la case Limiter la fréquence maximale de rafraîchissement et définissez la fréquence comme décrit ici.
Par exemple, la configuration ci-dessous indique que le flux et le cube seront rafraîchis sur réception de l’événement EVENT1 au maximum une fois toutes les 5 minutes. Si aucun événement n'est reçu, le flux et le cube ne sont pas rafraîchis (ou alors par une autre programmation).
On peut définir plusieurs événements sur un flux/cube, et un même événement peut concerner plusieurs flux/cubes. Cela peut servir à configurer des "canaux" de rafraîchissements différents par exemple.
Appeler l'événement
L'événement est appelé via une URL entrée manuellement dans le navigateur ou envoyée par un processus externe tel que le scheduler Windows par exemple. Cet URL a la forme suivante:
http://localhost:8080/ddenterpriseapi/fireevent?eventid=EVENT1
- Dans le cas manuel, un écran de connexion apparaît puis l'événement est lancé juste après l'authentification.
Il n'y a pas de retour autre qu'un message indiquant que l'événement a été envoyé. Ce retour ne garantit pas que l'événement soit traité, ni quand. En effet, si l'ordonnanceur est déjà en cours de traitement, les flux concernés par l'événement sont mis en file d'attente. De plus, si le précédent événement identique reçu est trop récent (en fonction de la fréquence maximale de rafraîchissement définie), alors le nouvel événement est ignoré.
- Dans le cas d'un processus externe, il faut ajouter à la fin de l'url : &user=<nom>&pass=<pass> pour que l'appel de l'URL soit authentifié.
Le compte concerné doit avoir l'autorisation Programmer les rafraîchissements.
Il est aussi possible de spécifier certains utilisateurs pour lesquels les flux et cubes visés par l'événement seront rafraîchis. Pour cela, il faut ajouter le paramètre &users=<Id utilisateur> autant de fois qu'il y a d'utilisateur à spécifier. Par exemple :
http://localhost:8080/ddenterpriseapi/fireevent?eventid=EVENT&user=...&pass=...&users=user1&users=user2... etc.
Utilisation du fireevent avec l'outil ETL Talend
Pour utiliser fireevent avec l'outil ETL Talend, il faut passer par une requête curl dans le script talend sous la forme suivante:
curl -L -b /path/to/talendwrite/cookies.txt -i "http://urlserver:8080/ddenterpriseapi/fireevent?eventid=EVENT&user=admin&pass=admin
À noter :
- Le paramètre important est le "-L" qui permet de suivre les "redirection location" des en-têtes header.
- Le fichier cookie file n'est pas un paramètre d'entrée.
- Il ne faut pas passer le composant Talend thttprequest.
- Il faut utiliser CURL avec "\"" autour de l'URL sur le composant "tSystem".
Évènements existants
Des évènements existent déjà dans DigDash et peuvent être appelés à tout moment :
- EVENT_STOPSESSIONS : désactive le gestionnaire de sessions (les utilisateurs, hormis le super administrateur, ne peuvent pas se connecter).
- EVENT_STARTSESSIONS : active le gestionnaire de sessions.
- FORCE_FILESGC : désactive toutes les sessions et nettoie les fichiers obsolètes pour minimiser l'utilisation de l'espace disque.
- EVENT_REFRESHFLOW_FORCE : rafraîchit tous les flux du système (sauf les flux désactivés) et force la régénération des cubes de premier niveau. (Équivalent à Synchroniser pour Tous les utilisateurs + Forcer la génération des cubes des données des flux sélectionnés dans le Studio).
- EVENT_REFRESHFLOW_FORCEALL : rafraîchit tous les flux du système (sauf les flux désactivés) et force la régénération de tous les cubes. (Équivalent à Synchroniser pour Tous les utilisateurs + Forcer la génération des cubes des données des flux sélectionnés ET Forcer la génération de tous les cubes depéndants dans le Studio).
Il est possible de définir une chaîne d'événements. Par exemple :
.../fireevent?eventid=EVENT_STOPSESSIONS&eventid=REFRESH&eventid=EVENT_STARTSESSIONS
désactive le gestionnaire de sessions, puis rafraîchit tous les flux (si l'événement REFRESH est connu du portefeuille), puis réactive le gestionnaire de session.
.../fireevent?eventid=REFRESH&eventid=FORCE_FILESGC
rafraîchit tous les flux (si l'événement REFRESH est connu du portefeuille) puis, nettoie les fichiers obsolètes pour minimiser l'utilisation de l'espace disque.