Devin 1.0

Catégorie / Domaine : Database
Compatibilité SCOL Voy@ger : V 2.0c et supérieure
Mise à jour : 12/2000

Fonction

Ce module permet de délivrer des prédictions aléatoires sur demande.
Ces prédictions sont extraites d’une table, dans une base de données, à laquelle on accède par ODBC.
Ce module permet en plus d’administrer la table contenant les prédictions.

Les prédictions sont délivrées sur la demande d’un évènements.
Un utilisateur devra attendre 24 heures entre 2 demandes de prédictions.
S’il en redemande une dans l’intervalle, le module lui renverra la dernière ou rien du tout, suivant sa configuration.
Cette latence est liée à son login.

Pour fonctionner, ce module utilise 2 tables : une pour les logins, et une pour les prédictions.
La table des logins contient le login de l’utilisateur, la date de sa dernière prédiction, et le numéro de sa dernière prédiction.

Ces champs doivent OBLIGATOIREMENT porter les noms suivants :

Cette table est distincte de la table principale des utilisateurs. On suppose que l’utilisateur s’est loggé avant de demander une prédiction.
La table des prédictions contient un numéro identifiant, et le texte de la prédiction.
Ces champs doivent OBLIGATOIREMENT porter les noms suivants :

Le nom de ces 2 tables est configurable avec l’éditeur.
Elles peuvent contenir d’autres champs, mais le module ne va pas les gérer lors de ses insertions ou suppressions.
Ce n’est donc pas conseillé.

La partie cliente du module permet d’administrer la table des prédictions ( la table des utilisateurs est gérée en interne par le module ).
L’édition est demandée par un événement : EditDatabase.
Le concepteur du site devra donc s’assurer que seuls les personnes habilitées peuvent déclencher cet événement.
L’événement créer les contrôles de manipulation de la table des prédictions.
Le module n’interdit pas à 2 personnes de travailler en même temps sur la table des prédictions.
Mais leurs modifications peuvent être concurrentes. En cas de problème, un message invite l’utilisateur à rafraîchir sa fenêtre.
Quand un 2ième administrateur essaie d’ouvrir une fenêtre d’édition, un message lui signale que quelqu’un est déjà en train de travailler.

Il est aussi possible d’utiliser des évènements pour modifier la table des prédictions. ( Cf. ci dessous ).

Configuration


Figure 1 : Interface du module Devin

(1) : Nom de la base de donnée => Définit le nom de la base de données, ou plus précisément, le nom de l’alias ODBC permettant d’accéder à cette base.

(2) : Login sur la base de données => Définit le login d’accès, à partir duquel le module va travailler

(3) : Password sur la base de données : => Mot de passe pour le login.

(4) : Nom de la table des logins de devins : => Nom de la table dans laquelle le module va chercher les informations de la dernière prédiction pour un login donné.

(5) : Nom de la table des prédictions : => Nom de la table dans laquelle le module va chercher les prédictions.

(6) : Rappel de la dernière prédiction sur nouvelle demande : => Si cette case est cochée, un utilisateur qui demande une prédiction moins de 24 heures après en avoir reçu une recevra la même que précédemment. Si cette case n’est pas cochée, alors il ne reçoit rien.

Mise en oeuvre

Action Fonction
module.événement à Devin.askRandomPrediction Action principale du module, qui demande une prédiction aléatoire pour un utilisateur. Celui ci doit auparavant être loggé. S’il a déjà demandé une prédiction durant les dernières 24 heures, il la reçoit à nouveau ou non, suivant la valeur de la check box correspondante. En réponse, le module envoie un événement sendRandomPrediction.
module.événement à Devin.askPrecisePrediction Cette action demande une prédiction précise au module. Cette action reçoit en paramètre le numéro de la prédiction demandé. Elle renvoie un événement sendPrecisePrediction.
module.événement à Devin.createPrediction Cette action créer une nouvelle prédiction. Elle reçoit en paramètre le texte de la nouvelle prédiction. Elle renvoie en retour un événement sendModificationResult.
module.événement à Devin.updatePrediction Cette action permet de modifier une prédiction qui existe déjà. Elle reçoit en paramètre une chaîne de caractère, qui commence par le numéro de la prédiction à modifier, puis un espace, puis le nouveau texte de la prédiction. Ce texte peut contenir des espaces. Cette action renvoie un événement sendModificationResult en retour.
module.événement à Devin.deletePrediction Cette action supprime une prédiction existante. Elle reçoit en paramètre le numéro de la prédiction à supprimer. Elle renvoie en retour un événement sendModifiactionResult.
module.événement à Devin.editDatabase Cette action ouvre le client du module, afin d’éditer la table des prédictions, comme décrit ci-dessus. Aucune vérification d’autorisation n’est effectuée. Donc, il faut vérifier en plaçant un lien vers cette action que l’utilisateur du lien est bien autorisé à modifier la base de données.

Evénement Fonction
Devin.sendRandomPrediction à module Action Cet évènement est envoyé en réponse à une action askRandomPrediction. Il contient le texte de la prédiction, ou nil si l’utilisateur a déjà demandé une prédiction dans les dernières 24 heures, et que le module est configuré ainsi. Si une erreur survient dans la base de données, aucun évènement n’est envoyé.
Devin.sendPrecisePrediction à module Action

Cet évènement est envoyé en réponse à une action askPrecisePrediction. Il contient une chaîne de caractères, composée d’un numéro, suivie d’un espace, suivi du texte de la prédiction demandée. Le numéro correspond au code de retour de l’action. S’il vaut 0, tout s’est bien passé. S’il vaut 1, une erreur est survenue. Dans ce cas, le texte de la prédiction est nil.

Devin.sendModificationResult à module Action

Cet événement est envoyé en réponse à une action modifiant la base de donnée ( création, modification, ou suppression d’une prédiction ). Elle contient une chaîne de prédiction uniquement composée d’un nombre, qui correspond au code retour de l’action. S’il vaut 0, tout s’est bien passé. S’il vaut 1, une erreur est survenue.


Zone Fonction Interface Affectation
Devin. ListeDesPredictions Contient la liste de toutes les prédictions de la table. Un click dans cette liste envoie
la prédiction sélectionnée vers la zone DetailDesPredictions
Client Oui
Devin.DetailDesPredictions Contient les 2 champs qui décrivent précisément une prédiction, et qui permettent d’agir sur elle Client Oui
Devin.PaletteBoutonAction Cette zone contient les 3 boutons qui agissent sur la prédiction
contenue dans la zone DetailDesPredictions
Client Oui
Devin.PaletteBoutonFenetre Cette zone contient les 2 boutons d’actions sur la fenêtre. Rafraîchir recharge
la liste des prédictions à partir du serveur, et sortir ferme la fenêtre.
Client Oui

Remarques diverses