Alerte document

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Alerte document

Messagepar MdmZ » 11 Août 2011 à 13:13

Bonjour,

Ma base de données permet de créer un certain type de document concernant des revues de processus devant être réalisées au minimum une fois par an. Lorsque l'échéance arrive (donc si la dernière revue concernant le processus XXX a été réalisé a presque 12 mois) je souhaiterai qu'un message d'alerte soient envoyé aux personnes concernées rappelant l'échéance.
J'ai pensé à faire un agent, mais je ne sais pas trop comment m'y prendre, cet agent concerne uniquement un type de document dans la base.

Quelqu'un peut-il m'aider ?

Merci d'avance,
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Messagepar Michael DELIQUE » 11 Août 2011 à 19:56

salut

un petit notesdatabase.search devrais faire l'affaire ! non ?
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar roubech » 11 Août 2011 à 20:56

le contexte est plutot bien exposé, mais la question est vague. Sur quoi est-ce que tu coince exactement ? tu as déjà programmé un agent ? tu cherches une idée pour l'algorithmr à mettre en place ? tu as une idée de l'algo, mais tu ne sais pas le transcrire en LS ?

la date d'échéance est elle stockée dans le doc ? ou faut-il la déduire d'une autre date qui est stockée dans le doc (par calcul du genre DateXX + 12 mois) ?
Tu pourrais faire :
- une vue triée par date d'échéance, décroissante.
- un agent LS planifié tous les jours (à une heure de la nuit ou l'activité est faible, éviter l'heure des compact, ...)
- dans l'agent, instancier la vue et parcouri ses docs
- si la date d'échéance correspond au critère (= date du jour ou du lendemain, ou date passée ou date + 12 mois pasée ... ça dépend de ton besoin), alors envoyer le mail puis passer au suivant.
- comme la vue est triée, dès qu'un doc ne satisfait plus au critère, sortir de la boucle

penser aussi à la notion de relance. si tu envoi un mail, mais que le user ne modifie pas le doc et donc que le doc répond toujours au critère, est-ce que tu va lui envoyer un mail tous les jours ?
est-ce que tu veux envoyer des mails le week-end ?
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar MdmZ » 12 Août 2011 à 12:57

Par contre j'ai un deuxième critère concernant les documents, la référence du processus. Pour chaque processus, il faut uniquement que je regarde le dernier document et sa date d'échéance. Comment faire ?
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Messagepar roubech » 12 Août 2011 à 16:09

tu peux peux ajouter une colonne au début de ta vue, catégorisé par ta ref de process et au lieu de parcourir avec view.GetNextDocument, tu passes par des NotesViewNavigator pour passer de process en process
http://publib.boulder.ibm.com/infocente ... CLASS.html
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar MdmZ » 16 Août 2011 à 10:10

Pour tester j'ai essayé de faire un agent qui s'execute toutes les 10 mns, je n'ai pas l'impression que cela fonctionne.
J'avais mis un "MessageBox" en premier lieu, ca ne fonctionnait pas. Maintenant j'ai fait un doc.Send, et ca ne fonctionne tjrs pas.. Comme target j'ai mis "All Document In Database" et "None" ensuite.
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Messagepar Raziel » 16 Août 2011 à 10:42

Tu as mis quoi comme code dans ton agent ?
Tu as vérifier dans les logs de ton serveur voir si y'a pas un message d'erreur ?
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar MdmZ » 16 Août 2011 à 10:55

Comment vérifier dans les logs de mon serveur ?

Voici mon bout de code pour tester :

Sub Initialize()

Dim session As New NotesSession
Dim db As NotesDatabase
Dim entryA As NotesViewEntry
Dim nav As NotesViewNavigator
Dim entryB As NotesViewEntry

Dim view As NotesView
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set view = db.GetView( "AlertPR" )
Set nav = view.CreateViewNav

Set entryA = nav.GetLastDocument

Set entryB = nav.GetPrevDocument(entryA)

Set doc = entryB.Document
MessageBox " test " + doc.Getitemvalue("PRReference")
Call doc.send(True)

End Sub
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Messagepar Raziel » 16 Août 2011 à 11:00

La ligne suivante : doc.Getitemvalue("PRReference")
génère forcément une erreur.

En effet, la méthode GetItemValue retourne un tableau.
Tu dois donc avoir une erreur qui apparait dans la log de ton serveur.

Remplace ta ligne par doc.Getitemvalue("PRReference")(0)
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar MdmZ » 16 Août 2011 à 12:36

Dans la partie "Where the agent run", normalement il faut que je mette le serveur sur lequel la base se trouve ou que je mette en Local ?
Car lorsque je met le serveur sur lequel la base se trouve, au moment d'enregistrer l'agent, j'ai le message d'erreur suivant qui apparait :
« You do not have execution access privileges for agent « Nom agent » on 'Nom serveur '; it will not run »
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Messagepar Raziel » 16 Août 2011 à 12:43

Tu peux mettre local mais dans ce cas il faut que tu ai autoriser l'exécution des agents locaux programmé.

Tom message d'erreur provient du fait que tu n'as pas les droits d'exécution suffisants sur ton serveur
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar Raziel » 16 Août 2011 à 12:44

Info complémentaire : comme c'est un agent programmé, le MSGBOX n'affichera pas une boite de dialog. Cela va juste mettre une trace dans la log (de ton serveur ou de ton client)
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar MdmZ » 16 Août 2011 à 12:47

et comment j'autorise l'execution des agents locaux programmé ?
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Messagepar Raziel » 16 Août 2011 à 12:49

Dans les préférences de ton clients, tu dois cocher l'option "Exécuter agents locaux programmés"
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar MdmZ » 16 Août 2011 à 13:33

Je n'y arrive toujours pas, j'ai l'impression que l'agent ne se lance pas..
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Suivant

Retour vers Développement