Autor Thema: Agent nicht mit Client-Berechtigung ausführen  (Gelesen 3561 mal)

Offline ralph71

  • Junior Mitglied
  • **
  • Beiträge: 72
Agent nicht mit Client-Berechtigung ausführen
« am: 25.04.19 - 09:26:36 »
Hallo zusammen,

ich möchte einen Agenten nicht mit Client-, sondern mit Serverberechtigung ausführen lassen.
Hintergrund: nur der Server sieht alle Kundennummern, der Client ja nach Berechtigung nur Teile davon. Soll also eine neue Kundennummer angelegt werden, dann muss eine  freie Kundennummer (ich addiere zur letzten Nummer die Zahl 1) gefunden werden.

Client-Aufruf:
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Set db = session.CurrentDatabase
   Dim agent As NotesAgent
   Set agent = db.GetAgent("ZneueKundennummer")
   Call Agent.Run()

Agent auf Server:
Sicherheit: Ausführen im Namen von: da steht ein vollberechtigter Server drin
Sicherheit: Sicherheitsstufe zur Laufzeit: 3

Rufe ich den Agenten mit Admin-Rechten auf, funktioniert dieser problemlos, weil der Admin alle Dokumente sehen darf. Dh obige Einstellungen wirken sich nicht auf den Aufruf aus.

Was tun?

Vielen Dank!


Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.696
  • Geschlecht: Männlich
Re: Agent nicht mit Client-Berechtigung ausführen
« Antwort #1 am: 25.04.19 - 09:33:42 »
Hallo,

z.B. ein "Dummy-Dokument" mit der zuletzt vergebenen Nummer mitführen und die nächste mögliche Nummer über dieses Dokument ermitteln.


Andreas

Offline ralph71

  • Junior Mitglied
  • **
  • Beiträge: 72
Re: Agent nicht mit Client-Berechtigung ausführen
« Antwort #2 am: 25.04.19 - 09:40:59 »
Auf diese Idee bin ich schon gekommen.
Aber viel besser wäre es, die Agent unter anderem User zu starten. Ist das nicht möglich?

Edit: insgesamt habe ich über 6000 Nummernkreise. Dh hier überall die Max-Werte bestimmen und dann immer mitziehen ist irgendwie nicht so toll...  :-\
« Letzte Änderung: 25.04.19 - 09:52:51 von ralph71 »

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Agent nicht mit Client-Berechtigung ausführen
« Antwort #3 am: 25.04.19 - 13:53:25 »
Die Abfrage für die Nummer könntest Du via Webservice machen.
Der Webservice liefe dann mit den Server rechten.
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent nicht mit Client-Berechtigung ausführen
« Antwort #4 am: 25.04.19 - 15:29:51 »
Ein Dokument in der Datenbank für jeden User (z.B. ein Profildokument), in den schreibst Du beim Aufruf rein, was gesucht wird (z.B. welcher Nummernkreis). Der Agent wird vom Server signiert und mittels agent.RunOnServer (noteid -> die des Profils) aufgerufen. Der Agent liest aus dem Dokument, was er suchen soll, sucht, findet und schreibt zurück in das Profil. Die aufrufende Aktion wirft das Profil weg und holt es neu, dort steht dann die neue Nummer.

Offline Ralf_B

  • Aktives Mitglied
  • ***
  • Beiträge: 144
  • Geschlecht: Männlich
Re: Agent nicht mit Client-Berechtigung ausführen
« Antwort #5 am: 25.04.19 - 16:07:19 »
Bei Profildokumenten ist die Anzahl innerhalb der DB begrenzt, da bin ich auch schon mal auf die Nase gefallen.
Aber die Idee hat was:Einfach die User ein Dokument erstellen lassen mit der Suchanfrage und dann einen zweiten Agenten mit Noteid aufrufen um den Wert zu erhalten.
Oder noch einfacher:Der Anwender erstellt ein richtiges Kundendokument ohne Kundennummer und ein Agent im Hintergrund schreibt diese dann direkt automatisch rein.

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.718
  • Geschlecht: Männlich
Re: Agent nicht mit Client-Berechtigung ausführen
« Antwort #6 am: 25.04.19 - 17:24:29 »
Oder man trennt sich von dem Blödsinn fortlaufender Nummern und generiert die Kundennummer mit einem anderen Algorithmus.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: Agent nicht mit Client-Berechtigung ausführen
« Antwort #7 am: 25.04.19 - 17:35:26 »
Kategorisierungs-Fehler nutzen, um die Kundennummern trotz fehlender Leserechte zu lesen, ist keine Option?

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
Re: Agent nicht mit Client-Berechtigung ausführen
« Antwort #8 am: 28.04.19 - 15:23:28 »
Oder man trennt sich von dem Blödsinn fortlaufender Nummern und generiert die Kundennummer mit einem anderen Algorithmus.
Egal wie viel Aufwand man betreibt.
Wenn zwei gleichzeitig zugreifen.
Wenn die DB im Cluster ist.
Dann hat man doppelte Nummern.

Selbst wenn das Dokument gesperrt wird.
Wenn das erste mal ein Dokument gar nicht mehr freigegeben wird...

Einen anderen Algorithmus zu nutzen ist einfacher.

Wenn es aber unbedingt fortlaufende Nummern sein müssen.
Dann ist dies hier ein Ansatz einer Lösung:
https://blog.thomasbandt.de/39/2081/de/blog/sql-server-eindeutige-id-ohne-identity-erzeugen.html
« Letzte Änderung: 28.04.19 - 15:29:41 von Andrew Harder »
Andy

Offline ralph71

  • Junior Mitglied
  • **
  • Beiträge: 72
Re: Agent nicht mit Client-Berechtigung ausführen
« Antwort #9 am: 02.05.19 - 20:12:58 »
So, jetzt hat's etwas gedauert.
Ich habe es jetzt mit einer weiteren Datenbank gelöst. Dort werden alle Nummernkreise und die dazu höchste Kundennummer gespeichert. Die Maskenfelder können direkt nicht gepflegt werden (schreibgeschützt).
Das Skript holt sich über ein einfaches getdocumentsbykey die letzte Nummer, addiert eins dazu, generiert den Kunden und schreibt diese dann wieder in die Datenbank zurück. Die Hilfedatenbank hat keine Replik. Das reduziert die doppelte Nummernvergabe erheblich und ist für die vorhandene Erfassungskultur ausreichend (zum Glück).
Fortlaufende Nummer: wenn die Kundennummer gleichzeitig ein Schlüssel für zb örtliche Zuständigkeiten ist und eine Gesamtzeichenzahl nicht überschritten werden darf, dann bleibt da nicht viel übrig.
@ralf_b: Kundendokument ohne Nummer erstellen lassen und Agent..... -> genau das war ja mein ursprünglicher Ansatz.
Webservice: Mal ein ganz anderer, interessanter Ansatz.😀
Danke für die guten Überlegungen!

Grüße
Ralph
« Letzte Änderung: 02.05.19 - 20:15:56 von ralph71 »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz