Autor Thema: Agent mit ParameterDocID findet Dokument nicht (immer).  (Gelesen 4294 mal)

Offline FlatPM

  • Frischling
  • *
  • Beiträge: 41
Auch wenn ich sicher wieder ein paar vor die Kauleiste bekomme, ob meiner Unwissenheit...ich stell die Frage trotzdem.

Ich hab einen Serveragenten geschrieben der die NotesID eines Dokumentes über den Parameter holt, Werte aus dem Dokument ausliest und es danach löscht. Das Dokument selber hat nur ein einziges Feld mit Namen (Typ "Names" nicht "Reader".
Wenn ich selbst jetzt in diesem Dokument verändere und an den Agenten schicke, funktioniert das wunderbar. Wenn aber jemand anderes das Dokument verändert, funktioniert das bis zu dem Punkt wo er meinen Namen aus dem Feld herauslöscht. Sprich, wenn mein Name nicht in dem Feld steht bekommt der Agent das Dokument nicht.
Wie bekomm ich das gelöst? Ich seh sicher den Wald vor lauter Bäumen nicht. Muss ich den Agenten mit der ServerID signieren, irgendwo ein Lese-Feld einbauen oder Notes lieber wieder sein lassen und mich weiterhin mit SharePoint beschäftigen? ;)
Danke für eure Hilfe.
« Letzte Änderung: 05.07.10 - 18:23:43 von FlatPM »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent mit ParameterDocID findet Dokument nicht (immer).
« Antwort #1 am: 06.07.10 - 06:42:06 »
Wenn das Namensfeld wirklich kein Leserfeld ist, klingt das recht unlogisch. Du solltest in der Felderliste des Dokuments einmal die Eigenschaften des Feldes überprüfen, ob es wirklich auch nur als Namensfeld gespeichert ist. Schau Dir auch mal alle anderen Felder an, ob sich nicht doch ein Leserfeld darunter befindet.

Du kannst auch testweise ein Leserfeld einbauen, das mit einem "*" gefüllt ist. Funktioniert es danach, ist das Problem sicher auf eine Lesersteuerung zurückzuführen.

Zum Signieren des Agenten solltest Du im produktiven Umfeld immer eine nicht usergebundene ID verwenden, um eine Trennung von persönlichen und technischen Rechten gewährleisten zu können.

Offline FlatPM

  • Frischling
  • *
  • Beiträge: 41
Re: Agent mit ParameterDocID findet Dokument nicht (immer).
« Antwort #2 am: 06.07.10 - 08:27:32 »
Hallo Peter,

ich habe es überprüft: es ist kein Leserfeld.

Ich habe aber mal den Agenten mit den Rechten des Servers laufen lassen. Da funktioniert es. Woran kann das das liegen?

Gruß,
Veit

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent mit ParameterDocID findet Dokument nicht (immer).
« Antwort #3 am: 06.07.10 - 09:16:05 »
Das läßt sich aus der Distanz nicht sagen. Welches Zugriffsrecht hast Du auf die Datenbank? Gibt es Autorenfelder? Wenn ja, welchen Zusammenhang haben die mit dem genannten Namensfeld?

Da es mit der ServerID funktioniert, ist das Problem sicherlich auf unzureichende Rechte zurückzuführen.

Offline FlatPM

  • Frischling
  • *
  • Beiträge: 41
Re: Agent mit ParameterDocID findet Dokument nicht (immer).
« Antwort #4 am: 06.07.10 - 09:47:02 »
Ich habe Managerrechte auf der Datenbank. Der Testnutzer auch. Autorenfelder sind nicht vorhanden. Ich habe extra mal eine Lesefeld eingebaut und "*" als Vorgabewert genommen. Trotzdem keine Änderung...

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent mit ParameterDocID findet Dokument nicht (immer).
« Antwort #5 am: 06.07.10 - 09:53:58 »
Woran erkennst Du, dass der Agent das Dokument nicht findet? Kann es stattdessen auch sein, dass er das Dokument findet aber bei der Verarbeitung auf ein Problem stößt und deshalb das Dokument nicht löscht? Ich würde mal im Log nachsehen, ob der Agent einen Fehler protokolliert.

Was macht der Agent mit den ausgelesenen Daten? Er wird die doch sicher irgendwohin schreiben. Könnte dabei ein Fehler auftreten?

Offline FlatPM

  • Frischling
  • *
  • Beiträge: 41
Re: Agent mit ParameterDocID findet Dokument nicht (immer).
« Antwort #6 am: 06.07.10 - 11:11:34 »
Also der Agent bekommt die richtige ID, ich habe sie mir auf der Serverconsole ausgeben lassen. Wenn ich danach das Dokument holen will ist, ist die Variable in die das Dokument referenziert werden soll leer. Egal worauf ich zugreife, es kommt die Fehlermeldung "Object Variable not set".

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent mit ParameterDocID findet Dokument nicht (immer).
« Antwort #7 am: 06.07.10 - 12:03:26 »
Liegt die Datenbank nur auf einem Server? Falls nicht, könnte es sein, dass das Dokument auf Server1 geschrieben und der Agent auf Server2 gestartet wird? Das passt zwar nicht zu Deiner Fehlerbeschreibung, dass der Fehler nur auftritt, wenn das Namensfeld gelöscht wurde, aber sonst habe ich auch keine weiteren Ideen mehr.

BigWim

  • Gast
Re: Agent mit ParameterDocID findet Dokument nicht (immer).
« Antwort #8 am: 06.07.10 - 13:22:38 »
Poste doch mal den Code Deines Agenten. Vielleicht kann man daran etwas erkennen.

Markus

Offline FlatPM

  • Frischling
  • *
  • Beiträge: 41
Re: Agent mit ParameterDocID findet Dokument nicht (immer).
« Antwort #9 am: 07.07.10 - 08:23:02 »
Na klar.

Der Code der SharedAction:
Code
Sub Click(Source As Button)
	On Error Goto errHandler
	Dim session As NotesSession
	Dim db As NotesDatabase
	Dim ws As NotesUIWorkspace
	Dim settingsDoc As NotesDocument
	Dim serverAgent As NotesAgent
	Dim newFolderName As  String
	Dim boxType As Long
	Dim answer As Integer
	
	'Init
	Set session = New NotesSession
	Set db = session.CurrentDatabase
	Set ws = New NotesUIWorkspace	
	Set serverAgent = db.GetAgent("SetupFolderRights")
	
	'sicherstellen dass der nutzer über einem ordner in der gkks-hierarchie ist	
	If(ws.CurrentView.ViewName Like "GKSS\*") Then
		'berechtigungen auslesen		
		Set settingsDoc =  New NotesDocument(db)
		settingsDoc.FORM = "fFolderRights"
		settingsDoc.co_folderTitle = ws.CurrentView.ViewName
		settingsDoc.co_rights = ws.CurrentView.View.Readers
		
		If (ws.dialogbox("fFolderRights",True,True,False,True,False,False,"Ordner erstellen",settingsDoc)) Then
			'ws.CurrentView.View.Readers = settingsDoc.co_rights
			Call settingsDoc.Save(True,False)
			Call serverAgent.RunOnServer(settingsDoc.NoteID)	
		End If
	End If
	Exit Sub
	
errHandler:
	Print "Rechte konnten nicht gesetzt werden (" & Error & "-" & Erl & ")" 
	Exit Sub
End Sub

Der Code des Agenten
Code

Sub Initialize()
	Dim session As NotesSession
	Dim db As NotesDatabase
	Dim settingsDoc As NotesDocument
	Dim serverAgent As NotesAgent
	
	'Init
	Set session = New NotesSession
	Set db = session.CurrentDatabase
	Set serverAgent = session.Currentagent
	Set settingsDoc = db.GetDocumentByID(serverAgent.ParameterDocID)
	
	Print serverAgent.Parameterdocid
	
	'berechtigungen übernehmen  
	db.Getview(settingsDoc.co_folderTitle(0)).Readers = settingsDoc.co_rights
	Call settingsDoc.Remove(True)
	

End Sub

Offline FlatPM

  • Frischling
  • *
  • Beiträge: 41
Re: Agent mit ParameterDocID findet Dokument nicht (immer).
« Antwort #10 am: 07.07.10 - 09:03:17 »
Tada... ich seh es gerade selber. Tomaten auf den Augen gehabt.
Wenn der Agent unter meinem Namen läuft und ich nicht mehr im im Leserfeld der View stehe, bekomm ich auch keine View zurück. Er bekommt das Dokument also korrekt. Nur die View nicht. Mea culpa....

Danke für die Hilfestellung!
« Letzte Änderung: 07.07.10 - 09:40:55 von FlatPM »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent mit ParameterDocID findet Dokument nicht (immer).
« Antwort #11 am: 07.07.10 - 09:21:23 »
Ok, meine Antwort kommt zu spät  :)

Die größte Hilfe ist oft, das Problem (sich selbst) genau zu beschreiben.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz