Hallo Forum,
für ein Lookup auf den Datenbankkatalog im Web, lasse ich einen Webagenten (A) laufen. Weil der Datenbankkatalog für die Benutzer aber gesperrt ist, rufe ich von dem Webagenten einen weiteren Agenten (B) laufen, der unter anderen Rechten läuft (nämlich mit den Rechten eines Benutzers, der auf den Datenbankkatalog draufkommt).
Um dem zweiten Agenten die Parameter übergeben zu können, was genau er suchen soll, benutze ich ein Parameterdokument.
So weit so gut, mein Problem ist nun die Rückgabe der gefundenen Werte. Diese schreibe ich wieder in das Parameterdokument und möchte dieses vom ursprünglichen Agenten (A) auslesen. Das aber funktioniert leider nicht korrekt.
Die Werte, die Agent B in das Paramterdokument geschrieben hat, bleiben für Agenten A unsichtbar. Wenn ich nach Abschluss der Agenten in das Parameterdokument hereinschaue, sieht eigentlich alles okay aus.
Um einen besseren Überblick zu geben, hier des relevante Teil meines Codes:
'Parameterdokument für die Suche vorbereiten
Set paramDoc = db.CreateDocument
Call paramDoc.ReplaceItemValue("Form","paramDoc")
Set authorItem = paramDoc.ReplaceItemValue("$forcedAuthors",profileDoc.GetItemValue("$forcedAuthors"))
authorItem.IsAuthors = True
Set nameItem = paramDoc.ReplaceItemValue("$userName",ses.EffectiveUserName)
nameItem.IsNames = True
Call paramDoc.ReplaceItemValue("$lookupDate", Now)
Call paramDoc.ReplaceItemValue("$lookupServer",lookupServer)
Call paramDoc.ReplaceItemValue("$lookupText",lookupText)
Call paramDoc.Save(True, False, True)
paramDocID = paramDoc.NoteID
'Datenbankkatalog für die Suche heranziehen
Set lookupAgent = db.GetAgent("(webLookupCatalog)")
agentRun = lookupAgent.Run(paramDocID)
'Wenn der Suchagent erfolgreich gelaufen ist, das Ergebnis auswerten
If (agentRun = 0) Then
Set resultDoc = db.GetDocumentByID(paramDocID)
lookupResult = resultDoc.GetItemValue("$lookupResult")
If (lookupResult(0) = "") Then
'keine Resultate gefunden
Else
'Resultate auswerten
Agent A sieht die Inhalte des Feldes "$lookupResult" einfach nicht. Agent A sieht nicht einmal das Feld (im Debugger). (lookupResult(0) = "") ist immer wahr, obwohl das Feld nachweislich vorhanden und nicht leer ist.
Hat jemand eine Idee dazu, wo genau das Problem liegen könnte oder wie ich alternativ die Suchresultate an Agent A zurückgeben kann?
Ich habe bereits sichergestellt dass:
a) Das Parameterdokument in Agent B gespeichert wird
b) es nicht an den Benutzerrechten liegt (Agent B unter demselben Benutzer laufen lassen wie Agent A)
c) Das Dokument neu geladen wird (ist im Code ja drin)
Ich bin aber sicher, noch irgendwo was übersehen zu haben.
Viele Grüße
Harry