Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Thomses am 08.03.13 - 00:01:02

Titel: Besprechungstermine mit mehreren Teilnehmern per Script erstellen
Beitrag von: Thomses am 08.03.13 - 00:01:02
Hallo liebe @Notes-ler!

Lang lang ist's her, aber heute bitte ich mal wieder sehr um Hilfe.
Bei einem aktuellen Problem habe ich schon versucht, dies durch Recherchieren, Ausprobieren und Lernen zu lösen. Die ein oder anderen Anregungen habe ich schon versucht einzubauen.
Im Moment verzweifel ich aber eher.

Mir geht es darum, eine Anwendung zu erweitern, welche Besprechungstermine mit mehreren Teilnehmern erstellt und diese denen zur Annahme zukommen lässt.

Meine Rangehensweise ist derzeit wie folgt:
1. Ich erstelle (u.a. aus Platz- und Sicherheitsgründen) einen Kalendertermin (Besprechung) per Script ausgehend von meiner Anwendung in einer zweiten Datenbank (R8-Mail-Schablone).
2. Der Besprechung sollen Teilnehmer hinzugefügt werden und diese dann per Einladungen .. tja eingeladen werden.
3. Die Annahmen / Ablehnungen werde ich dann später wieder auswerten. (da bin ich aber noch lange nicht..)


Zu 1. habe ich folgenden Quellcode zur Verfügung:

Code
Public Function Agent_ErstelleEinladungsmailXXX(strDocID As String)
	
	Const strMailInDBPfad = "mail/mailin_bespiel.nsf"
	
	On Error Goto Myerrorhandler
	
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Set db = session.CurrentDatabase
	
	Dim doc As NotesDocument
	Set doc = db.GetDocumentByUNID(strDocID)
	If doc Is Nothing Then 
		Print "ABBRUCH - doc not found"
		Exit Function
	End If
	
	'*************************************************************************************************************************************************
	
	Dim dbMailX As NotesDatabase
	Dim docMailX As NotesDocument
	Dim rtiMailX As NotesRichTextItem
	
	Dim varStrBody As Variant
	
	Dim arrTeilnehmerListe(2) As Variant
	Dim ndtStart As NotesDateTime
	Dim ndtEnde As NotesDateTime
	Dim strTimeZone As String
	Dim strExcludeFromView(1) As String
	
	arrTeilnehmerListe(0) = "Teilnehmer 1"
	arrTeilnehmerListe(1) = "Teilnehmer 2"
	arrTeilnehmerListe(2) = "Teilnehmer 3"
	
	strExcludeFromView(0) = "D"
	strExcludeFromView(1) = "S"
	
	
	'Daten für Mail/Kalender-DB des Vorstandssekretariats (für TOP-Planung & zu Terminvereinbarungen)
	Set dbMailX = session.GetDatabase( db.Server, strMailInDBPfad )
	If dbMailX Is Nothing Then
		Call dbMailX.Open(db.Server, strMailInDBPfad )
		If dbMailX Is Nothing Or Not(dbMailX.IsOpen) Then
			Print "ABBRUCH - dbMailX not found"
			Exit Function
		End If
	End If
	
	
	' Termineinladung................... 
	Set docMailX = New NotesDocument(dbMailX)
	docMailX.Form = "Appointment"
	
	docMailX.From = session.UserName
	docMailX.AppointmentType = "3"
	
	docMailX.Subject = "Besprechnungsbeispiel"
	Set rtiMailX = New NotesRichTextItem( docMailX, "Body" )
	Call rtiMailX.AddNewline(2, False)
	Call rtiMailX.AppendText("Folgende Besprechung soll geplant werden … usw." )
	Call rtiMailX.AddNewline(1)
	Call rtiMailX.Compact
	
	Set ndtStart = New NotesDateTime( doc.Datum_von_NDT(0) )
	Set ndtEnde = New NotesDateTime( doc.Datum_bis_NDT(0) )
	
	docMailX.Location = "ABC"
	docMailX.Chair = session.UserName	
	docMailX.AltChair = session.UserName
	docMailX.Principal = session.UserName
	docMailX.~$AltPrincipal = session.UserName
	
	strTimeZone = "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=97$ZN=W. Europe"
	docMailX.CalendarDateTime = ndtStart.LSLocalTime
	docMailX.StartDateTime = ndtStart.LSLocalTime
	docMailX.StartDate = ndtStart.DateOnly
	docMailX.StartTime = ndtStart.TimeOnly
	docMailX.StartTimeZone = strTimeZone
	docMailX.EndDateTime = ndtEnde.LSLocalTime
	docMailX.EndDate = ndtEnde.DateOnly
	docMailX.EndTime = ndtEnde.TimeOnly
	docMailX.EndTimeZone = strTimeZone
	
	docMailX.Alarms = "1"
	docMailX.PreventCounter = "1"
	docMailX.PreventDelegate = "1"	
	docMailX.ExcludeFromView	 = strExcludeFromView
	docMailX.~$Alarm = 1
	'docMailX.~$CSVersion = "2"
	'docMailX.~$CSFlags = "c"
	docMailX.~$PublicAccess = "1"
	docMailX.~$HFFlags = "1"
	docMailX.~$IconSwitcher = "Meeting"
	docMailX.~$TableSwitcher = "Description"
	docMailX.~$SMTPKeepNotesItems = "1"
	docMailX.SchedulerSwitcher = "1"
	docMailX.SequenceNum = 1
	docMailX.UpdateSeq = 1
	docMailX.WebDateTimeInit = 1
	
	docMailX.SendTo = arrTeilnehmerListe
	docMailX.EnterSendTo = arrTeilnehmerListe
	docMailX.RequiredAttendees = arrTeilnehmerListe
	
	docMailX.~$BusyPriority = "1"
	docMailX.~$NoPurge = ndtEnde.LSLocalTime
	docMailX.MailOptions=""
	docMailX.tmpWhichList = ""
	docMailX.OrgTable = "C0"
	docMailX.OrgState = "x"
	docMailX.Repeats = ""
	docMailX.Resources = ""
	docMailX.SaveOptions = ""
	
	
	Call docMailX.ComputeWithForm(False, False)
	Call docMailX.Save(True, False)
	'Call docMailX.Send(False)  'Sende Mail
	
Ende:
	Print "End"
	
	'Agenthilfsdok wird beim nächsten Löschturnus mit gelöscht
	doc.DeletionFlag = "X"
	Call doc.Save( True, False )
	
	Exit Function
	
Myerrorhandler:
	Print "Error: " & Error$ & " (" & Cstr(Err) & ") - Line: " & Cstr(Erl)
	
	Resume Ende
	
End Function




Mein Problem ist, dass dies nicht funktioniert.
Die Besprechungstermine (per Script) unterscheiden sich von den Feldern her immer recht stark von den manuell erstellten Terminen. Merkwürdiger Weise fliegen auch immer die Teilnehmer raus.

Es muss doch möglich sein, derartige Besprechungen mit Teilnehmern per Script zu erstellen!?

Fragen:
Wo steckt der Fehler im Script? Dürfen einige der Felder noch nicht gesetzt werden oder müssen diese teilweise andere Werte haben?
Oder ist die grundsätzliche Herangehensweise falsch? Wie schaut ggf. eine bessere aus?

Jeder gute Gedanke hilft.
Danke in jedem Fall schonmal, ich blicke nämlich nicht mehr durch!

Viele Grüße
Thomas
Titel: Re: Besprechungstermine mit mehreren Teilnehmern per Script erstellen
Beitrag von: Tode am 08.03.13 - 00:30:14
Lies Dir bitte das PDF mit dem Calendaring und scheduling schema durch... Da ist genau beschrieben, wie eine besprechung aufgebaut ist, wie man eine Notice verschickt, welche Felder wofür gefüllt werden müssen, etc. Etc.

Dann muss auch niemand den Spaghetticode nach möglichen fehlenden Feldern durchsuchen und Du lernst auch noch was dabei...
Titel: Re: Besprechungstermine mit mehreren Teilnehmern per Script erstellen
Beitrag von: koehlerbv am 08.03.13 - 00:35:43
Torsten spricht wahr. Ich liefere dazu noch zwei Links:
http://www-10.lotus.com/ldd/ddwiki.nsf/dx/cs_schema_toc
http://www-12.lotus.com/ldd/doc/uafiles.nsf/docs/WPNotesCSSchema/$File/csschema.pdf

Bernhard
Titel: Re: Besprechungstermine mit mehreren Teilnehmern per Script erstellen
Beitrag von: Thomses am 08.03.13 - 11:30:43
Hallo Torsten, hallo Bernhard,
vielen Dank für Eure Hinweise und die Links! Da habe ich am Wochenende in jedem Falls reichlich "Stoff" zum Durcharbeiten.

Dennoch die Bitte zur Beantwortung der Verständnis-Frage bzgl der Herangehensweise - die Antwort würde mir sehr helfen.
a) Müssen ein Kalendereintrag für den Ersteller UND die Notice-Dokumente für die Teilnehmer erstellt werden?
oder
b) Muss "nur" das Kalendereintragdokument für den Ersteller erstellt werden und Notes kümmert sich dann gewissermaßen selbst um den Rest (Versenden der Einladungen beim Speichern)?

Ich vermute mal nach dem Hinweis von Torsten, dass a) der Weg ist...
Titel: Re: Besprechungstermine mit mehreren Teilnehmern per Script erstellen
Beitrag von: Tode am 08.03.13 - 11:45:03
a) ja
b) nein
Titel: Re: Besprechungstermine mit mehreren Teilnehmern per Script erstellen
Beitrag von: Thomses am 08.03.13 - 11:54:38
Ich ahnte es ;-) ... Warum kann es nur nicht leichter gehen? (Antwort bekannt  ;) )
Danke Dir/Euch!!!
Titel: Re: Besprechungstermine mit mehreren Teilnehmern per Script erstellen
Beitrag von: Thomses am 13.03.13 - 22:26:06
Also wer sich mit Besprechungen, Terminen usw. auseinandersetzt, hat wirklich eine ganze Weile lang einiges zu tun... Da gibt es schon eine Menge Stoff zum Durcharbeiten und Testen.

Für die Infosuche empfehle ich statt z.B. nach "Termin Besprechung Einladung Lotus Script" o.ä. dann doch eher nach dem englischen "Calendaring & scheduling" kurz "C&S" zu suchen. Man findet dann doch mehr  ;D


Neben den von Bernhard genannten Seiten haben mir dann noch folgende Seiten geholfen.

http://www.ibm.com/developerworks/lotus/library/cs-pt1/
http://www.ibm.com/developerworks/lotus/library/cs-pt2/


Achja und beachtet werden sollte, dass via individuellem Script versendete Teilnehmerbenachrichtigungen (Form "Notice") Antwortdokumente zum Termin darstellen. Das ist insb. für spätere Termin-Updates usw. wichtig.