Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: cococo69 am 17.09.03 - 21:16:50

Titel: Signal, wenn neues Dokument vorhanden
Beitrag von: cococo69 am 17.09.03 - 21:16:50
Hallo,

wir haben eine Datenbank erzeugt, welche die Mitarbeiter der EDV-Abteilung stets auf dem Laufenden halten sollen über aktuelle Probleme welche andere Kollegen bereits bearbeiten bzw. gelöst haben um eine doppelte Bearbeitung zu vermeiden.

Gibt es eine Möglichkeit (außer der Mailbenachrichtigung), dass die Mitarbeiter (welche Notes im Hintergrund geöffnet haben) automatisch ein Signal erhalten, wenn ein neues Dokument in diese Datenbank eingetragen wird ???
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: koehlerbv am 17.09.03 - 21:43:18
Nicht mit Notes-Bordmitteln.
Alles andere ist eine Frage des Aufwands und von Kosten-Nutzen.
Warum kommt denn Mail-Benachrichtigung nicht in Frage ?
Und die Frage aller Fragen: Stimmt Eure Arbeitsorganisation ? Gleich nach der Forderung nach unmittelbarer Benachrichtigung kommt doch die Forderung, daß der Mitarbeiter bei Abwesenheit vom Arbeitsplatz auch in der Kantine benachrichtigt werden soll (per Stromschlag) ...

Bernhard
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: cococo69 am 18.09.03 - 09:29:20
Hallo Bernhard,

danke für Deine schnelle und im ersten Teil auch hilfreiche Antwort!

Schade ist bei Dir nur, dass Du leider immer wieder Sinn und Unsinn von Problemstellungen in Frage stellst und Dich so darüber äußerst, dass es persönlich beleidigend  wirken kann oder man das Gefühl hat, Du willst Dich lustig machen!

Sicher kann man alles in Frage stellen, aber Du kennst unser Umfeld nicht und wenn die gewünschte Benachrichtigung meinen Kollegen hilft, dann ist das ok!

Ferner handelt es sich bei diesem Forum nicht um eine Unternehmensberatung, welche unsere Abläufe untersuchen soll sondern um ein NOTES-Forum, welches es sich zur Aufgabe macht NOTES-Probleme zu lösen und nicht über Sinn und Unsinn der "Arbeitsorganisation" zu diskutieren.

Sorry Bernhard, ich schätze Deine Verdienste in diesem Forum SEHR (!!!!!!!!) und finde es klasse von Dir, mit welchem Einsatz Du zu Werke gehst, aber ich denke, das musste mal gesagt (geschrieben ;-) werden.

Gruß
Armin
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: Driri am 18.09.03 - 10:02:06
Nur als Idee :

Ein Agent könnte periodisch über alle neuen Dokumente laufen, den Empfänger ermitteln und einen Broadcast an diesen Empfänger absetzen.

broadcast "(!) Text" Empfänger

So wird ein Popup an den angegebenen Empfänger abgesetzt.

Ich habe hier noch eine API-Funktion, die Serverbefehle absetzen kann, allerdings nur unter Win32 (habs auch nicht getestet).

Declare Function NSFRemoteConsole Lib "nnotes.dll" (Byval ServerName As String, Byval ConsoleCommand As String, rethBuffer As Long) As Long
Declare Function OSLockObject Lib "nnotes.dll" (Byval hBuffer As Long) As String
Declare Sub OSUnlockObject Lib "nnotes.dll" (Byval hBuffer As Long)
Declare Sub OSMemFree Lib "nnotes.dll" (Byval hBuffer As Long)

Sub Initialize
Dim hBuf As Long
Dim pBuf As String
Dim result As Long
result = NSFRemoteConsole("Server/Domain", "sh ta", hBuf)
pBuf = OSLockObject(hBuf)
Messagebox pBuf
Call OSUnlockObject(hBuf)
Call OSMemFree(hBuf)
End Sub
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: eknori am 18.09.03 - 10:25:44
jau, das könnte klappen.

Den Empfänger solltest du aber auch in "Gänsefüßchen" setzen; sonst gibt es einen  fehler ( zumindest unter R6 )
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: Markus Henke am 18.09.03 - 10:28:19
Hi,

das mit dem Broadcast hört sich interessant an, wie implementiert man das, bzw. wie sieht der Code drumrum aus? In welcher Form muss der Empfänger angegeben werden? Name der ID, oder voller Name mit Certifier etc.

Gruß
Markus
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: Driri am 18.09.03 - 11:54:09
Hi,

also normal gibt man den Empfänger als vollen Benutzernamen an, also "Vorname Nachname/ORG".

Code drumherum habe ich nicht, das war nur ne Idee. Auf jeden Fall könnte man nen Agent bauen, der die API-Funktion beinhaltet. Diese ruft man dann aus einem Script heraus auf und übergibt den zuvor ermittelten Benutzernamen.
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: koehlerbv am 18.09.03 - 15:56:49
Hallo, Armin,

ich wollte Dir nicht auf den Schlips treten und bin auch nur selten belustigt und möchte schon gar keinen beleidigen. Entschuldige bitte meinen unglücklich formulierten Beitrag. Ich werde mir da jetzt in Zukunft mehr Mühe geben, mich in die Rolle des Fragestellers zu versetzen.

Das mit der "Unternehmensberatung" sehe ich aber nicht ganz so. Wir wollen doch alle mit unseren täglichen Bemühungen etwas erreichen. Für mich steht da immer zuerst die Frage: Was soll erreicht werden? Danach erst wird über den Weg entschieden - und ob er finanzierbar ist (Kosten-/Nutzen-Verhältnis). Und dies immer mit dem Blick auf den zukünftigen Anwender und/oder Kunden.

Mir geht es daher (ausser in Mußestunden) nicht um das technisch theoretisch machbare, sondern um den besten Weg dahin. Daher auch meine Fragen in diesem Beitrag, die aber gar nicht gut formuliert waren.

Die Sache ist jetzt ja auch eigentlich so ausgegangen, wie es zu befürchten stand: Technisch machbar ist (ohne weiteres), einen Server zum Broadcasting anzuregen. Der praktische Nutzen ist aber weitaus geringer als der Nutzen:
- Die Meldung des Servers erscheint in der Status-Zeile.
- Wer schaut da immer hin?
- Eure EDV-Abteilung wird sicherlich eingestellt haben, daß bei n Minuten "Inaktivität" (von Notes, nicht von den Kollegen ;-) die ID gesperrt wird. Dann kommt gar keine Broadcast-Message mehr an.
- Es erscheinen in der Regel periodisch weitere Meldungen des Clients in der Status-Zeile, die die Broadcast-Message überschreiben.
- Der User arbeitet gerade in einer anderen Anwendung ...

Nun lande ich doch wieder bei der Frage: Ihr wollt so schnell als möglich über bestimmte Ereignisse informiert werden. Kann das nicht doch eMail sein? Alternativ: Eure DB könnte SMS verschicken, vielleicht kann man auch was tricksen, daß lokale periodische Agents etwas auf den Monitör kulör zaubern.

Bernhard (auf dem Wege der Besserung)
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: Driri am 18.09.03 - 16:20:01
@Bernhard :

Lies noch mal genau meinen Post.

Bei Verwendung von (!) im Broadcast wird ein Popup generiert. Das ist ein nichtdokumentierter Parameter. Also nix Statuszeile.

Das Problem mit dem Lock nach x Minuten Inaktivität besteht natürlich trotzdem.
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: koehlerbv am 18.09.03 - 18:26:26
Hallo, Driri,

ja, klar, das "(!)" macht 'nen Popup. Aber zum Bleistift nicht, wenn Du nicht direkt im Netzwerk mit dem Server verbunden bist (habe es gerade - verbunden per DSL mit dem Firmennetzwerk - vom Home Office aus versucht), also ein weiteres Problem. Und es ist undokumentiert. Wenn die Funktion also wirklich wichtig ist, müssen wir ja auch über diesen Punkt nachdenken.

Oooooh - stop: Auch über Passthrough-Server geht sich das, eben kam die Message doch noch (verspätet) an. Aber nur im Notes-Client, während ich diese Antwort schrieb.

Bernhard

PS: Warten wir mal auf Armin's Erkenntnisse zu diesem Thread
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: Driri am 19.09.03 - 09:00:11
Hi Bernhard,

ok, es hörte sich in deinem Post nur so an, als wenn broadcast immer nur in der Statuszeile erscheint. Das erschien mir etwas verwirrend  8)

Ansonsten hast Du natürlich recht, es gibt da einige Problemfälle, die man beachten muß.
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: cococo69 am 19.09.03 - 10:58:24
Hallo Diri,
hallo Bernhard,

die Sache mit dem Broadcast ist wohl genau das was wir suchen!!! :)

Alle bisher angesprochenen Probleme und Einschränkungen sehe ich bei uns nicht gegeben:
- Wir nutzen ausschl. direkt mit dem Server verbundene Clients
- wir habem auch keine automatische Sperre nach X Minuten
- und dass das ganze nicht dokumentiert ist stört mich auch nicht wesentlich!

Es gibt nun wohl nur noch ein Problem....
... ich bräuchte noch jemanden, der mir (sowie Markus, und bestimmt noch weiteren Interessenten) erklärt, wie so was eingebunden wird. In der Hilfe habe ich nichts gefunden zu dem Stichwort "Broadcast"! ???
Übrigens, wir arbeiten alle an einem Unix-Server und Windows (NT, 2000 und XP) Rechner mit 5er Clients.

Wäre super toll, wenn sich jemand bereit erklären würde, dies Schritt für Schritt zu erklären - ich denke ich könnte das mehrfach gebrauchen!!!

Danke im voraus!

Gruß
Armin
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: g202e am 19.09.03 - 11:12:43
Da häng ich mich doch glatt in die Warteschlange!
Das könnt ich auch brauchen. Wenn das aber undokumentiert ist, könnte es natürlich sein, dass IBM das irgendwann stillschweigend verschwinden lässt; oder gibts das vielleicht bei R6 offiziell?
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: eknori am 19.09.03 - 11:28:36
zumindest steht in der Admin Hilfe nichts gegenteiliges

Syntax: Broadcast "message" [usernames or database]
Broadcast "(!) message" [usernames or database]

Description: Sends a message to specified users, users of the specified database or to all users of this server. Use this command to warn users when a server is brought down for maintenance. By default, the message you enter appears in the user's status bar.  To display the message in the middle of the user's screen, precede  the message with (!).

Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: Driri am 19.09.03 - 11:42:26
Hi,

man müßte die Funktion beim Speichern eines Dokumentes aufrufen.

Also :

Folgende Zeilen müssen in die Declarations der Maske :

Declare Function NSFRemoteConsole Lib "nnotes.dll" (Byval ServerName As String, Byval ConsoleCommand As String, rethBuffer As Long) As Long
Declare Function OSLockObject Lib "nnotes.dll" (Byval hBuffer As Long) As String
Declare Sub OSUnlockObject Lib "nnotes.dll" (Byval hBuffer As Long)
Declare Sub OSMemFree Lib "nnotes.dll" (Byval hBuffer As Long)

Folgendes Script führst Du im PostSave aus :

Dim hBuf As Long
Dim pBuf As String
Dim result As Long
result = NSFRemoteConsole("Server/Org", "broadcast ""(!)Test"" ""User/Org""", hBuf)
pBuf = OSLockObject(hBuf)
Call OSUnlockObject(hBuf)
Call OSMemFree(hBuf)

Das funktioniert so allerdings nur, wenn der Benutzer die Rechte hat auf dem Server Konsolenbefehle abzusetzen.

Da das vermutlich nicht gegeben ist  ;), müßte man das Script in einen Agenten packen, der z.B. mit Server-ID signiert wird und der dann im PostSave ausgeführt wird.
Der Agent kann dann mit @Command([ToolsRunMacro];"Agent") aufgerufen.
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: cococo69 am 19.09.03 - 16:39:25
Hallo Diri,

suuuper, funktioniert klasse!!!!!!! :)

Tausend Dank und ein schönes Wochenende!!!

Gruß
Armin
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: Rob Green am 19.09.03 - 18:12:07
ein Hinweis, sehr rudimentär: kann sich jemand noch an ein Softwarestückchen Notes erinnern, was eine Ticktet Datenbank abgebildet hat (Customer Care Help DB) und im R5 Frontend in einem Frame eine Message aufpoppte, jedesmal wenn ein neues Ticket reinkam? Dieses Applikation habe ich entweder auf THE VIEW oder in der Sandbox gesehen. Weiß jemand,was ich ungefähr meine?
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: cococo69 am 26.09.03 - 09:19:25
Hallo,

wie oben bereits berschrieben, funktioniert das mit dem BROADCAST-Befehl wunderbar!!!

Frage:
1.) Kann ich nun außer statischem Text auch zusätzlich noch den Inhalt eines Feldes in den Nachrichten-Text bekommen? Habe bereits versucht, mit "&" zu verketten, aber irgend was mache ich falsch!?
2.) Kann ich in einen broadcast-Befehl mehrere Empfänger einsetzen? Bisher habe ich pro Empfänger einen sep. Befehl geschrieben.

Hier mein Script aus dem Postsave-Ereignis der Maske:

Sub Postsave(Source As Notesuidocument)
Dim hBuf As Long
Dim pBuf As String
Dim result, result1a As Long
Dim result2 As Long
Dim result3 As Long
result = NSFRemoteConsole("yc06e00n/srv1/Volksbank-LGZ/DE", "broadcast ""(!)Achtung: Neue Nachricht im EDV-Ticker!"" ""Armin Weis/B1/Volksbank-LGZ/DE""", hBuf)
result1a = NSFRemoteConsole("yc06e00n/srv1/Volksbank-LGZ/DE", "broadcast ""(!)Achtung: Neue Nachricht im EDV-Ticker! ""&Nachricht ""Armin Weis/B1/Volksbank-LGZ/DE""", hBuf)   
result2 = NSFRemoteConsole("yc06e00n/srv1/Volksbank-LGZ/DE", "broadcast ""(!)Achtung: Neue Nachricht im EDV-Ticker!"" ""Jan Herdrich/B1/Volksbank-LGZ/DE""", hBuf)   
pBuf = OSLockObject(hBuf)
Call OSUnlockObject(hBuf)
Call OSMemFree(hBuf)
End Sub
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: Driri am 26.09.03 - 13:57:50
Hi,

zu 1) Ich denke nicht, daß man da so etwas zu stande bekommt, denn Du übergibst ja einen String an die API-Funktion. Ich vermute mal, daß man da keine Variablen verketten kann.

zu 2) Entweder Broadcast an alle oder an einen Benutzer. Man sieht das auch sehr schön im Admin-Client. Da kann man zwar mehrere user markieren und nen Broadcast absetzen, aber es werden dann je gewählten User ein Broadcast abgesetzt.
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: cococo69 am 26.09.03 - 14:38:31
Hallo Diri,

schade :'(, aber trotzdem danke für Deine Mühe!!!

Gruß
Armin
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: koehlerbv am 26.09.03 - 15:00:58
Punkt 2 aus Driris Beitrag ist wohl definitiv so - das ist halt die Syntax für die API-Funktion.

Bei Punkt 1 melde ich Zweifel an - hier wird doch ein String ByVal übergeben, ergo sollte man sich den auch "von aussen" zusammenbauen können. Aufpassen muß man natürlich mit den Anführungszeichen, der sowohl der der Konsolenbefehl als auch der Parameter an sich (um ihn als String zu kennzeichnen) verlangen.
Aber dafür gibt es ja die geschweiften Klammern oder das Pipe-Symbol als "Ober-Anführungszeichen", und damit sollte es möglich sein, sich den zu übergebenden String entsprechend zusammen zu basteln.

Beispiel:
Übergeben werden soll folgender String, wobei die Anführungszeichen im String selber vorkommen sollen und nicht diesen als solchen ausweisen:
"Der Krieg gegen den Irak verstösst gegen das Völkerrecht, sagt UNO-Generalsekretär Annan".
Da wir nicht wissen, gegen wen die USA demnächst ins Feld ziehen und wer dann UNO-Generalsekretär ist, sollen diese beiden Werte also aus Variablen stammen und in den Übergabestring eingebaut werden.

Dim szVictim as String
Dim szUNGSecretary as String
Dim szParameter as String

szVictim = "Syrien"
szUNGSecretary = "Annan"   'böse Ahnung ...

szParameter = {"Der Krieg gegen } & szVictim & " verstösst gegen das Völkerrecht, sagt UNO-Generalsekretär " & szUNGSecretary & {"}

Ich habe das jetzt nicht getestet, aber nach genau diesem prinzip werden solche - sagen wir mal "Strings in Strings" - aufgebaut.

HTH,
Bernhard

Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: Cookie am 06.10.03 - 15:26:14
Also das hat uns ja nun  auch interessiert und wir haben an der Funktion so lange herumgebastelt, bis das ganze dynamisch wurde. Also mann kann Namen den Text, die Felder also einfach alles dynamisch auslesen. Es ist nur eines nicht, trivial!
Bei Bedarf helfen wir gerne weiter...

Sub Initialize
   Set s=New notessession
   Set db = s.currentdatabase
   Set srvview = db.Getview("x1Sachb")
   Set tmpdoc=srvview.GetFirstDocument
   
   Dim test_text As String, testname As String, buffers As String,broadtext As String
   
   test_text = db.server
   testname = tmpdoc.empfang(0)
   broadtext = "(!)" + tmpdoc.broadtext(0)
   buffers = |broadcast "| + broadtext + |" "| + testname + |"|
   
   result = NSFRemoteConsole(test_text , buffers, hBuf)
   pBuf = OSLockObject(hBuf)
   Call OSUnlockObject(hBuf)
   Call OSMemFree(hBuf)
End Sub
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: Centaury am 06.10.03 - 16:58:32
Sehr interessanter Thread, sowas kann man mal brauchen....

Ich möchte gern kurz zur "Verteigigung" Bernhards beitragen:
Manchmal macht es Sinn, seine Herangehensweise noch einmal zu überdenken, da macht ein Forum auch Sinn...
Ich hatte es schon einige Male, dass ich das Pferd neu aufgezäumt habe und schon lösten sich viele Probleme von selbst...
Manchmal ist es halt schwer, den einen Fall von einem anderen zu unterscheiden und man postet eine "Überdenkungsanregung" zuviel, manchmal auch nicht...
Titel: Re:Signal, wenn neues Dokument vorhanden
Beitrag von: cococo69 am 06.10.03 - 20:20:29
@Centaury,

keine Frage, ich stimme Dir voll und ganz zu!!!
Aber der Ton macht die  Musik.... ;-)´
Und jetzt würde ich sagen, vergessen wir das Ganze, für mich ist diese Sache längst erledigt!

Armin
Titel: Re: Signal, wenn neues Dokument vorhanden
Beitrag von: joan am 27.01.05 - 14:56:19
Eine kleine Ergänzung zu diesem Thread:

Das ganze ist offenbar nicht ganz unkritisch. Ich habe das gerade mal auf zwei unserer R6 Server getestet. Auf dem ersten lief es problemlos, auf dem zweiten warf die Konsole beim Start des Agenten nur noch die Meldung aus:

Thread=[1708:0002-14FC]
Stack base=0x0012F3F8, Stack size = 6328 bytes
PANIC: LookupHandle: null handle

mit anschließendem Restart des Domino Servers...   :o

Ciao, ...Joachim
Titel: Re: Signal, wenn neues Dokument vorhanden
Beitrag von: regedit am 05.12.07 - 10:17:06
Auf der Suche nach der Möglichkeit Serverbefehle auszuführen, bin ich auf diesen thread gestoßen.

Dieses Api funktioniert auch soweit.
Wenn ich jetzt eine kleine Admin-DB erstellen will, über die Serverbefehle ausgeführt werden können, kann ich dann auch irgendwie die Rückgabewerte des Servers erhalten?
Das heißt ich führe den Befehl "Load Fixup -J maildb.nsf" aus, kann ich dann irgendwie eine Rückmeldung(Database Fixup: Shutdown) vom Server erhalten, ohne einen Einblick auf die Server-Konsole zu haben?
Titel: Re: Signal, wenn neues Dokument vorhanden
Beitrag von: koehlerbv am 05.12.07 - 10:33:40
Nein, das ist ein asynchroner Vorgang. Du startest den Servertask, erhältst auf diesen Prozess aber keinen Handle.

Bernhard
Titel: Re: Signal, wenn neues Dokument vorhanden
Beitrag von: regedit am 05.12.07 - 10:53:30
Danke Bernhard für die schnelle Antwort.

Das habe ich mir aber leider schon gedacht.

Holger