Domino 9 und frühere Versionen > Entwicklung
Frage zu Agenten
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