Page 1 sur 1

Question sur les agents planifiés[RESOLU]

MessagePublié: 04 Mars 2013 à 11:05
par Benimius
Bonjour à tous,

Je suis nouveau dans l'univers Lotus, ce forum m'aide beaucoup dans la découverte, mais pour une fois, en lisant / recherchant, je n'ai pas trouvé la solution.

J'ai développé une application, qui recensie la liste des applications Lotus de mon entreprise présentent sur différents serveurs domino, avec cette liste, j'ai créé un agent "Statistique" qui se connecte sur chaque base pour extraire les données (la taille, le nombre de document, si elle est indexée ou pas, la date de dernière modification, ect...) l'agent tourne parfaitement dés que je l'exécute manuellement, j'arrive à me connecter sans soucis sur chaque base sur n'importe quel serveur, mais une fois que je planifie l'agent, il ne fonctionne qu'avec les bases qui sont sur le même serveur.

Pour essayer de contourner ce problème, j'ai créé un petit agent "Sniffer" a mettre dans chaque base, qui envoi à la base de recensement les informations, mais une fois encore, je reçois uniquement les informations des bases se trouvant sur le même serveur que la base qui reçoit les informations.

En bref, quand je l’exécute manuellement de n'importe quel base située sur n'importe quel serveur, ça fonctionne, mais quand il est planifié il bloque quelque part dés que c'est un serveur différent...

Tout les serveurs sont sur le même domaine.
J'ai essayé en faisant signer la base par le serveur, mais toujours le même soucis !

Si quelqu'un a une idée de la provenance du problème... !

Et j'en profite de ce post pour une deuxième question, est il possible d'avoir un agent partagé dans chaque base, sur différent serveur, qui me permettrait d'appliquer les modifications une seule fois pour toute.

Voici le code de l'agent qui envoi les informations de la base:
Code : Tout sélectionner

Sub Initialize
   'Declaration de base
   Dim session As New NotesSession
   Dim db As NotesDatabase

   'Declaration de la base GestionBaseEgov
   Dim dbEgov As new NotesDatabase("", "")   
   Dim form As NotesForm
   Dim doc As NotesDocument
   
   'Declaration pour les rôles
   Dim uidoc As NotesUIDocument
   Dim acl As NotesACL
   Dim entry As NotesACLEntry

   'Declaration pour l'heure
   Dim dateTime As New NotesDateTime( "" )
   dateTime.LSLocalTime = Now
   
   Set db = session.CurrentDatabase
   Set acl = db.ACL   
   Set entry = acl.GetFirstEntry
   
   'Déclaration des variables
   Dim varNomCbase As String
   Dim varTailleCbase As String
   Dim varNbrDocCbase As String
   Dim varAclCbase As String
   Dim varServCbase As String
   Dim varIndexCbase As String
   Dim varLastModifCbase As String
   Dim arrayAclCbase(0 To 10) As String
   
   'Déclaration des variables 
   Dim cpt As Integer
   cpt = 0
   Dim tempServ As String
   Dim tempNsf As String

   varNomCbase = db.Title
   varTailleCbase = db.Size / 1024 / 1024
   varNbrDocCbase = db.Alldocuments.Count
   varServCbase = db.Server
   varIndexCbase = db.Isftindexed
   varLastModifCbase = db.Lastmodified
   
      While Not ( entry Is Nothing )
      If entry.Level = 6 Then
         arrayAclCbase(cpt) = entry.Name + ";"
         cpt = cpt+1   
      End If
         Set entry = acl.GetNextEntry( entry )
      Wend   
   
   tempNsf = "gestionBasesEgov\GestionbaseEgov.nsf"
   tempServ = "Dominodv"

   If dbEgov.Open(tempServ,tempNsf) Then
         
         Set doc = dbEgov.CreateDocument
      With doc
         .form = "AfrmStatistique"
         .fldStatistiqueNomProjet = varNomCbase
         .fldStatistiqueNomServeur = varServCbase
         .fldStatistiqueNombreDoc = varNbrDocCbase
         .fldStatistiqueTaille = varTailleCbase
         .fldStatistiqueGestionnaire = arrayAclCbase   
         .fldStatistiqueCurrentDate = dateTime.Dateonly
         .fldStatistiqueLastModif = varLastModifCbase
         .fldStatistiqueIndex = varIndexCbase
               
      End With   
      Call doc.save(False, False)   
   End If

End Sub

Merci d'avoir pris le temps de me lire,
Bonne journée

Re: Question sur les agents planifiés

MessagePublié: 04 Mars 2013 à 12:58
par Michael DELIQUE
salut

déjà c'est bien tu n'as pas mis d'objet en NotesUI c'est imcompatible avec les agent schedulé ou lancé via un run on server.
moins bien, ya pas de gestion des erreurs en cas de bug tu aura le strict minimum d'info.

pour ton souci, je pense que ça dois venir des droit, essais de passer ton agent au nivreau de sécurité supérieur. regarde aussi si le signataire/id qui lance l'agent (le server par exemple) à le droit d'accéder au bases...

Re: Question sur les agents planifiés

MessagePublié: 04 Mars 2013 à 13:00
par Michael DELIQUE
je retire ce que j'ai dis...

c'est pas bien du tout ! ya un

Dim uidoc As NotesUIDocument

qui traine dans ton code

Re: Question sur les agents planifiés

MessagePublié: 04 Mars 2013 à 14:21
par Benimius
Bonjour,
Merci de ta réponse,

Je viens de faire les modifications en fonction de tes conseils, je n'étais pas au courant avec les objet de type UIDocument.

Je vais tester avec les modifications ainsi que tester avec les trois types de droits

Re: Question sur les agents planifiés

MessagePublié: 04 Mars 2013 à 15:53
par Benimius
Après modification du code :

Code : Tout sélectionner
Sub Initialize
   On Error GoTo Erreur
   'Declaration de base
   Dim session As New NotesSession
   Dim db As NotesDatabase

   'Declaration de la base GestionBaseEgov
   Dim dbEgov As new NotesDatabase("", "")   
   Dim form As NotesForm
   Dim doc As NotesDocument
   
   'Declaration pour les rôles

   Dim acl As NotesACL
   Dim entry As NotesACLEntry

   'Declaration pour l'heure
   Dim dateTime As New NotesDateTime( "" )
   dateTime.LSLocalTime = Now
   
   Set db = session.CurrentDatabase
   Set acl = db.ACL   
   Set entry = acl.GetFirstEntry
   
   'Declaration pour les mails
   Dim MailDoc As NotesDocument
   Dim richStyle As NotesRichTextStyle
   Dim memoBody As Variant
   
   'Déclaration des variables
   Dim varNomCbase As String
   Dim varTailleCbase As String
   Dim varNbrDocCbase As String
   Dim varAclCbase As String
   Dim varServCbase As String
   Dim varIndexCbase As String
   Dim varLastModifCbase As String
   Dim arrayAclCbase(0 To 10) As String

   'Déclaration des variables 
   Dim cpt As Integer
   cpt = 0
   Dim tempServ As String
   Dim tempNsf As String

   varNomCbase = db.Title
   varTailleCbase = db.Size / 1024 / 1024
   varNbrDocCbase = db.Alldocuments.Count
   varServCbase = db.Server
   varIndexCbase = db.Isftindexed
   varLastModifCbase = db.Lastmodified
   
   While Not ( entry Is Nothing )
      If entry.Level = 6 Then
         arrayAclCbase(cpt) = entry.Name + ";"
         cpt = cpt+1   
      End If
      Set entry = acl.GetNextEntry( entry )
   Wend   
   
   tempNsf = "gestionBasesEgov\GestionbaseEgov.nsf"
   tempServ = "Dominodv"

   call dbEgov.Open(tempServ,tempNsf)
      Set doc = dbEgov.CreateDocument
      With doc
         .form = "AfrmStatistique"
         .fldStatistiqueNomProjet = varNomCbase
         .fldStatistiqueNomServeur = varServCbase
         .fldStatistiqueNombreDoc = varNbrDocCbase
         .fldStatistiqueTaille = varTailleCbase
         .fldStatistiqueGestionnaire = arrayAclCbase   
         .fldStatistiqueCurrentDate = dateTime.Dateonly
         .fldStatistiqueLastModif = varLastModifCbase
         .fldStatistiqueIndex = varIndexCbase
         
      End With   
      Call doc.save(False, False)   
   
Exit Sub



Erreur:
   Set Maildoc = New NotesDocument(db)
   MailDoc.Form = "Memo"
   Set memoBody = MailDoc.CreateRichTextItem("Body")
   Call memoBody.AppendText("Erreur n° :" +CStr(Err)_
                     + "Description : "+ Error(Err)_
                     + "Ligne n° : "+ CStr(Erl))
   MailDoc.Subject = "Rapport d'erreur - calcul stat"
   MailDoc.SendTo = "admin@mail.be"
   Call MailDoc.Send( False)
End Sub


Le rapport d'erreur donne :

Erreur n° :4063
Description : User-defined error
Ligne n° : 67


(Testé avec les 3 niveaux de sécurité)

Le code bloque à la connexion de la deuxième database : "call dbEgov.Open(tempServ,tempNsf) "


Pensez vous que ce code est correct et que le problème est au niveau des options des serveurs ?

Re: Question sur les agents planifiés

MessagePublié: 04 Mars 2013 à 20:11
par roubech
Bonjour et bienvenue
J'ai pas regardé le code mais au niveau droits il fzut que le serveur sur lequel l'agent est planifié soit autorisé sur les autres serveurs : doc serveur, onglet securite, en bas à droite de memoire ("trusted servers")

Re: Question sur les agents planifiés

MessagePublié: 07 Mars 2013 à 10:54
par Benimius
Bonjour,
Le problème est réglé, c'était bien un problème de "Trusted serveurs"

Merci à vous, pour votre aide et vos conseils.