Autor Thema: 1 Agent 2 Ergebnisse  (Gelesen 3527 mal)

Offline Gero

  • Junior Mitglied
  • **
  • Beiträge: 71
  • Geschlecht: Männlich
  • Keep Smiling
1 Agent 2 Ergebnisse
« am: 18.08.04 - 10:31:34 »
Hallo,
folgendes kann ich nicht verstehen, suche Erklärbär:
In einer Mailin DB läuft ein Agent nach eingang neuer Mail.
Er erstellt nur eine Textdatei aus dem Body und fügt dem Dokument das Feld
"processed" hinzu, damit es aus der Ansicht verschwindet.
Die Mails kommen von nicht-Notes Systemen. Vor dem Agent sind ö und ü lesbar,
nacher sind sie durch Fragezeichen ersetzt, aber nur wenn der Agent nach neuer
Mail läuft. Lasse ich den selben Agenten von Hand laufen, bleiben die Umlaute erhalten. Es ist doch 2 mal der gleiche Agent, doch ich kann die selbe Mail immer
wieder in die Datenbank kopieren und erhalte immer 2 verschiedene Eregebnisse.
Oueue abarbeiten/Local ruft ProcessDocuments manuell auf:
Sub ProcessDocuments
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim v As notesview
   Dim search As String
   Dim d As Notesdocument   
   Dim i As Notesitem
   Dim dateTime As New NotesDateTime("12/01/94")
   Dim rtitem As Variant
   Dim content As Variant, contents As String
   
   On Error Goto fehler
   
   Set db = session.CurrentDatabase
   Set v = db.GetView("Queue")   
   If session.currentagent.servername = "CN=XYZNT01/O=FIRMA" Then
      Path = "/EDINOTES/IN/"   
   Else
      Path = "W:/EDINOTES/IN/"   
   End If
   Fname = "F" & Format(Now,"yyyymmddhhmmss")
   File = path  & fname
   x=0
   
   Set d = v.GetFirstDocument
   While Not (d Is Nothing)
      If d.HasEmbedded Then
        If d.HasItem("Body") Then         
          Set rtitem = d.GetFirstItem( "Body" )
            If ( rtitem.Type = RICHTEXT ) Then
              If rtitem.EmbeddedObjects <> "" Then
      Forall o In rtitem.EmbeddedObjects
       If ( o.Type = EMBED_ATTACHMENT ) Then
      x=x+1
      Call o.ExtractFile( file & "_" & Cstr(x) & ".TXT" )
      RetCod=InfoSys1 (fname & "_" & Cstr(x) & ".TXT")         End If
   End Forall         
   Else               
   contents = Rtitem.Text
   x=x+1         
   FN=1
   Open file & "_" & Cstr(x) & ".TXT"  For Output As FN
     Print # FN,contents
   Close FN
   RetCod=InfoSys1 (fname & "_" & Cstr(x) & ".TXT")         
   End If      
   End If
   Else
   ' no body field - no data
   End If
   Else
   If d.hasitem("Body") Then
      Set rtitem = d.GetFirstItem( "Body" )
   contents = Rtitem.Text
   x=x+1         
   FN=1
   Open file & "_" & Cstr(x) & ".TXT"  For Output As FN
   Print # FN,contents
   Close FN
   RetCod=InfoSys1 (fname & "_" & Cstr(x) & ".TXT")         
   End If
                End If
             Set i = D.ReplaceItemValue( "Processed", Format(Now(), "General Date") )
      Call d.Save( True, False )
      Call v.refresh      
      Set d = v.GetFirstDocument
   Wend      
Ende:   
   Exit Sub
Fehler:      
   If logopened Then
      Call aLog ( "Fehler: " & Str(Err) & ": " & Error$)
      cLog.Close
   Else
Print "CpyToServer in editrans.nsf hat Fehler " & Str(Err) & " in Zeile " & Erl() & ":" & Error$
   End If
   Resume Ende      
End Sub

Wenn das Ding über eingang Mail gestartet wird, kommt zuerst:
Sub Initialize
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim a As NotesAgent
   Set db = s.CurrentDatabase
   Set a = db.GetAgent("CopyToServer")
   If a.RunOnServer = 0 Then
   Print "Queue processed on server " & db.Server
   Else
   Print "Error processing queue on server " & db.Server
   End If
End Sub

"Copy to Server" nimmt nur alle Dokumente in einem bestimmten Ordner und ruft
wieder "ProcessDocuments" auf.
Hierbei wird die Mail in irgend einer Form umgewandelt und Umlaute werden zu ?.
Ich komme hier einfach nicht weiter. Bin für jeden Tip dankbar!
Grüsse auf Hessen
AS400/Notes Server 6.51/Client 6.51

Onkel ToM

  • Gast
Re:1 Agent 2 Ergebnisse
« Antwort #1 am: 18.08.04 - 10:42:50 »
Hallo,

läuft der Agent nach Eingang neuer Mail, läuft er auf dem Server.
Lässt du ihn per Hand laufen, läuft er auf dem Client.

Ich gehe mal davon aus, dass du irgendein deutsches Windows als Basis für deinen Client benutzt. Da passt das schon.
Aber: Kennt die AS/400 (dein Server) deutsche Umlaute?

Bye
Onkel ToM



Glombi

  • Gast
Re:1 Agent 2 Ergebnisse
« Antwort #2 am: 18.08.04 - 10:48:23 »
Der Knackpunkt wird die Zeile
 contents = Rtitem.Text
sein. Hier wird der Inhalt des Rich Text Feldes ausgelesen und nur der Text zurückgeliefert. Offenbar kennt das Betriebssystem die deutschen Umlaute nicht.
Da solltest Du Dich an den Admin der AS 400 wenden...

Andreas

Offline Gero

  • Junior Mitglied
  • **
  • Beiträge: 71
  • Geschlecht: Männlich
  • Keep Smiling
Re:1 Agent 2 Ergebnisse
« Antwort #3 am: 18.08.04 - 11:01:27 »
Wow, das wird es sein! Vielen Dank für die super schnelle Antwort!
Optimistisch wie ich bin setzte ich mal auf erledigt.
AS400/Notes Server 6.51/Client 6.51

Glombi

  • Gast
Re:1 Agent 2 Ergebnisse
« Antwort #4 am: 18.08.04 - 11:04:34 »
Wobei - bei AS400 und Vorsprechen beim verantwortlichen Admin, da wäre ich nicht ganz so optimistisch.
Es sind gewisse Seiteneffekte und Abhängigkeiten zu anderen nicht Notes Anwendungen zu berücksichtigen.
Ausser auf der Kiste läuft "nur" der Domino Server und keine anderen Anwendungen.

Andreas

Offline Gero

  • Junior Mitglied
  • **
  • Beiträge: 71
  • Geschlecht: Männlich
  • Keep Smiling
Re:1 Agent 2 Ergebnisse
« Antwort #5 am: 18.08.04 - 11:17:32 »
Wobei contents = Rtitem.Text doch nur für den Export als TXT gebraucht wird.
Ich sehe im script nicht, daß die Mail selbst überschrieben wird.
Es geht nicht um die Exportdatei, sonden um die Mail in der Datenbank die einmal
verädert wird und einmal nicht.
AS400/Notes Server 6.51/Client 6.51

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re:1 Agent 2 Ergebnisse
« Antwort #6 am: 18.08.04 - 11:24:53 »
Du speicherst die Mail ab (d.Save), vermutlich reicht das aus, um die "Konvertierung" durchzuführen...

Probier doch mal folgendes: erstell einen Agenten mit diesen paar Zeilen:

Dim ses as New NotesSession
Dim db as NotesDatabase
Dim viw as NotesView
Dim doc as NotesDocument

set db = ses.CurrentDatabase
set viw = db.GetView( "AmBestenEinenOrdner" )
set doc = viw.GetFirstDocument

call doc.Replaceitemvalue( "Processed" , Format(Now(), "General Date")
call doc.Save( True, False )

Jetzt lass den Agenten auf dem Server rennen (per te amgr run "DeineDB.nsf" 'NameDesAgents' )

und kuck, ob die Mail (die Du vorher in den Ordner schiebst, den Du als viw angegeben hast) konvertiert wird, oder nicht...

Wenn ja, dann hast Du die bestätrigung, wenn nein musst Du den Agenten nach und nach um dein Script ergänzen und schauen, welcher Befehl die Konvertierung veranlasst...

HTH
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Lossa

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.404
  • Geschlecht: Männlich
    • alphaTrain
Re:1 Agent 2 Ergebnisse
« Antwort #7 am: 18.08.04 - 12:05:17 »
Hi,

ich gehe einmal davon aus, das die Mail aus dem Internet gesendet wird. Die Standard konfiguration ist, das der Domino Server die Mail im orginal Format belässt, das heist in der Mail-DB steht eine MIME Mail.
Wenn nun auf dieses Dokument zugegriffen wird, dann wird die Mail in diesem Fall konvertiert. Wenn nun ein System benutzt wird, das die deutschen Umlaute oder auch die einer anderen Sprache nicht kennt, dann werden diese eben automatisch durch Sonderzeichen ersetzt.

Es ist also wichtig, bei MIME Dokumenten auch die MIME Klassen von Script zu verwenden, denn nur dann habe ich als Programmierer Einfluss darauf wie der Inhalt gelesen werden soll.
Viele Grüße

Ulrich Lossa
Aktiv als Notes Admin und Entwickler seit Version 1.
Freier Trainer und Berater.
Zertifiziert für alle Versionen SA und DB.
HCL Certified Administrator
IBM Certified Advanced Application Developer (PCLP AD)
IBM Certified Advanced System Administrator (PCLP SA)
IBM Certified Instructor for System Administration and Application Development ( CLI)
IBM Certified Instructor for Websphere Software
IBM Certified Instructor for DB2
http://www.alphatrain.de
Lossa@alphatrain.de

Offline Gero

  • Junior Mitglied
  • **
  • Beiträge: 71
  • Geschlecht: Männlich
  • Keep Smiling
Re:1 Agent 2 Ergebnisse
« Antwort #8 am: 18.08.04 - 12:45:34 »
Dann gibt er folgendes auf der Konsole aus:
AMgr: Error attempting to load agent 'nimmmail' in 'mail/gpresser.nsf': Unsupported trigger and search in the background or embedded agent

Zuerst habe ich als Auswahl alle in Odner gehabt. Bei der suche nach dieser Fehlermeldung aber gemerkt das es nicht geht bei
-All unread documents in view
-All documents in view
-All selected documents
-When documents are pasted documents
Jetzt habe ich keine Auswahl und dennoch kommt die Meldung...
AS400/Notes Server 6.51/Client 6.51

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re:1 Agent 2 Ergebnisse
« Antwort #9 am: 18.08.04 - 13:16:58 »
Der Trigger "durch ereignis" funktioniert nicht, wenn man einen Agenten auf dem Server ausführen will... stell auf "durch Zeitplan" und Ziel "alle Dokumente in der Datenbank"

Dann klappt's auch mit dem amgr run

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz