Domino 9 und frühere Versionen > ND7: Entwicklung
Scriptbibliotheken
koehlerbv:
Hä? Unübersichtlich? Viele Deklarationen? Andererseits aber gerade erst die Möglichkeit der Parameterübergabe entdeckt? Was nun?
Und man exportiert sowieso erst, wenn man den Code robust in einer Test- oder Life-DB verifiziert hat. Den exportierten Code schaut man sich dann niemals an (zumindest nicht in dem Sinn, den Du verstanden hast).
Bernhard
Demian:
das Prinzip der Parameterübergabe kenne ich aus Office. Dachte in Notes gebe es nur die Agenten, denen man nur auf Umwegen Parameter übergeben kann.
die Bibliothek enthält folgenden Code:
Deklarationen
'==========================================================
'Allgemein
Dim s As NotesSession
Dim db As NotesDatabase
'Namenstrennung
Dim Zaehler As Integer
'==========================================================
'Benutzerdaten für Funktion "Benutzer_Auslesen"
Public Benutzer_Vorname As String
Public Benutzer_Nachname As String
Public Benutzer_UnterschriftsName As String
Public Benutzer_UnterschriftsZusatz As String
Public Benutzer_Straße As String
Public Benutzer_Ort As String
Public Benutzer_Telefon As String
Public Benutzer_EMail As String
Public Benutzer_Telefax As String
Public Benutzer_Abteilung As String
'==========================================================
'Arbeitnehmerdaten für Funktion "Arbeitnehmer_Auslesen"
Public Arbeitnehmer_Anrede As String
Public Arbeitnehmer_Vorname As String
Public Arbeitnehmer_Nachname As String
Public Arbeitnehmer_Straße As String
Public Arbeitnehmer_Ort As String
Public Arbeitnehmer_Austritt As String
Public Arbeitnehmer_PersNr As String
'==========================================================
Initialize
Set s = New NotesSession
Set db = s.CurrentDatabase
Function Arbeitnehmer_Auslesen(Arbeitnehmer As String)
Dim work As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim view As NotesView
Dim doc As NotesDocument
'Keys auslesen
Set uidoc = work.CurrentDocument
If uidoc.FieldGetText("Mitarbeiter") = "" Then
Msgbox "Es wurde kein/e Mitarbeiter/in ausgewählt!",,"Musterfirma"
Exit Function
End If
'Arbeitnehmername
Zaehler = Instr ( 1,uidoc.FieldGetText("Mitarbeiter") , "," )
Arbeitnehmer_Vorname = Right$(uidoc.FieldGetText("Mitarbeiter"),Lenc(uidoc.FieldGetText("Mitarbeiter")) - Zaehler -1)
Arbeitnehmer_Nachname= Left$(uidoc.FieldGetText("Mitarbeiter"),Zaehler - 1)
'Anschrift
Set view = db.GetView("Personal - " & uidoc.FieldGetText("Bereich"))
Set doc = view.GetFirstDocument
For i = 1 To view.AllEntries.Count
If Arbeitnehmer_Vorname = doc.Vorname(0) Then
If Arbeitnehmer_Nachname = doc.Nachname(0) Then
Arbeitnehmer_Anrede = doc.Anrede(0)
Arbeitnehmer_Straße = doc.Straße(0)
Arbeitnehmer_Ort = doc.PLZ(0) & " " & doc.Ort(0)
Arbeitnehmer_PersNr = doc.PersNr(0)
Arbeitnehmer_Austritt = doc.Austritt(0)
Exit For
End If
End If
Set doc = view.GetNextDocument(doc)
Next i
End Function
Function Benutzer_Auslesen(Benutzername As String)
'===============================================================================
'Dieser Code liest die Benutzerdaten aus seinem Personendokument im NAB
'und speichert diese in globalen Variablen, die in Prozeduren zur Schriftverkehrerstellung
'benötigt werden.
'===============================================================================
'Allgemein
Dim Quelldb As NotesDatabase
Dim Quellview As NotesView
Dim Quelldoc As NotesDocument
'===============================================================================
'Vorbereitungen
Set Quelldb = s.GetDatabase("Server","names.nsf")
Set Quellview = Quelldb.GetView("_Personen")
Set Quelldoc = Quellview.GetFirstDocument
'Benutzername
Zaehler = Instr(Benutzername," ")
Benutzer_Vorname = Mid(Benutzername,4,Zaehler - 4)
Zaehler = Instr(Benutzername,"/") - Zaehler - 1
Benutzer_Nachname = Mid(Benutzername,Len(Benutzer_Vorname)+5,Zaehler)
'alle weiteren Benutzerdaten
For i = 1 To Quellview.AllEntries.Count
If Quelldoc.Firstname(0) = Benutzer_Vorname Then
If Quelldoc.LastName(0) = Benutzer_Nachname Then
Benutzer_Straße = Quelldoc.OfficeStreetaddress(0)
Benutzer_Ort = Quelldoc.OfficeZIP(0) & " " & Quelldoc.OfficeCity(0)
Benutzer_Telefon = quelldoc.OfficePhoneNumber(0)
Benutzer_Telefax = quelldoc.OfficeFAXPhoneNumber(0)
Benutzer_Email = quelldoc.InternetAddress(0)
Benutzer_Abteilung = quelldoc.Department(0)
Benutzer_Unterschriftsname = quelldoc.AltFullNameSort(0)
Benutzer_UnterschriftsZusatz = quelldoc.JobTitle(0)
Exit For
End If
End If
Set Quelldoc = Quellview.GetNextDocument(Quelldoc)
Next i
End Function
so untereinander weggeschrieben wird das ganze unübersichtlich finde ich. Zumal es ja sicher nicht weniger Funktionen werden.
Gruß
Demian
PS: Mit dem Thema Telefon und Telefax muss ich mich noch auseinandersetzen, was das Trennen angeht.
flaite:
Agenten haben natürlichen auch zumindest Möglichkeiten der (sagen wir) Wahrnehmung des dynamischen Kontext.
Aus dem Code gestartete Agenten kann eine NoteID übergeben werden: notesAgent.RunOnServer( [ noteID$ ] )
Webagenten können sogar alle per HTTP-GET oder HTTP-POST übergebenen Parameter roh auslesen
(notesSession.DocumentContext).
Für die Zentralisierung von datenbankübergreifenden Skriptbibliotheken kannst du auch an dem - sagen wir - Build und Deployment Prozess über Schablonen einiges schrauben.
Hint: Eine Datenbank kann auch von mehr als einer Schablone Gestaltungselemente beziehen.
Aber: Es ist sehr schwer kohäsive Skriptbibliotheken zu erstellen und über die Zeit zu pflegen. Versuchs mit einem Review Prozess.
Komplexere Build und Deployment Prozesse über Schablonen UNBEDINGT GUT DOKUMENTIEREN.
Das ist ein Thema, für das es unbedingt EINE VERBINDLICHE, ORGANISATIONSWEITE POLITIK geben muss, auf die sich alle commiten. Ist auf der Ebene des IT-Leiters aufgehängt.
Ich bin in diesem Bereich auch stark mit Java beschäftigt und in Vergleich zu Maven, Ant & Eclipse Deployment find ich Notes Deployment nicht besonders selbstdokumentiert. Deshalb unbedingt gut beschreiben wie das Deployment funktioniert. Und nicht zu kompliziert machen.
Demian:
Hallo Axel,
das mit runonserver war das was ich meinte mit "über Umwege". Bin noch ziemlicher Laie, arbeite erst seit gut nem Jahr überhaupt mit Notes, von daher sind deine anderen Anmerkungen für mich etwas verwirrend. Build und Deployment-Prozess habe ich z. B. noch nie gehört.
Gruß
Demian
Thomas Schulte:
Build und Deployment hat überhaupt nichts mit Notes an und für sich zu tun. Sondern einfach nur mit der Frage wie man eine Anwendung baut (Build) und verteilt (Deployed).
Klassisches Fachchinesisch .... >:D Sorry Axel aber der musste sein.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln