Domino 9 und frühere Versionen > ND7: Entwicklung

Agent um Erinnerungsmails als Aufgaben zu übernehmen

<< < (4/5) > >>

koehlerbv:
Ich hatte mir das gestern mal nachgebaut (wenn auch ohne Agent) - und ich bekam bei neuen Dokumenten im PostSave sehr wohl eine NoteID. Habe ich das richtig verstanden: Du hattest gestern im Debugger im Appointment-Dokument NoteID im PostSave kontrolliert?

Bernhard

PS: Pete, das mit dem Vertipper hatte ich mir schon gedacht. Freudscher Vertipper würde ich aber nicht sagen (dass würde ja Abgründe Deiner Seele auftun  ;D), eher lustig ... und wie es jedem von uns passieren kann  ;)

Demian:
Moin Bernhard,

ja. Habe es mir jetzt nochmal angeschaut und nen größeren (Inhalt) Screenshot gemacht.

Gruß
Demian

EDIT: Ich habe es mir jetzt auch mal mit dem Mailfile meines anderen Benutzers ausprobiert. Selbes Ergebnis.

EDIT2: Bin jetzt mal hin und habe ne lokale Maildb auf Grundlage der Mail(R7) erstellt und es dort probiert. Selbes Ergebnis.

koehlerbv:
Hm, ich habe mir das jetzt mal direkt im Mailfile (ich habe mal das 7er Template hergenommen) nachvollzogen: Während es in einer "nackernden" DB klappt (ein neu erstelltes Dokument hat nach dem Speichern im PostSave bereits eine NoteID) ist dies im Mailfile (Appointment Type 4) nicht der Fall. Ich habe mir das mal für "further investigations" notiert und werde mich dringend darum kümmern - ich sehe da eine üble Wissenslücke.

Was aber sofort funktioniert: Der PostOpen-Code beginnt mit
Call Source.Document.Save (True, False, True)
Setze dahinter spassenshalber ein
Messagebox Source.Document.NoteID
und Dir wir die NoteID angezeigt (und dann natürlich auch an den Agent übergeben).

Was mir aber bei der Sache (ich konnte das nun nicht sooo tiefschürfend verfolgen) noch auffällt: Warum machst Du das eigentlich überhaupt via Agent? RunOnServer funktioniert nun ja auch nicht überall ... Warum rufst Du zum Erzeugen eines Task-Documents nicht einfach eine entsprechende Function auf?

Bernhard

Demian:
also habe jetzt folgendes ins Postopen

If Not source.IsNewDoc Then Msgbox source.Document.NoteID

und er wirft mir die Note-ID aus. Allerdings finde ich kein

Call Source.Document.Save (True, False, True)

im Postopen?



--- Zitat ---RunOnServer funktioniert nun ja auch nicht überall ...
--- Ende Zitat ---


Inwieweit? Wissenslücke in Bezug auf was?

Naja man liest ja immer wieder, dass in den Originamaildatenbanken usw. keine Änderungen vorgenommen werden sollen. Also beschränke ich mich auf die nur notwendigsten Zeilen in den Original-Masken und lagere alles in einen Agenten aus. Bei evtl. Updateschwierigkeiten brauch ich dann nur den Agenten rauskopieren, und ihn zu löschen (hoffentlich).


Gruß
Demian


PS: Und der Agent hat inzwischen so seine Zeilen...wobei ich wohl doch in ne Scriptbibliothek auslager und es mit db.GetDocumentByUNID versuche, die ich im Postopen von _Kalendereintrag  speicher und im Postsave der Scriptbibliothek übergebe.

Sub Initialize
   '*******************************************************************************************************
   'Funktionen:
   'Aufgabe anhand der vom User erzeugten Erinnerung erstellen
   'Mailbenachrichtigung der Erinnerung hinzufügen
   
   'Beschreibung:
   'Wird im Postsave der  Maske _Kalendereintrag nach dem Originalcode ausgeführt.
   '
   'Parameter:
   'ParameterDocID = erstellte Erinnerung
   '*******************************************************************************************************
   'Allgemein   
   Dim agent As NotesAgent      
   '*******************************************************************************************************
   On Error Goto Fehler
   
   Set s = New NotesSession
   Set db = s.CurrentDatabase   
   Set agent = s.CurrentAgent   
   
   Call Logeintrag_Erstellen(db.Title,s.CommonUserName,"Agent: Aufgabe erstellen","Initialize",_
   "Suche Erinnerung")   
   
   Set Erinnerung = db.GetDocumentByID(agent.ParameterDocID)
   
   If Not (Erinnerung Is Nothing) Then
      Call Logeintrag_Erstellen(db.Title,s.CommonUserName,"Agent: Aufgabe erstellen","Initialize",_
      "Erinnerung gefunden")   
      
      Call MailBenachrichtigung(Erinnerung)
      Call AufgabeErstellen(Erinnerung)   
   Else
      Call Logeintrag_Erstellen(db.Title,s.CommonUserName,"Agent: Aufgabe erstellen","Initialize",_
      "Erinnerung nicht gefunden")   
   End If
   
Fehler:
   Call Logeintrag_Erstellen(db.Title,s.CommonUserName,"Agent: Aufgabe erstellen","Initialize",_
   Str(Err) & ": " & Error$)   
End Sub

 
Function MailBenachrichtigung(Erinnerung As NotesDocument)
   'Diese Funktion setzt die Benachrichtigungsrelevanten Felder
   
   Call Erinnerung.ReplaceItemValue("$Alarmdescription",Erinnerung.Subject(0))
   Call Erinnerung.ReplaceItemValue("$AlarmMemoOptions", "2")
   Call Erinnerung.ReplaceItemValue("$AlarmSendTo", s.CommonUserName)
   Call Erinnerung.ReplaceItemValue("$AlarmUnit", "M")
   
   Call Erinnerung.Save(True,False)   
   
   Call Logeintrag_Erstellen(db.Title,s.CommonUserName,"Agent: Aufgabe erstellen","MailBenachrichtigung",_
   "Alle Mail-relevanten Felder geändert")
End Function


Function AufgabeErstellen(Erinnerung As NotesDocument)
   'Aufgabe erstellen
   Set Aufgabe = db.CreateDocument
   
   Aufgabe.Form = "Task"
   
   Aufgabe.StartDate = Now
   Aufgabe.Subject = Erinnerung.Subject(0)
   Aufgabe.Categories = Erinnerung.Categories(0)
   Aufgabe.Chair = s.CommonUserName
   
   Call Aufgabe.ComputeWithForm(False,True)
   
   Call Aufgabe.Save(True,False)
   
   Call Logeintrag_Erstellen(db.Title,s.CommonUserName,"Agent: Aufgabe erstellen","AufgabeErstellen",_
   "Aufgabe entspr. Erinnerung erstellt")   
End Function
   

koehlerbv:

--- Zitat von: Demian am 27.11.07 - 20:33:12 ---also habe jetzt folgendes ins Postopen

If Not source.IsNewDoc Then Msgbox source.Document.NoteID

und er wirft mir die Note-ID aus. Allerdings finde ich kein

Call Source.Document.Save (True, False, True)
--- Ende Zitat ---

Zu Punkt 1: Dann war das wohl kein neues Dokument ...
Zu Punkt 2: Diese Zeile sollst Du nicht finden, sondern einfügen. Das AppointmentDoc muss ja eh gespeichert werden, wenn daraufhin dann eine Task erstellt werden soll.

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln