Autor Thema: Agent aktualisiert Dokumente nach antriggern durch LEI nicht  (Gelesen 4168 mal)

Offline F.Engel

  • Frischling
  • *
  • Beiträge: 27
  • Geschlecht: Männlich
Hallo,

ich habe ein kleines Problem.

Es werden jede Nacht Daten aus SAP überspielt...
Diese kommen durch ein SOAP Gateway in meine NotesDB.

Die Maske enthält ein berechnetes Feld, welches sich erst nach aktualisierung des Dokumentes auflöst.

Hierfür habe ich nun folgenden Agenten...
Im ersten Teil werden alle neuen Dokumente, in denen das besagte Feld noch leer ist, gegriffen und sollen neu berechnet werden und werden dann gespeichert.

Im 2. Teil werden die Dokumente weiterverarbeitet... der Teil ist jedoch problemlos.


Mein Problem ist nun, dass durch anstupsen durch den LEI Job keine neuen Dokumente aktualisiert werden. Irgendwie greift er an den Dokumenten vorbei.
Der 2. Teil funktioniert komischerweise bei antriggern durch LEI.


Wenn ich den Agenten nun aber im Designer schedule aktualisiert er brav alle Dokumente und macht was er soll...

Wo liegt das Problem? Ich habe erst gedacht, dass evtl ein View refresh hilft. Aber das hat ebenfalls nicht geklappt.
 

Code
Sub Initialize
Dim s As New NotesSession
Dim vi As NotesView
Dim vi2 As NotesView
Dim vi3 As NotesView
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim doc2 As NotesDocument
        Dim docnext As NotesDocument
Dim key As String
Dim temp As String
Set db = s.CurrentDatabase
Set vi3 = db.GetView("AlleRabattGruppen")
Set vi2 = db.GetView("RabattNEU")
Call vi2.Refresh
Set doc = vi2.GetFirstDocument
While Not doc Is Nothing
Set docnext = vi2.GetNextDocument(doc)
Call doc.ComputeWithForm(False,False)
Call doc.Save(True,False)
Set doc = docnext
Wend
key =""
temp =""
Set vi = db.GetView("RabattGruppen")
Call vi.Refresh
Call vi3.Refresh
Set doc = vi.GetFirstDocument
While Not doc Is Nothing
temp = doc.KUNNR_T(0)+"."+doc.Gruppe(0)+"."+doc.KSCHL(0)+"."+doc.DATAB(0)
If key<> temp Then
key = temp
Set doc2 =  vi3.GetDocumentByKey(key)
If doc2 Is Nothing Then
Set doc2 = New NotesDocument(db)
Call doc.CopyAllItems(doc2)
doc2.Form="RabattGruppe"
Call doc2.RemoveItem("PRODH1")
Call doc2.Save(False,False)
Else
If doc2.DATBI(0) <> doc.DATBI(0) Then
doc2.DATBI = doc.DATBI(0)
Call doc2.Save(False,False)
End If
If doc2.KBETR(0) <> doc.KBETR(0) Then
doc2.KBETR = doc.KBETR(0)
Call doc2.Save(False,False)
End If
End If
End If
Set doc = vi.GetNextDocument(doc)
Wend
End Sub

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent aktualisiert Dokumente nach antriggern durch LEI nicht
« Antwort #1 am: 07.07.11 - 09:15:46 »
Meinst Du mit dem ersten Teil dieses hier?

Set doc = vi2.GetFirstDocument
While Not doc Is Nothing
   Set docnext = vi2.GetNextDocument(doc)
   Call doc.ComputeWithForm(False,False)
   Call doc.Save(True,False)
   Set doc = docnext
Wend

Mit LEI hat das sicher nichts zu tun, wenn es so ist, dass LEI diesen einen Agenten mit allen Aktionen anstößt.

Ich würde die Mimik umstellen, da Du mit einer Ansicht arbeitest, dessen Inhalt sich durch den Agenten verändert. Dazu gibt es schon mehrere Beispiele hier im Forum. Entweder schaltest Du die Aktualisierung der Ansicht temporär aus oder Du holst Dir die relevanten Dokumente über eine Collection und verarbeitest die. Die zweite Lösung ist mir persönlich sympathischer.

Offline F.Engel

  • Frischling
  • *
  • Beiträge: 27
  • Geschlecht: Männlich
Re: Agent aktualisiert Dokumente nach antriggern durch LEI nicht
« Antwort #2 am: 07.07.11 - 09:20:01 »
Vorab, danke!

Eine DocumentCollection habe ich schon ausprobiert... mit einem db.Search... aus irgendeinem Grund habe ich diese wieder auskommentiert. Ich werds nochmal testen.

Wie kann ich denn in einer View temporär aktualisierungen deaktivieren?
Aus dem Grund, das sich die View verändert, habe ich das docnext vor dem speichern des Dokumentes abgefangen...

Code
Set doc = vi2.GetFirstDocument
While Not doc Is Nothing
   Set docnext = vi2.GetNextDocument(doc)
   Call doc.ComputeWithForm(False,False)
   Call doc.Save(True,False)
   Set doc = docnext
Wend

Und ja, dass soll der erste teil sein :-)

Komisch finde ich nur, dass es per Schedule alles funktioniert!!!

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Agent aktualisiert Dokumente nach antriggern durch LEI nicht
« Antwort #3 am: 07.07.11 - 09:25:26 »
Hallo,

Also die automatische Aktualisierung kannst Du so temporaer ausschalten:

view.AutoUpdate = False


Andreas

Offline F.Engel

  • Frischling
  • *
  • Beiträge: 27
  • Geschlecht: Männlich
Re: Agent aktualisiert Dokumente nach antriggern durch LEI nicht
« Antwort #4 am: 07.07.11 - 09:34:18 »
So kommt er übrigens auch nicht weiter...


Code
Set ndt = New NotesDateTime(Cstr(Datenumber(2011, 4, 20)))
Set dc = db.Search(|Form="Rabatt" & Gruppe=""|,ndt,0)
Set doc = dc.GetFirstDocument
While Not doc Is Nothing
Call doc.ComputeWithForm(False,False)
Call doc.Save(True,False)
Set doc = dc.GetNextDocument(doc)
Wend

Kann es irgendwas mit Berechtigungen zu tun haben?
Der LEI läuft auf einem anderen Server...

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent aktualisiert Dokumente nach antriggern durch LEI nicht
« Antwort #5 am: 07.07.11 - 09:44:20 »
Anstelle des ndt könntest Du auch Nothing schreiben (hat aber nichts mit Deinem Problem zu tun).

Lass Dir doch mal vom ComputeWithForm den Rückgabewert ausgeben (statt Call doc.ComputeWithForm ... return = doc.ComputeWithForm ...)

Vielleicht gibt es da ein Problem und er berechnet die Dokumente nicht. Ändert sich das Speicherungsdatum der Dokumente durch den Agentenlauf? Falls nicht, hat der Agentenausführer vielleicht keine Rechte, die Dokumente zu speichern (was allerdings eigentlich zum Abbruch des Agenten führen müsste).

NACHTRAG:

Die Dokumente sind aber auf dem anderen Server vorhanden, wenn LEI den Agenten startet?

Offline F.Engel

  • Frischling
  • *
  • Beiträge: 27
  • Geschlecht: Männlich
Re: Agent aktualisiert Dokumente nach antriggern durch LEI nicht
« Antwort #6 am: 07.07.11 - 09:47:23 »
Er speichert die Dokumente leider nicht..
Das speichern funktioniert nur, wenn der Agent gescheduled wird.
Per LEI bekommt er das irgendwie nicht hin.

Verwundern tut mich allerdings, dass der 2. Teil dann wiederrum funktioniert.

Ich habe volle Managerrechte für den Domino3 (auf dem LEI läuft) vergeben.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent aktualisiert Dokumente nach antriggern durch LEI nicht
« Antwort #7 am: 07.07.11 - 09:48:46 »
Was meinst du mit "wenn der Agent gescheduled wird"?

Offline F.Engel

  • Frischling
  • *
  • Beiträge: 27
  • Geschlecht: Männlich
Re: Agent aktualisiert Dokumente nach antriggern durch LEI nicht
« Antwort #8 am: 07.07.11 - 09:55:20 »
Siehe Bild ;)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent aktualisiert Dokumente nach antriggern durch LEI nicht
« Antwort #9 am: 07.07.11 - 09:59:45 »
Also er läuft periodisch auf dem anderen Server und "tut da". (Mit meiner Frage wollte ich ausschließen, dass Du "debuggen" gemeint hast - hätt' ja sein können ...).

Nochmal die Frage zum Ablauf (hatte ich oben als Nachtrag angefügt).

Wenn auf dem anderen Server der LEI startet, auf welchem Server werden die Dokumente hinzugefügt? Ist sichergestellt, dass die neuen zu verarbeitenden Dokumente auf dem LEI-Server vorhanden sind, wenn der Agent dort gestartet wird?

Offline F.Engel

  • Frischling
  • *
  • Beiträge: 27
  • Geschlecht: Männlich
Re: Agent aktualisiert Dokumente nach antriggern durch LEI nicht
« Antwort #10 am: 07.07.11 - 10:03:29 »
Ja, die Dokumente sind definitiv vorhanden.
Ich teste es momentan immer durch manuelles anstoßen des LEI-Jobs.
Wenn ich den Agenten manuell vom Server (Rechtsklich -> Run) starte/debugge läuft er auch sauber durch.  :-:

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent aktualisiert Dokumente nach antriggern durch LEI nicht
« Antwort #11 am: 07.07.11 - 10:30:39 »
Sorry, da gehen mir nun langsam auch die Ideen aus. Vielleicht solltest Du im ersten Teil temporär Prints einbauen, um zu sehen, ob er Dokumente verarbeitet, dann hat er vielleicht ein Problem dabei, oder ob er keine Dokumente findet. Das grenzt die Fehlersuche weiter ein.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz