Domino 9 und frühere Versionen > Entwicklung

Frage zu Agenten

(1/2) > >>

Don Pasquale:
Hallo liebe Notes Gemeinde

ich benötige einen Agenten, der alle Dokumente in der INBOX bearbeitet.
Da ich in diesem Agenten auch Routinen aus einer Library benutzen möchte, sollte der Agent in LScript geschrieben sein.

Im Agent habe ich bei
                "Für welche Dokumente soll der Agent gelten"
die Inbox angeben.

Aber wie muß nun die Collection in Skript
aussehen ?

   Dim Bearbeiter As String
   Dim Status As String

   Dim ws As New NotesUiWorkspace
   Dim Session As New NotesSession
   Dim view As NotesView
   Dim dc As NotesDocumentCollection
   Dim db As NotesDatabase
   
   Set uidoc = ws.CurrentDocument
   Set session = New notessession       
   Set db = session.CurrentDatabase   
   
   
   WAS KOMMT NUN HIERHIN ????????????
'   Set view = db.GetView( $INBOX )    
'   Set dc=db.UnprocessedDocuments  
'   Set dc = view.GetAllDocumentsByKey(IDENT, True)
   
   
   
   Set doc  = dc.GetFirstDocument
   
   While Not (doc Is Nothing)
      
   Dim ID As String
   ID = doc.FieldGetText("e4ihk_Identnummer")
      
      
   If ID <>"" Then
         
   Status = IST_STATUS_VON_ID(uidoc.FieldGetText("e4ihk_Identnummer"))            
   End If   
         
Set item = doc.ReplaceItemValue("e4fld_Status", Status)
   Call uidoc.save
   Call uidoc.close
   Call doc.RemoveFromFolder("($Inbox)")
         
End If
      
      
Set doc = dc.GetNextDocument(doc)
Wend   
   
   
   
   



ata:
... da sind einige Fehler drin


--- Zitat ---Set view = db.GetView( $INBOX )
--- Ende Zitat ---

... Set view = db.GetView( "($Inbox)" ) ' # in Anführungszeichen

... ob du die markierten Dokumente mit UnprocessedDocuments holst, oder bestimmte Dokumente per Key liegt an deiner Vorgehensweise,


--- Zitat ---Set dc = view.GetAllDocumentsByKey(IDENT, True)
--- Ende Zitat ---

... jedoch ist der IDENT noch nicht bekannt...


--- Zitat ---ID = doc.FieldGetText("e4ihk_Identnummer")
--- Ende Zitat ---

... das geht schief, da dies eine uidoc.Methode ist. Ich würde an deiner Stelle versuchen auf das Frontend zu verzichten, und den Wert per Backend ziehen - der Agent kennt kein Frontend...


--- Zitat ---IST_STATUS_VON_ID(uidoc.FieldGetText("e4ihk_Identnummer"))            
--- Ende Zitat ---

... hier gilt das bereits gesagte...

ata




Don Pasquale:
@ata:

Ich möchte den Agenten eigentlich über
ALLE Dokumente der INBOX laufen lassen
Bisher lasse ich ihn über alle Dokumente
der Datenbank laufe, aber dass kann
ewig dauern.


Ciao
Don Pasquale

ata:
... grundsätzlich ist dein Ansinnen ja möglich, abgesehen von den Schwachstellen...

ata

Don Pasquale:
@ata :
Er sieht nun derart aus :


   Dim ws As New NotesUiWorkspace
   Dim Session As New NotesSession
   Dim view As NotesView
   Dim uidoc As NotesUIDocument   
   Dim doc As NotesDocument   
   Dim dc As NotesDocumentCollection
   Dim db As NotesDatabase
   
   Set uidoc = ws.CurrentDocument
   Set session = New notessession       
   Set db = session.CurrentDatabase   
   
   Dim Bearbeiter As String
   Dim item As NotesItem
   Dim ID As Variant
   Dim INDEX As Variant
   Dim UNGELOESCHT As Variant
   Dim Status As String
   
   
   Set view = db.GetView( "_AGENT" )    
   Set dc = view.GetAllDocumentsByKey("True", True)
   
   
   Set doc  = dc.GetFirstDocument
   
   While Not (doc Is Nothing)
      
      INDEX = doc.GetItemValue("e4fld_Indexiert")
      
      If INDEX(0) <> "TRUE" Then
         
         ID = doc.GetItemValue("e4ihk_Identnummer")
         
         If ID(0) <>"" Then
            
            GELOESCHT = doc.GetItemValue("e4fld_Geloescht")
            
            If GELOESCHT(0) = "" Then
               
               Bearbeiter = IST_BEARBEITER_VON_ID( ID(0))
               
               If Bearbeiter <> "" Then
                  Set item = doc.ReplaceItemValue("e4ihk_Initiator", Bearbeiter)
                  Status = IST_STATUS_VON_ID( ID(0))
               End If   
               
               Set item = doc.ReplaceItemValue("e4fld_Indexiert", "True")
               Set item = doc.ReplaceItemValue("e4fld_Status", Status)
               Set item = doc.ReplaceItemValue("e4fld_AGENT", "False")               
               Call doc.save(True,True,True)
               Call doc.RemoveFromFolder("($Inbox)")
               
            End If
         End If
      End If
      
      
      Set doc = dc.GetNextDocument(doc)
   Wend   
   
   

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln