Page 1 sur 3
Alerte document

Publié:
11 Août 2011 à 13:13
par MdmZ
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,

Publié:
11 Août 2011 à 19:56
par Michael DELIQUE
salut
un petit notesdatabase.search devrais faire l'affaire ! non ?

Publié:
11 Août 2011 à 20:56
par roubech
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 ?

Publié:
12 Août 2011 à 12:57
par MdmZ
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 ?

Publié:
12 Août 2011 à 16:09
par roubech
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

Publié:
16 Août 2011 à 10:10
par MdmZ
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.

Publié:
16 Août 2011 à 10:42
par Raziel
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 ?

Publié:
16 Août 2011 à 10:55
par MdmZ
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

Publié:
16 Août 2011 à 11:00
par Raziel
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)

Publié:
16 Août 2011 à 12:36
par MdmZ
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 »

Publié:
16 Août 2011 à 12:43
par Raziel
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

Publié:
16 Août 2011 à 12:44
par Raziel
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)

Publié:
16 Août 2011 à 12:47
par MdmZ
et comment j'autorise l'execution des agents locaux programmé ?

Publié:
16 Août 2011 à 12:49
par Raziel
Dans les préférences de ton clients, tu dois cocher l'option "Exécuter agents locaux programmés"

Publié:
16 Août 2011 à 13:33
par MdmZ
Je n'y arrive toujours pas, j'ai l'impression que l'agent ne se lance pas..