Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: geppertb am 25.04.11 - 19:59:24

Titel: Dialogbox aus Agent aufrufen
Beitrag von: geppertb am 25.04.11 - 19:59:24
Hallo,

ich möchte in einem vorgegebenen Zeitabstand eine Dialogbox aufrufen. Ich habe es schon mit einem Agent versucht. Das Problem dabei ist, dass alles auf dem Server läuft und man natürlich vom Backend nicht den Workspace zur Verfügung hat.

Hat irgendjemand einen Lösungsansatz für dieses Problem?

mfg

Bastian
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: koehlerbv am 25.04.11 - 23:10:26
Es würde das Antworten leichter machen, wenn Du beschreibst, was Du eigentlich erreichen willst. Möglichkeiten, vom Server aus mit dem User in Interaktion zu treten, gibt es schon, aber da kommt es wirklich sehr auf das zu erreichende Ziel an.

Bernhard
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: geppertb am 26.04.11 - 13:14:45
Hallo,

ich habe ein Fenster (derzeit eine Dialogbox), dass ein Form anzeigt. In diesem Form wird eine View, ein Richtext zur Eingabe, und ein Bestätigungs button angezeigt. 

Dieses Fenster soll zu bestimmten Uhrzeiten geöffnet werden und der Benutzer muss, bevor er in Notes weiterarbeitet, dieses Fenster schliessen (daher eine Dialogbox).

Die Dialogbox mit dem Form funktioniert ohne Probleme, ich möchte diese jetzt allerdings zu bestimmten Uhrzeiten aufrufen. Dabei ist unwichtig wenn dies nicht exakt passiert (es darf ein Zeitfenster von 5 - 30 minuten entstehen).

mfg

Bastian
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: ascabg am 26.04.11 - 14:23:04
Hallo,

Wie willst Du denn die Dialogbox anzeigen?

Etwa mit NotesUIWorkspace.DialogBox.

Dann sehe ich bei einem periodischen Agenten ziemlich dunkle Wolken auf Dich zukommen.


Andreas
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: geppertb am 26.04.11 - 15:52:16
Hallo,

das habe ich mir gedacht, welche Möglichkeit(en) hätte ich denn einen selbsterstellten Alarm anzuzeigen (das wäre ja zusammenfassend mein Problem).

Wie macht das IBM mit den Erinnerungen?

mfg

Bastian
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: ascabg am 26.04.11 - 16:06:21
Eventuell koennte man es ja ueber NotesSession.SendConsoleCommand in Zusammenspiel mit dem Broadcast-Command versuchen.

Setzt aber voraus, dass der Signer des Agenten ueber die entsprechenden rechte auf dem/den Server/n verfuegt.


Andreas
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: geppertb am 26.04.11 - 16:13:56
Leider glaube ich nicht das ich mit dem broadcast command mein problem lösen kann, da ich mehr als nur eine einfache Textnachricht dem Benutzer anzeigen will.

mfg

Bastian
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: smokyly am 26.04.11 - 16:25:34
Leider glaube ich nicht das ich mit dem broadcast command mein problem lösen kann, da ich mehr als nur eine einfache Textnachricht dem Benutzer anzeigen will.

mfg

Bastian

Aber könnte der Benutzer dann nicht mit der Hand eine Aktion ausführen, in der Du dann die Dialogbox ausführst?
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: geppertb am 26.04.11 - 16:36:21
Hallo,

theoretisch könnte er das, allerdings sollte das Öffnen der Dialogbox nicht optional sein, oder anders gesagt, zu den bestimmten Uhrzeiten muss die Dialogbox geöffnet werden und der Benutzer muss diese schliessen um weiter zu arbeiten.
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: koehlerbv am 26.04.11 - 16:42:04
Notes-intern wirst Du das nicht hinbekommen. Theoretisch vorhandene Möglichkeiten scheitern dann an der täglichen Praxis.
Mit einem externen Programm kannst Du etwas anstellen.

Ob Du Dir aber Freunde damit machen wirst, wenn Du nach Deinem Gusto, unbeeinflussbar vom User, den Leuten etwas vor die Nase klatscht, an dem sie auch bei wichtigen anderen Arbeiten erstmal gar nicht vorbeikommen, wage ich stark zu bezweifeln.

