Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: lakin am 20.07.05 - 10:02:42
-
Hallo Leute.
Ich habe einen Agenten Serverseitig laufen. Jedoch tut der gute nichts. Wenn ich dann im Designer das Protokoll betrachte steht da folgendes:
Started running agent 'Agnt1' on 20.07.2005 09:58:36
Running on all documents in database: 2065 total
Found 2065 document(s) that match search criteria
Ran LotusScript code
Done running agent 'TextExport' on 20.07.2005 09:58:36
Wenn ich den Agenten Lokal laufen lasse dann Funktioniert er super.
Was kann da los sein?
-
Hast du UIDoc oder UIWorkspace in deinen Agent verwendet?
-
Hallo lakin,
hast du Frontend-Klassen verwendet ? Vielleicht mal ein bisschen von dem Code scripten, alles andere ist Kaffeesatzleserei, das Protokoll meldet ja keinen Fehler.
Edit: robertpp war schneller
Jo
-
....soweit ich weiss keine Front-End Klasse vorhanden
Sub Initialize
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim tmpCount As Integer
Dim session As New NotesSession, _
Dim se As New NotesSession
Dim dbPath As String
Dim dbserv As String
Dim i As Integer
Dim j As Long, DBtit As String
dbserv = "sv1"
dbPath = "db.nsf"
fname = "Exp_02.txt"
Dim fileNum As Integer
Dim fileName As String
fileNum% = Freefile()
fileName$ = "\\server\ordner\ordner2\ordner3\" + fname(a)
Open fileName$ For Output As fileNum%
Set db = se.GetDatabase(dbserv, dbPath)
DBtit = db.Title
Set view = db.GetView("vwEExp")
ViewName = view.Name
'Add the table labels
Forall c In view.Columns
Print #fileNum%, c.title + ";";
End Forall
Print #fileNum%, Chr(13)
Set doc = view.GetFirstDocument
While Not ( doc Is Nothing )
RowCount = 0
For x= 1 To view.Columncount
'Schauen ob Spaltenwert ein Array ist
Dim wert, wert1, wert2 As String
If Isarray(doc.ColumnValues(RowCount)) Then
wert = doc.ColumnValues(RowCount)
wert1 = wert(0)
Else
wert1 = doc.ColumnValues(RowCount)
End If
wert2 = Cstr(wert1)
Print #fileNum%, wert2 + ";";
RowCount=RowCount+1
Next
Print #fileNum%, Chr(13)
Set doc = view.GetNextDocument(doc)
Wend
Close fileNum%
End Sub
-
was hast Du bei den Sicherheitsoptionen eingestellt?
Mit Operationen auf Dateiebene muss es glaube ich 2 oder 3 sein.
-
Du greifst auf das Filesystem zu ich denke das solltest du beim Agent den Runtime Security Level auf 3 setzen.
Findest du in den Eigenschaften des Agent am Security Reiter.
Versuch das mal.
-
... und mal nachschauen, was nach 9:58 Uhr im Log des Servers steht.
Bernhard
-
ooh... da kommen wir der Sache schon näher.... :)
Wenn ich die Ausführungsrechte des Agenten auf 3 stelle dann bekomme ich im Protokoll angezeigt:
Notes Error: Fehler beim Validieren des Agentenausführungszugriffs des Benutzers
soll warscheinlich heissen, dass ich zuwenig rechte auf dem Server habe ???
-
ja genau so sieht es aus. Unterzeichne den Agent mit einer ID, die diese Rechte hat (eventuell Server-ID).
-
Immer wieder das gleiche Problem:
fileName$ = "\\server\ordner\ordner2\ordner3\" + fname(a)
Du greifst auf einen Share zu.
Da Notes standardmässig unter dem System Account läuft funktioniert das nicht.Dies wird von Windoof unterbunden.
Notes muss daher unter einem anderen Account laufen.
Ausserdem braucht der Unterzeichner die rechte Restricted Agents auszuführen (siehe Config Dokument des Servers)
gruss
umi
-
Notes muss daher unter einem anderen Account laufen.
..heisst das, dass im Feld "Agent unter anderem Benutzernamen ausführen" der Name eines Notes Users mit vollen Rechten stehen muss?
-
Nö, das heisst der Notesserver läuft als Dienst auf Deiner Windows Kiste.
Dieser NotesDienst läuft wahrscheinlich unter dem Account System. Dieser Account darf aber auf keine Shares zugreifen.
gruss
umi
-
...Na wenn Das so aufwändig ist dann spar ich mir den ganzen Quatsch und ziehe die Daten mit einer externen Applikation aus Notes heraus.
Ich denke das macht dann keinen Sinn wenn einem Serverseitig so viele Steine in den Weg gelegt werden. Ausserdem werden unsere Domino Server nach und nach auf Unix Maschinen installiert und dann hat der ganze kram eh keine Funktion mehr.
Aber immerhin hab ich ne ganze menge dazugelernt.
Vielen Dank und viele Grüße von Lakin.
-
So was in der art hatte ich auch schon gemacht.
Mach eine Netzlaufwerk verbindung und greif auf die drauf, dann müsste es Funktionieren.
Dann heist es z.b.:
fileName$ = "Y:\ordner\ordner2\ordner3\" + fname(a)
-
Noch mal so am Rande....
Würdet Ihr es für sinvoll halten sich bezüglich dieses Themas in die "LSX" - Connectoren einzuarbeiten...??? Ich habe gelesen, dass es da eine ganz Komfortable lösung geben soll. Oder habt Ihr damit eher schlechte Erfahrungen gemacht?