Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: MarkusL am 16.10.15 - 14:21:29
-
Hallo zusammen,
ich möchte gerne alle Gruppen für einen bestimmtern Benutzer auslesen und diese Infos in ein Dokument mit den Felder Benutzer und Gruppen schreiben.
Wie komme ich an die Gruppen eines bestimmten Benutzers?
Das ganze benötige ich in Lotus Script, da dies in ein längeres, bereits vorhandenes Script eingebunden werden muss.
Bisher habe ich dies über eine Ansicht im names.nsf dargestellt, die aber leider nur beim Ansehen aktualisiert wird. Bei mir ist das kein Problem, weil ich mir die Ergebnisse immer vorher ansehe, aber meine Kollegen machen das nicht. Damit sind Fehler vorprogrammiert.
(Die ursprüngliche Aufgabe und Programmierung erforderte dies auch nicht.)
Im Moment stehe ich vor dem Wald.......
Danke für eure Hilfe
Markus
-
Ein Weg fühlt über das Auswerten von "@UserNamesList", also
Dim groups As Variant
groups = Evaluate("@UserNamesList")
Man bekommt damit allerdings mehr zurück als nur die Gruppen. Ein Beispiel, wie man das Überflüssige wieder aussortieren kann, findet sich hier (http://www-10.lotus.com/ldd/nd6forum.nsf/869c7412fe5d56b7852569fa007826e3/124597139ded7bf8852573850073a844?OpenDocument)
-
hat aber die Einschränkung, dass es nur mit der primären names.nsf funktioniert. Beim Einsatz von DA funktioniert die Methode nicht.
Da muss man schon ein bisschen mit der API arbeiten ...
-
Danke für eure Antworten.
@UserNamesList funktioniert aber doch nur für den aktuellen User der Session.
Ich benötige aber, dass berechtigte Benutzer dies für ausgewählte andere Benutzer auslesen dürfen.
Die Bearbeiter der Datenbank müssen die Felder für andere Mitarbeiter füllen dürfen.
Gruß
Markus
-
... Bisher habe ich dies über eine Ansicht im names.nsf dargestellt, die aber leider nur beim Ansehen aktualisiert wird. ...
Kannst Du die Ansicht nicht einfach per Script aktualisieren? NotesView.Refresh
-
Hallo Peter,
danke für den Tipp. Werde ich ausprobieren.
Daran habe ich bis jetzt nicht gedacht. :-\
Gruß Markus
-
EDIT: hier stand Unsinn...
-
Also, um die Aufgabe auch unter Einbeziehung von DA programmatisch zu lösen, muss man auf die API zurückgreifen. Auch dort gibt es keine direkte Funktion. Da muss man schon ein bisschen Code schreiben. Man kann das aber in eine dll kapseln und die entsprechende Funktion dann in LS verwenden. Auch LSX ist natürlich möglich.
Evtl. kann man ein gemeinsames ONTF project aufziehen. Von der IBM erwarte ich keine weiteren Updates mehr ...
-
Ich hab hier mal eine LS2J Funktion gepostet: http://atnotes.de/index.php/topic,58892.0.html
Die hat aber auch ihre Krücken bei Sonderzeichen ::)
Das "zu fuß" auslesen aus der $VimPeopleGroups Anscht im Adressbuch ist meist zu langsam, da rekursiv aufgelöst werden muss und bei stark verschachtelten Gruppenhierarchien in Verbindung mit hoher Netzwerklatenz viel Zeit drauf gehen kann.
Was du bräuchtest, ist die NAMELookup2-Funktion
http://www-12.lotus.com/ldd/doc/domino_notes/9.0/api90ref.nsf/852561bd0045e8e785255b3c005a57bb/7b7dbb5f82e0197e482573fb00323579?OpenDocument
welche du aber aus LotusScript nicht aufrufen kannst, da Callbacks von LS nicht unterstützt werden.
Dazu brauchst eine eigens kompilierte DLL für jede Plattform.
Alternativ geht auch die JNA-Lib (Java Native Access) - damit funktionieren auch Callbacks. Allerdings hab ich das bis jetzt noch nicht unter LotusScript probiert, sondern lediglich als OSGi-Plugin des HTTP-Servers
Vorteil von JNA: Es funktioniert auf den wichtigsten Plattformen (win/linux, 32/64bit)
@Ulrich: Hier gleich mal eine Frage an dich als C-API Guru ;D Wie macht man das am Besten, dass man die *.DLL/*.so für alle Plattfromen compiliert?
Dass ich Linux+gcc aufsetze ist keine allzu große Kunst. Bei Windows muss ich mir vermutlich das VisualStudio-Monster installieren (und hier scheinbar auch eine ätere Version)
Oder kann ich unter Linux auch eine DLL für Win32/64 cross-compilieren? Und was mach ich mit Exoten wie AS/400? ;D
Gruß
Roland
-
@Roland
Ein CrossCompile ist mir noch nicht gelungen; auch kein compile einer 32bit Linux version auf einem 64Bit System.
Daher habe ich mehrere VMs auf denen ich die builds erstelle.
1 x Win 7 Client für VisualStudio 32/64 Bit
1 x Linux 32
1 x Linux 64
Und für die AIX braucht man natürlich entsprechende HW; das lässt sich nicht virtualisieren
Für das Erstellen der builds verwende ich TeamCity in verbindung mit FIT und Atlassian Jira.
Wenn ich Codeänderungen vornehme und einchecke, dann kann ich danach den Buildprozess anstossen. Der rattet dann über alle Konfigurationen und erstellt die binaries auf den jeweils benötigten Maschinen.
Anschliessend wird alles an zentraler Stelle paketiert; incl automatisierter ReleaseNotes aus Jira.
-
Danke, das bestätigt meine Vermutung/Befürchtung, dass eigene VMs bzw. für AIX sogar extra Hardware erforderlich ist.
Für unsere Java-Projekte nutzen wir inzwischen auch Jira, Bamboo und Stash.
Gruß
Roland
-
@Roland
Cross-Compile funktioniert natürlich; aber für komplexere Projekte habe ich das noch nicht wirklich fehlerfrei hinbekommen.
http://www.eknori.de/2015-10-23/build-windows-executables-on-linux/ (http://www.eknori.de/2015-10-23/build-windows-executables-on-linux/)
-
@Roland:
Kannst Du mir den JNA-Code zukommen lassen? Danke.
-
Habe hier mal die wesentlichen Teile Quick & Dirty zusammenkopiert:
https://github.com/rPraml/domino-jna-example
Dabei auch festgestellt, dass bei den beteiligten Methoden (NAMELocateNextName2, NAMELocateNextMatch2,NAMELookup2,NAMEGetTextItem2) keine Callbacks verwendet werden und dies möglicherweise sogar unter LotusScript ansprechbar ist.
-
Vielen Dank!