Bernhard
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: smokyly am 26.04.11 - 16:43:37
Zumal man die Dialogbox ja auch ohne Eingabe schließen kann...

Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: koehlerbv am 26.04.11 - 16:48:28
Naja, Gerald, das Schliessen kann man schon verhindern. Was den Adrenalinspiegel dann erneut ansteigen lässt ...

Bernhard
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: geppertb am 26.04.11 - 16:52:32
Danke für die vielen Antworten. Habe gehofft, dass ich keine "Nicht-Notes" Lösung brauche, werde jetzt allerdings dies in C++ mit der Notes API umsetzen.

In meinem Fall ist es wichtig das der Benutzer zumindest die Dialogbox gesehen und geschlossen hat. Es ist nicht zwingend notwendig, dass er eine Text speichert. Grundsätzlich stimme ich koehlerbv zu, dass der Benutzer nicht erfreut sein wird eine Meldung zu erhalten, jedoch verlangt das Gesamtproblem diese Lösung. Glaube nicht, dass jemand an einer Erklärung des gesamten Arbeitsprozesses an dieser Stelle interessiert ist. Im allgemeinen handelt es sich um eine Bestätigung bei Schichtwechsel, d.h. jeder Benutzer erhält die Erinnerung 1x pro Arbeitstag.

Wenn jemand eine Notes-Lösung gefunden hat, kann er sie mir gerne per PM hier schicken.

mfg

Bastian
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: smokyly am 26.04.11 - 17:03:30
Glaube nicht, dass jemand an einer Erklärung des gesamten Arbeitsprozesses an dieser Stelle interessiert ist.

Eigentlich schon.
Ich muss sowas in der Art auch realisieren. Jemand meldet in einem Formular einen Eintritt in die Firma und an einer anderen Stelle muss dann eine Kontrollbestätigung ausgeführt werden. Allerdings ist das dann nicht zu einer bestimmten Zeit scheduled, sondern aktionsbezogen "sofort"...
Da würde mich eine Notes-Interne Lösung auch interessieren.

@Bernhard
Verrätst Du es mir?

Gruß
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: Axel am 26.04.11 - 18:08:13
Glaube nicht, dass jemand an einer Erklärung des gesamten Arbeitsprozesses an dieser Stelle interessiert ist.

Das glaube ich nicht. Denn wenn du den Arbeitsprozess beschreibst kommen dir vielleicht Ideen zur Optimierung des Prozesses, die unter Umständen zu einer einfacheren Lösung deines Problems führen. Andererseits kann das auch hilfreich für andere Forenteilnehmer sein.


Axel
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: koehlerbv am 26.04.11 - 23:04:37
Ich sehe das genauso wie Axel: Der gegenwärtige Prozessablauf wäre schon interessant. Ich kann mir nicht vorstellen, dass man arbeitsorganisatorisch / arbeitsrechtlich was an einem wegklickbaren Popup festmachen könnte  / müsste.

@Geri: Gib' mir mehr Infos. Da fällt uns zusammen schon was ein! Auch hier wäre "was ist 'sofort'" und Dinge der Nachweispflicht / Reaktionskontrolle interessant zu wissen. Erst dann kann man eine passende Lösung austüfteln.

Bernhard
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: smokyly am 27.04.11 - 08:57:44
Hallo Bernhard, ich meinte eigentlich das hier:

Naja, Gerald, das Schliessen kann man schon verhindern. Was den Adrenalinspiegel dann erneut ansteigen lässt ...

Bernhard

Gruß
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: koehlerbv am 27.04.11 - 09:18:59
Du hast doch auch in der Dialogbox Events wie QueryClose, Gerald.

Bernhard
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: smokyly am 27.04.11 - 09:32:38
Ok, danke erstmal, das vertiefe ich an der Stelle nicht weiter, sonst ist es zu OT.
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: Tode am 27.04.11 - 11:00:46
Auch wenn ich noch ein wenig an der Akzeptanz eines solchen Vorgehens zweifeln würde, könnte man das IMHO folgendermassen lösen:

1. Jeder Benutzer hat eine Mail- Datenbank und öffnet diese im Normalfall auch einmal am Tag.
Der Code könnte im QueryOpen der Maildatenbank untergebracht werden (natürlich mit Abfrage: Wurde Dialog schon mal für den Benutzer gezeigt, evtl. gespeichert in einem UserProfile oder in der notes.ini (gefährlicher, weil sich verschiedene Benutzer die selbe notes.ini teilen könnten)

2. Auch die Bookmark.nsf ist auf jedem Client vorhanden. Deren PostOpen wird beim starten des Clients ausgeführt... auch dort könnte man einen solchen Code unterbringen.

Problem an diesen Lösungen: Du kannst den Zeitpunkt der Meldung nicht wirklich beeinflussen.
Wenn Du das willst, müsstest Du mit einem NotesTimer arbeiten: Du liest den aktuellen Zeitstempel, dann den gewünschten Alarm- Termin und setzt die Zeit des Timers auf die Differenz der beiden.
Im Event Alarm des Timers zeigst Du dann Deine Dialogbox an...

Dieses Vorgehen ist aber ziemlich "wackelig", weil ich nicht weiss, wie lange so ein NotesTimer im gestarteten Client überlebt. Ausserdem müsste dieser Code dann in die Bookmark, weil das die einzige Datenbank ist, die der Benutzer nicht schliessen kann...

Also wirklich "schön" ist sowas nicht zu machen...

Gruss
Tode
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: koehlerbv am 27.04.11 - 11:07:36
Genau deshalb schrieb ich gestern:
Theoretisch vorhandene Möglichkeiten scheitern dann an der täglichen Praxis.

Diese Verfahren funktionieren einfach nicht zuverlässig.

Bernhard
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: geppertb am 27.04.11 - 13:25:08
Ok, damit es klarer wird werde ich das Gesamtproblem erklären:


Ein Kunde hat verschiedene U-Bahnstationen. An jeder Station steht ein PC. Jede Station hat jeweils nur ein Login ID (z.b. Station1, Station2, etc...). (Normalerweise hat jeder Notes-Benutzer seine eigene ID, in diesem Falle jedoch hat jede Station eine ID). Jeder Benutzer hat intern eine Identifikationsnummer und ein Passwort.

Da die ID nicht gewechselt wird, muss auch nicht zwingend die mail database oder das bookmark neu aufgerufen werden, der Benutzer ändert im System einfach seine Identifikationsnummer.
Soweit zum Aufbau.

Jetzt zum eigentlichen Problem. An diesen Station werden verlorene Objekte (Lost&Found) aufgenommen und im System registriert. Jetzt kam es desöfteren vor das manche Objekte spurlos verschwinden, aber im System noch registriert sind.

Der Kunde möchte nun das zu bestimmten Uhrzeiten ein Bestätigungsfenster angezeigt wird mit den Objekten die an der Station vorhanden sein sollten. Der Benutzer bestätigt und arbeitet normal weiter (Daher das registrieren der Uhrzeiten als Schichtwechsel, dies sollte dynamisch sein da sich diese Uhrzeiten ändern können). Sollte ein Objekt nicht aufgefunden werden wird ein Text des Benutzers gespeichert. So hat der Kunde eine Bestätigung das jeder Benutzer versichert das er diese Objekte in der Station aufgefunden hat.

Um es vorweg zunehmen, klar muss man sich schon die Frage stellen, wer überhaupt diese Objekte wegnimmt und dass man seine Mitarbeiter nochmals überdenken sollte, ich kann aber auch soviel sagen dass es sich nicht um einen deutschen Kunden handelt, falls das beruhigt :).
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: Tode am 27.04.11 - 13:49:15
Gerade eben ist mir ein Bug eingefallen, der mich zu einer "versteckten" Funktion des Clients geführt hatte, die Du genau für das verwenden kannst, was Du brauchst, und das ganze sogar ziemlich zuverlässig:

Der Client hat -genau wie der Server- einen Scheduler, der bestimmte Aufgaben zu bestimmten Uhrzeiten ausführt (zum Beispiel die automatische lokale Archivierung).

Gesteuert wird dieser Mechanismus exakt wie beim Server: Über Programmdokumente im persönlichen Adressbuch. Diese Programmdokumente sind nur nirgends sichtbar, Du kannst sie aber "sehen", wenn Du per Shift + Strg die Ansicht  ($Programs) in Deiner names.nsf öffnest.

Jetzt habe ich gerade eben mal was probiert: Ich habe in einem öffentlichen Adressbuch ein Programmdokument erstellt:

Programmname: notes.exe
Befehlszeile: notes://server/datenbank.nsf/DeineMaske?OpenForm
(das ist die Url Deiner Funktion, könnte auch ein Agent sein...)
Läuft auf Server: Vorname Nachname/OU/Org (Dein Benutzername)
Aktiviert, täglich um 13:50, jeden Tag

Dieses Dokument habe ich dann per Copy & Paste in mein persönliches Adressbuch kopiert.

Und siehe da: Zum gewählten Zeitpunkt öffnet sich die gewünschte Maske.

Jetzt musst Du nur noch testen, ob ein hierüber aufgerufener Agent eine Dialogbox öffnen kann, wenn nicht, dann machst Du den Code für die Dialogbox halt ins QueryOpen der Maske und setzt das Continue auf False oder Du machst es ins PostOpen der Maske und schliesst die Maske danach wieder... Voila.

Jetzt musst Du nur noch einmalig das Programmdokument an die lokalen Names.nsf verteilen... Da es sich um Dokumente in einer versteckten Ansicht handelt, kann die auch niemand mal eben schnell deaktivieren / löschen...

Vielleicht hilft Dir das ja weiter...

Tode

EDIT: Mit Agent eine Dialogbox zu öffnen geht nicht... Bekommt man eine Meldung "Not implemented" o.ä., habe ich grade probiert... Eine Maske zu öffnen geht aber definitiv...
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: Peter Klett am 27.04.11 - 13:51:52
Dann setz doch genau an dem Punkt an, wenn der Benutzer seine Identifikationsnummer wechselt.

Also: neuer Benutzer kommt, trägt seine Identifikationsnummer ein und erhält dann den Hinweis, welche Objekte da sein müssen. Damit quittiert der neue Benutzer immer das, was er vom vorigen Benutzer übernommen hat. Fehlt etwas, nachdem er quittiert hat, muss das zu seiner Verantwortungszeit verschwunden sein.

NACHTRAG: Genau genommen müsste die Aktion von beiden Benutzern - dem gehenden und dem kommenden - gemeinsam durchgeführt werden, denn sonst ist wieder nicht klar, wer "Schuld" ist. Also eine saubere Übergabe mit Protokoll ist m.E. die einzig vernünftige Lösung. Die wird manuell bei Schichtwechsel angestoßen. Es ist im Interesse des gehenden Benutzers, da er damit eine Unschuldserklärung bekommt. Eine automatische Dialogbox mit Eingabemöglichkeit nur eines Benutzers in Abwesenheit des anderen wird am Grundproblem nichts ändern.
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: geppertb am 27.04.11 - 14:04:54
Peter,

der Benutzer muss nicht direkt ankommen und seine Nummer ändern nur in bestimmten Situation (z.b. wenn er ein neues Objekt registriert). Ich weiss das klingt ziemlich bescheiden, das einzige das ich sagen kann ist, dass es keine direkt Aktion des Benutzers gibt wenn er seine Schicht anfängt. Die Identifikationsnummer wird nur dann abgefragt wenn er ein Dokument speichert, etc.. Ich möchte an dieser Stelle erwähnen, dass das System nicht von uns entworfen wurde und noch aus Notes5 Zeiten stammt.

Tode,

Ich werde deinen Lösungsvorschlag ausprobieren, danke!
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: Peter Klett am 27.04.11 - 14:08:19
Habe in meinem vorigen Post noch einen Nachtrag angehängt, Du warst aber schneller.

Notes 5 ist aber kein Argument dafür, dass etwas nicht ordentlich organisiert ist. Organisation ist grundsätzlich technik-unabhängig  ;)
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: geppertb am 27.04.11 - 14:15:38
Peter,

ein guter Einwand in deinem vorigen Post. Allerdings geht es der Firma nicht direkt um Schuldzuweisung, eher um eine Bestätigung das die Objekte an der Station sind. Grundsätzlich wäre das ganze Program ja unnötig wenn die Mitarbeiter der Schicht zu Anfang alle Informationen übergeben, was aber nicht passiert. Wenn es jetzt darauf ankommt das der Mitarbeiter der Schicht A das Programm für den Mitarbeiter der Schicht B öffnet, wird es schlichtweg vergessen und das Problem besteht.

Achja zu dem Notes5 Problem, auch in diesem Fall gebe ich dir Recht, leider sieht es in der Praxis (zumindest bei den Kunden die ich betreue) anders aus. Ich arbeite seit 4 Jahren mit Lotus Notes und betreue verschieden (Gross)Kunden. Die meisten haben ältere System allerdings entspricht die Programmierung oder die Art und Weise wie etwas umgesetzt nicht unbedingt dem höheren Standard, es war anscheinend wichtiger, dass es "einfach funktioniert". Vielleicht sieht es auf dem deutschen Markt anders aus. (Wäre übrigens ein interessantes Thema :) )
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: geppertb am 27.04.11 - 16:19:12
Tode,

habe es umgesetzt wie du es vorgeschlagen hast. Funktioniert wirklich einwandfrei, vielen Dank für diesen Hinweis.
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: koehlerbv am 27.04.11 - 16:21:43
Ich denke, diesem Deinen Kunden hättest Du bei dessen abartiger Organisation im Umgang mit fremden Eigentum auch sonstwas installieren können, was wenigstens irgendwo auf dem Bildschirm zuckt - der wäre auch zufrieden gewesen  ;D

Bernhard
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: geppertb am 27.04.11 - 18:32:49
hehe,

zum Schutz des Kunden muss man ja sagen, dass sie zumindest besorgt darum sind, dass das Eigentum auch wirklich wieder an den Eigentümer kommt :)
Leider gibt es immerwieder vereinzelt "schwarze Schafe" die das Gesamtbild verfälschen.

Natürlich wurden die meisten Objekte an den eigentlichen Besitzer zurückgegeben, im allg. ist ein nicht aufgefundenes Objekt, schon eins zuviel.
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: koehlerbv am 27.04.11 - 22:33:56
Mit einem erforderlichen Übergabe-/Übernahme-Protokoll hat das aber auch gar nichts zu tun. Ich befürchte, dass man dann eher "Scheiss-Software!" schreit, anstatt an der Organisation der Abläufe zu drehen.
Ich verstehe nicht, warum Ihr nicht eine Datenbank für Übergabeprotokolle macht. Bei solch einer Stationsübergabe gibt es doch noch viel mehr zu tun als verlorene Klamotten zu bestätigen. Wenn der Rest nicht mit Notes gemacht wird (verständlich!), dann sollte auch "Lost & Found" in die andere Prozedur rein.

Ich verstehe sowas nicht.

Bernhard
Titel: Re: Dialogbox aus Agent aufrufen
Beitrag von: geppertb am 28.04.11 - 15:43:18
Grundsätzlich sieht es so aus: Der Kunde hat einen Grossteil in Lotus Notes (und das seit erheblicher Zeit). Alle Änderungen müssen von ihm bezahlt werden, da wir die Software nicht von Anfang an entwickelt haben (ganz im Gegenteil, wir arbeiten erst seit einem Jahr mit diesem Kunden und vorher hat niemand Support im Bereich ihrer Software geleistet), d.h. das irgendjemand, wenn er irgendwann mal Lust gehabt hat, ein Programm geschrieben hat und dies wurde dann in den Geschäftsprozess eingefügt. (Die Notes Programme wurden teilweise auch so entwickelt). Einige Programme werden derzeit von uns komplett neu in Java geschrieben, da aber alles Zeit und vorallem Geld kostet und es sich um nicht gerade wenig Systeme handelt (alleine Notes hat an die 120 databases), dazu kommen verschiedene Java Programme und etliche andere kleinere Programme, werden einfache, kostengünstige Lösungen bevorzugt.
Zumindest ist das mein alltäglicher Wahnsinn.  ???