Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: MarkusL am 16.10.15 - 14:21:29

Titel: Gruppen eines Benutzers auslesen
Beitrag 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
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: Christian Zalto am 18.10.15 - 15:20:31
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)
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: eknori (retired) am 18.10.15 - 17:12:30
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 ...
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: MarkusL am 19.10.15 - 09:01:08
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
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: Peter Klett am 19.10.15 - 09:10:03
... 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
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: MarkusL am 19.10.15 - 09:14:19
Hallo Peter,

danke für den Tipp. Werde ich ausprobieren.
Daran habe ich bis jetzt nicht gedacht.  :-\

Gruß Markus
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: Tode am 19.10.15 - 09:26:45
EDIT: hier stand Unsinn...
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: eknori (retired) am 19.10.15 - 17:09:29
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 ...
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: pram am 21.10.15 - 23:25:02
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
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: eknori (retired) am 22.10.15 - 07:04:01
@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.
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: pram am 22.10.15 - 22:40:23
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
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: eknori (retired) am 23.10.15 - 09:33:22
@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/)
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: Sven Hasselbach am 23.10.15 - 10:54:26
@Roland:
Kannst Du mir den JNA-Code zukommen lassen? Danke.
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: pram am 23.10.15 - 15:43:26
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.
Titel: Re: Gruppen eines Benutzers auslesen
Beitrag von: Sven Hasselbach am 23.10.15 - 19:46:05
Vielen Dank!