Autor Thema: Script für Personendokument in Domino Directory  (Gelesen 2958 mal)

Offline Trudi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Script für Personendokument in Domino Directory
« am: 12.08.08 - 20:26:03 »
Hallo,
ein externer Berater hatte mal ein Script (Agent) in unserem NAB geschrieben, da ich aber kein großer Entwickler bin habe ich ein paar Fragen dazu.

Die user bekamen eine Info Mail, in der ein solcherLink war:

notes:///C1256FF60044C418/C7A4040F19B6662AC125713E003F66FF/607175AB03EF7205C1256FF7003ED802

Daraufhin kamen der User in diese Maske:
siehe Bild Maske

Diese hat er dann ausgefüllt und abgespeichert und schon waren im NAB sein Personendokument gepflegt.

So da ich den netten Herren nicht mehr fragen kann, möchte ich gerne Wissen, wie komme ich an die Maske, die muss doch im NAB sein. Ich muss diese noch ergänzen.

Hier das Script:

Public Sub AgentControl()
   On Error Goto LabelError
   Const CheckFormName = "Person"
   Const CheckEmptyFieldName = "XXOfficePhoneNumber"
   Const FieldNameSendTo = "FullName"
   Const ZimsSpecialViewName = "(PEform)"
   Dim Session As NotesSession, IsSessionOnline As Integer
   Dim DB As NotesDatabase, FormView As NotesView
   Dim DBCol As NotesDocumentCollection, DBDoc As NotesDocument
   Dim DocCounter As Integer, MailCounter As Integer, IgnoreCounter As Integer
   Dim MailDoc As NotesDocument, MailDocBodyItem As Variant
   Dim SendTo As String, CheckFormValue As String, CheckEmptyFieldValue As String
   Dim PicView As NotesView, PicDoc As NotesDocument
   Dim PicDocRTItem As NotesRichTextItem
   Set Session = New NotesSession
   IsSessionOnline = Not Session.IsOnServer
   Set DB = Session.CurrentDatabase
   Set PicView = DB.GetView("(BodyPic)")
   Set PicDoc = PicView.GetFirstDocument
   Set PicDocRTItem = PicDoc.GetFirstItem("Body")
   Set FormView = DB.GetView(ZimsSpecialViewName)
   If FormView Is Nothing Then
      Call SUBAgentLOG(("Ansicht """ & ZimsSpecialViewName & """ nicht gefunden - Abbruch!!"), IsSessionOnline)
      Exit Sub
   End If
   Set DBCol = DB.UnprocessedDocuments
   Set DBDoc = DBCol.GetFirstDocument()
   Do
      If DBDoc Is Nothing Then Exit Do
      DocCounter = (DocCounter + 1)
      CheckFormValue = GetDocValues(DBDoc, "Type", 0)
      CheckEmptyFieldValue = GetDocValues(DBDoc, CheckEmptyFieldName, 0)
      SendTo = GetDocValues(DBDoc, FieldNameSendTo, 0)
      If Not (CheckFormValue = CheckFormName) Or Not (CheckEmptyFieldValue = "") Or SendTo = "" Then
         IgnoreCounter = (IgnoreCounter + 1)
         Goto LabelLoop
      End If
      Set MailDoc = New NotesDocument(DB)
      Set MailDocBodyItem = New NotesRichTextItem (MailDoc, "Body")
      Call MailDocBodyItem.AppendText("Sehr geehrte Damen, sehr geehrte Herren,")
      Call MailDocBodyItem.AddNewLine(2)
      Call MailDocBodyItem.AppendText("es ist geplant das  Domino Directory als zentrale Kommunikationsdatenbank zu verwenden. Bitte aktualisieren Sie hierzu Ihre Kontaktinformationen. ")
      Call MailDocBodyItem.AddNewLine(2)
      Call MailDocBodyItem.AppendText("Bitte verwenden Sie folgenden Link um Ihre Daten zu aktualisieren. Vielen Dank für Ihre Mithilfe. ")
      Call MailDocBodyItem.AddNewLine(2)
      Call MailDocBodyItem.AppendText(("notes:///" & DB.ReplicaID & "/" & FormView.UniversalID & "/" & DBDoc.UniversalID & " "))
      Call MailDocBodyItem.AddNewLine(2)
      Call MailDocBodyItem.AppendText("Mit freundlichen Grüßen,")
      Call MailDocBodyItem.AddNewLine(1)
      Call MailDocBodyItem.AppendText("Ihre IT-Administration")
      Call MailDocBodyItem.AddNewLine(2)
      Call MailDocBodyItem.AppendText("Hotline +49  211 222")
      REM Call MailDocBodyItem.AppendRTItem(PicDocRTItem)
      MailDoc.SendTo = SendTo
      MailDoc.Form = "Memo"
      MailDoc.DeliveryReport = "N"
      MailDoc.Importance = "1"
      MailDoc.DeliveryPriority = "H"
      MailDoc.Subject = ("Ihre Kontaktdaten im  Domino Directory")
      On Error Goto LabelMailSendError
      Call MailDoc.Send(0)
      MailCounter = (MailCounter + 1)
LabelLoop:
      On Error Goto LabelError
      Set DBDoc = DBCol.GetNextDocument(DBDoc)
   Loop
   Call SUBAgentLOG(("OK!! // Gelesene Dokumente = " & _
   Cstr(DocCounter) & " // ... davon ignoriert = " & _
   Cstr(IgnoreCounter) & " // Versendete Mails = " & _
   Cstr(MailCounter)), IsSessionOnline)
   Exit Sub
LabelMailSendError:
   IgnoreCounter = (IgnoreCounter + 1)
   Resume LabelLoop
LabelError:
   Call SUBAgentLOG(("Unerwarteter Fehler in Routine ""AgentControl"": Zeile " & Trim$(Cstr(Erl)) & _
   "; Fehler = " & Trim$(Cstr(Err)) & " --> " & Error$(Err)), IsSessionOnline)
   Resume LabelExit
LabelExit:
End Sub



und wie kann ich das Script erst selbst testen ?

Danke vorab für eure Hilfe !

LG Trudi

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: Script für Personendokument in Domino Directory
« Antwort #1 am: 12.08.08 - 20:49:31 »
Ich würde mir einfach mal die Maske Person ansehen, siehe
Zitat
Const CheckFormName = "Person"

Zum Senden an Dich selber passe doch mal die Zeile
Zitat
MailDoc.SendTo = SendTo
an.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Script für Personendokument in Domino Directory
« Antwort #2 am: 12.08.08 - 21:00:07 »
Nicht nur der Code ist ... "unschön", auch das Verfahren ist mehr als bedenklich für den offensichtlich angestrebten Zweck.

Wenn man sich durch den mistigen Code durchwuselt, dann bekommt man den Eindruck, dass der Code in einer anderen DB läuft (der dann das DD bedient) - das wäre zumindest zu hoffen.
Ansonsten verweist der Code tatsächlich Dokumente mit der Maske "Person" und das würde heissen, dass da ein noch massiverer Eingriff ins Domino Directory stattgefunden hat. Spätestens, wenn dem so, ist dann solltet Ihr Euch Hilfe holen (und keinen "externen Berater", der ein "Programmierer" auf Praktikantenniveau gewesen ist).

Bernhard

PS: Grausam, wenn man sowas sehen muss und mit was manche so ihr Geld "verdienen" ...

Offline Trudi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Script für Personendokument in Domino Directory
« Antwort #3 am: 12.08.08 - 21:06:23 »
Nicht nur der Code ist ... "unschön", auch das Verfahren ist mehr als bedenklich für den offensichtlich angestrebten Zweck.

Wenn man sich durch den mistigen Code durchwuselt, dann bekommt man den Eindruck, dass der Code in einer anderen DB läuft (der dann das DD bedient) - das wäre zumindest zu hoffen.
Ansonsten verweist der Code tatsächlich Dokumente mit der Maske "Person" und das würde heissen, dass da ein noch massiverer Eingriff ins Domino Directory stattgefunden hat. Spätestens, wenn dem so, ist dann solltet Ihr Euch Hilfe holen (und keinen "externen Berater", der ein "Programmierer" auf Praktikantenniveau gewesen ist).

Bernhard

PS: Grausam, wenn man sowas sehen muss und mit was manche so ihr Geld "verdienen" ...

ich habe auch zuerst vermutet es würde noch über eine weitere DB funktionieren ich werde morgen mal nach der Maske suchen.

Da ich nicht viel Programmier Kenntnisse habe, meine Frage,ist das Script unschön oder die Art und Weise wie es arbeitet?

Oder wie würde man es richtig machen ?


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Script für Personendokument in Domino Directory
« Antwort #4 am: 12.08.08 - 21:19:29 »
Ich versuche mal, im Rahmen eines Forums entsprechend zu arbeiten. Vorab: Ich habe den Code gerade mal so überflogen und werde mich bestimmt nicht tiefergehend im Forum damit beschäftigen.

1) Der Code ist in einer Art und Weise geschrieben, der zahlreichen Regeln verstösst.
2) Der Code nimmt als Auswahlkiriterium für die Mails nur die fehlende Büro-Telefonnummer her.
3) Der Code hat kein ErrorHandling.
4) Der Code macht es anderen personen unnötig schwer, in nachzuvollziehen.

Wichtiger aber: Wo hast Du den Agent gefunden? Im Domino Directory? Wenn ich im Ausgangspost Deine einleitenden Worte lese, dann steht er tatsächlich im Domino Directory. Und dann ist er kreuzgefährlich und verstösst gegen noch viel mehr Regeln.

Und jetzt zur alles entscheidenden Frage: Wie würde man es richtig machen? Das wird Dir als Nicht-Programmierer hier niemand erklären, weil dann müsste man den Job (richtig) machen, den der "externe Berater" versaubüdelt hat.
Ich habe für so etwas eine separate DB bereit gestellt, in der der User sich "selber pflegen" kann (und die noch etliche weitere Informationen speichert von Bild bis zu alternativen Adressangaben und Skills und ... - all das zeugs, was im DD nix zu suchen hat). Und diese DB tauscht sich dann periodisch in den DD-relevanten Angaben mit dem DD ab. Das wichtigste: Das erfordert keinen Eingriff in das Design des DDs, und den User braucht man gar keinen (Schreib-)Zugriff auf das DD zu geben.

Bernhard
« Letzte Änderung: 23.08.08 - 13:09:06 von koehlerbv »

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: Script für Personendokument in Domino Directory
« Antwort #5 am: 12.08.08 - 21:42:08 »
Hallo Bernhard,

Trudi hat mir eine PN geschickt und die interpretiere ich so, dass der Agent im DD hängt.

Habe ihr nochmal deutlich gesagt, sie soll die Finger davon lassen soll und sich einen kundigen Externen holen soll.

Schönen Abend noch,
Axel

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Script für Personendokument in Domino Directory
« Antwort #6 am: 12.08.08 - 21:47:27 »
Hallo Axel,

PN habe ich auch bekommen (was aber in diesem Falle alles andere als sinnlos war). Siehe meine zweite Antwort - ich vermute auch, dass der Agent im DD liegt. Und dann wird der Code nicht nur mistig, sondern auch gefährlich.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz