Domino 9 und frühere Versionen > ND7: Entwicklung

Scriptbibliotheken

<< < (2/6) > >>

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