AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
07.06.20 - 05:53:48
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Best Practices
| |-+  Diskussionen zu Best Practices (Moderatoren: Axel, MartinG, animate, koehlerbv)
| | |-+  BP: Notes Agenten
« vorheriges nächstes »
Seiten: [1] 2 Nach unten Drucken
Autor Thema: BP: Notes Agenten  (Gelesen 15266 mal)
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« am: 19.05.04 - 22:06:48 »

Ich möchte eine Dokumentation zu Agenten erstellen.

u.a. wäre wohl interessant:
+ Wie stelle ich einen Agenten ein (All Documents / Selected Documents etc.)
+ @Command([ToolsRunMacro])
+ Einschränkungen (UI, andere Server, etc.)
+ Aufruf eines Agenten per Script
+ Agent von einer Datenbank ruft einen Agenten aus einer 2. Datenbank auf inkl. Dokumentübergabe (hab ich erst letzte Woche gemacht.....)
+ Neue R6-Features

Aufgrund des Umfanges (inkl. Beispielscripts etc.) wird dies wohl wieder eine PDF werden (ähnlich: Schleifenkunde in Lotus Script). Ich werde da auch auf die Hilfe von Euch angewiesen sein :-)

Im LDD gibt es auch eine Linkliste: Agent FAQ

Was für Themen interessieren Euch noch im Bezug auf Agenten ?
Wo sind immer wieder mal Missverständnisse? Was wird immer wieder gefragt? Was ist unklar, wo gibts Probleme?
Hat schon wer von Euch einen Überblick was in R7 neu kommt bezügl. Agents? (dann könnte man das gleich in einem Kapitel berücksichtigen)
etc. etc.
Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #1 am: 20.05.04 - 21:31:23 »

Ich habe unten mal ein erstes Draft angehängt.

Defizite habe ich hier noch bezüglich Java-Agenten.
Web habe ich auch noch nicht hinreichend geschildert (Probleme wie dass diese immer voll in den Speicher geladen werden - also Performance-Berücksichtigungen  etc.).

Außerdem fehlen noch andere Dinge wie
 - Agent Debugging & Logging
 - Mehr Praxisbeispiele (bisher hab ich nur eines)
 - die offenen Punkte

Aber vielleicht fühlt sich ja wer von Euch mit meinem Draft angesprochen um noch Input zu liefern :-)

EDIT:
- 21.05.04 12:00: Neue Draft-Version 0.07
- 21.05.04 14:30: Neue Aktualisierung
- 21.05.04 23:00: Updated
- 05.06.04 20:50: Veröffentlichung in BP

BP: Notes Agenten
« Letzte Änderung: 05.06.04 - 20:44:14 von TMC » Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

animate
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 1540


Uh, I'm just gonna go find a cash machine.


WWW
« Antworten #2 am: 20.05.04 - 21:47:04 »

ich hab keinen Input, aber beim Lesen der Trigger stellte ich mir plötzlich die Frage:
Was passiert, wenn es mehrere Agents gibt, die auf ein bestimmtes Event (z. B. Before/After mail arrives) reagieren?
Werden alle ausgeführt? Wenn ja, in welcher Reihenfolge? ...

P.S. Das soll keine Aufforderung sein, diese Frage für mich zu beantworten
Gespeichert

Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #3 am: 20.05.04 - 21:57:35 »

Danke Thomas, für Dein Feedback.

Ist eine sehr berechtigte und interessante Frage....

Der Trigger "Before new mail arrives" kann nur 1mal pro DB gesetzt werden. Der Client bringt dann auch eine Fehlermeldung.....

Die anderen Trigger (after mail arrives, when documents have been pasted etc.) können aber vielfach existieren - also in mehreren Agents. Konflikte sind da u.U. vorprogrammiert.
Ich habe gerade leider keinen Server hier zum testen.

Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

animate
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 1540


Uh, I'm just gonna go find a cash machine.


WWW
« Antworten #4 am: 20.05.04 - 21:59:16 »

nochwas

Zitat
Generell arbeiten wir hier auch mit UI-Methoden – damit z.B. ein PostOpen des Zieldokumentes ausgeführt wird. Diese hier verwendete Methoden werden zwar offiziell gar nicht unterstützt lt. R5-Designerhilfe (Run method der agents property: „You cannot use the Notes UI classes in an agent called by this method.“), aber funktionieren hier. Lediglich ein Workaround (eine Art Reopen) ist notwendig, da wir mit einem Richtextfeld arbeiten.

ich kann n Fälle aufzählen, bei denen die Dokumentation richtig ist und UI-Klassen nicht verwendet werden können. Also können schon, aber es funktioniert nicht.


Schöner Artikel!
« Letzte Änderung: 20.05.04 - 22:00:01 von Thomas Völk » Gespeichert

Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #5 am: 20.05.04 - 22:17:54 »

Zum Thema UI:
Typische UI-Dinge wie msgbox klappten bei mir auch nicht (kompilieren also speichern klappt, aber es kommt einfach keine msgbox). Aber hier musste ich feststellen (Trial and error), dass UI <> UI im Bezug auf notesuidocument. Diese Thematik fand ich heraus, weil ich unbedingt bestehende Postopen-Events laufen lassen wollte (um diese nicht erneut im Backend-Agenten nachzubilden). Und das klappt hier auch.
Sollte ich vielleicht noch in diesem Beispiel erwähnen (oder UI's ganz weglassen um Verwirrungen zu vermeiden).

Zitat
Schöner Artikel!
Schön, dass er Dir gefällt. Und danke fürs durchlesen.
Wobei ich schätzungsweise erst ca. 60-70% vom Inhalt her habe.....

Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

fritandr
Global Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 732


Höre nie auf besser zu werden...


WWW
« Antworten #6 am: 20.05.04 - 23:20:25 »

Hallo Matthias,

ich habe Deinen Artikel gerade mal kurz überflogen. Ist gut gelungen!
Am Wochenende komme ich hoffentlich dazu, das PDF mal wirklich komplett durchzulesen. Vielleicht fällt mir dann ja noch was ein/auf.

Hat schon wer von Euch einen Überblick was in R7 neu kommt bezügl. Agents? (dann könnte man das gleich in einem Kapitel berücksichtigen)
Dazu kann ich leider noch nichts sagen. Habe zwar hier mal einen Client installiert. Aber bis jetzt noch keine Gelegenheit gehabt, damit auch zu programmieren.

Viele Grüße
Andreas
Gespeichert

Andreas Fritz
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #7 am: 21.05.04 - 10:21:26 »

Was passiert, wenn es mehrere Agents gibt, die auf ein bestimmtes Event (z. B. Before/After mail arrives) reagieren?
Werden alle ausgeführt? Wenn ja, in welcher Reihenfolge? ...

Jetzt mal auf einem 6.5er Server getestet:

Ich habe 2 Agenten erstellt mit Event-Trigger "When documents are pasted" und einfacher Aktion:
- Agent 1: Modify field 'Feld1 ': Set to 'Agent 1'
- Agent 2: Modify field 'Feld1 ': Set to 'Agent 2'

Ergebnis: Die Agenten laufen in alphabetischer Reihenfolge durch (und nicht z.B. anhand Erstellungs- oder Speicherdatum). Es finden auch 2 Speichervorgänge statt lt. $Revisions-Feld.
Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #8 am: 21.05.04 - 11:27:31 »

Wie immer wieder eine hervorragende Arbeit, matthias. Vielen Dank.

Was ich noch aufnehmen würde: Den AgentManager AMgr (der ja für die Ausführung triggered agents verantwortlich ist, somit auch für die genannten Einschränkungen hinsichtlich Startzeit und Starthäufigkeit), und dass der auch mal beschäftigt sein kann (ist ja auch nur'm Mensch ;-) sowie die Dinge, die man auf der Serverkonsole mit ihm anstellen kann.

Debugging wäre noch ein Thema sowie logging (hier auch: Was der Administrator wissen sollte über den Agentablauf - und was den Programmierer interessieren sollte).

RunOnServer ist noch ein nettes Thema - sowie die Übergabe von Informationen aus einer Routine an einen aufgerufenen Agent.

Ach ja, vielleicht noch was: Agents, um Formel-Aktionen um LS zu ergänzen sowie die Möglichkeit, mit einem Agent in einer Ansicht gewählte Dokumente zu verarbeiten (und dabei die Markierung gleich aufzuheben).

Ich glaub', je länger ich darüber nachdenke, kommt wohl noch Stoff für ein ganzes Buch zusammen  Wink

Bernhard
Gespeichert
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #9 am: 21.05.04 - 11:39:26 »

Einen hab' ich noch - einen hab' ich noch:
Server based agents und LS frontend Klassen und Methoden. Was geht und was geht nicht ?
Dim ws As New NotesUIWorkspace ist schon ein Killerkriterium für solch einen Agent, wohingegen die Massage-Box akzeptiert (aber natürlich nicht ausgeführt wird).
Wie kann man Code ausführen (zum Bleistift aus einer ScriptLib), der NotesUI-Elemente enthalten muss, da dieser Code auch von client based-Programmen aufgerufen wird (-> Execute).

To be continued ...

Bernhard
Gespeichert
Hernan Cortez
Gast
« Antworten #10 am: 21.05.04 - 12:03:13 »

am besten zu dem Thema fand ich immer die Artikel von Julie Kadashevich: http://www-10.lotus.com/ldd/today.nsf/Author?OpenView&Start=105.1&Count=30&Expand=105#105
Gespeichert
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #11 am: 21.05.04 - 12:11:24 »

@Bernhard:
Danke für die guten Themenvorschläge. Werde versuchen möglichst alles einzubauen.
Habe oben noch eine aktuelle Draft (Version 0.07  Grin ) angehängt....


@Axel: Julie hat ja auch die Agent FAQ zusammengestellt. Ein paar Artikel habe ich schon begleitend zu dieser Doku durchgesehen, ist interessant.


Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

Semeaphoros
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8152


ho semeaphoros - agr.: der Notesträger


WWW
« Antworten #12 am: 21.05.04 - 12:53:27 »

Na ja, Julie, obwohl sie sich zur Zeit zur Konditormeisterin ausbilden lässt, ist simpel und einfach MISS AGENT, sprich Teamleader für das Agent-Entwicklungsteam - zur Zeit aber wie erwähnt nur in Teilzeitbeschäftigung .....
Gespeichert

Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #13 am: 21.05.04 - 18:00:38 »

@Bernhard:

Server based agents und LS frontend Klassen und Methoden. Was geht und was geht nicht ?
Dim ws As New NotesUIWorkspace ist schon ein Killerkriterium für solch einen Agent, wohingegen die Massage-Box akzeptiert (aber natürlich nicht ausgeführt wird).
Wie kann man Code ausführen (zum Bleistift aus einer ScriptLib), der NotesUI-Elemente enthalten muss, da dieser Code auch von client based-Programmen aufgerufen wird (-> Execute).

Mit R6 gibts da ja auch schon eine schöne Neuerung, was ich noch hinzugefügt habe:
Zitat
In R5 laufen Backend-Agenten, die UI-Klassen enthalten, bereits beim Laden auf einen Fehler und diese Agenten werden erst gar nicht ausgeführt – ein einziges Dimmen einer UI-Klasse führt hier schon zum Abbruch. Fehler die bereits beim Laden des Agenten auftreten sind schwierig zu debuggen: diese erscheinen zwar auf der Serverkonsole und im Server-Log („Unknown LotusScript error“ oder „Error loading USE or USELSX module: ....“), können aber programmatisch nicht abgefangen werden.

Ab R6 werden Backend-Agenten mit UI-Klassen geladen und ausgeführt. Sobald ein UI-Objekt im Script gedimmt wird, folgt ein Laufzeitfehler Nr. 217: „Error creating product object“. Hier kann man den Fehler mit einem simplen Errorhandling abfangen.

Aber kannst Du bitte mal ein konkreteres Beispiel nennen im Zusammenhang Backend-Agent, UI und der Execute-Function? Da komme ich jetzt nicht drauf wie man das in der Praxis sinnvoll verwenden könnte.

« Letzte Änderung: 21.05.04 - 18:02:04 von TMC » Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #14 am: 22.05.04 - 18:46:51 »

**PDF updated**
http://217.160.137.156/user/bp/tmc/_bestpractices/agenten/Agenten_DRAFT.pdf

Insbesondere neu ist:
 + Kap. Agentenaufruf aus Formelsprache und Script
 + ein paar weitere neue R6-Features ergänzt
 + Kapitel "Agenten-Baukasten"

Im wesentlichen fehlt noch u.a.:
 - Antwort / Hilfe von Bernhard zu meinem Posting vom 21.05.04 18:00:38
 - AMgr (da fehlt mir leider das Backgroundwissen)
    ----> Kann/möchte das wer von Euch beschreiben?
 - Rechte auf Agent-Basis vergeben
 - evtl. doch noch ausführlicher Logging & Debugging beschreiben (habe ich sehr oberflächlich behandelt - aber Verweis auf entsprechende Infoquellen)
« Letzte Änderung: 22.05.04 - 18:47:21 von TMC » Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #15 am: 22.05.04 - 19:00:17 »

Noch was zu R7:
Ich habe mir mal die Agenten im R7-Beta1-Client angesehen.
Bezüglich Agenten konnte ich aber nicht wirklich was neues entdecken (außer dass beim Rumklicken 2mal die RBOD kam  Grin ) Als Designerhilfe ist ja auch nur die vom 651er Designer dabei.
Ich denke ich werde daher noch warten mit den R7-Features bis R7 in der Final-Version verfügbar ist.
Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #16 am: 23.05.04 - 22:05:41 »

Zitat
Aber kannst Du bitte mal ein konkreteres Beispiel nennen im Zusammenhang Backend-Agent, UI und der Execute-Function? Da komme ich jetzt nicht drauf wie man das in der Praxis sinnvoll verwenden könnte.

Hallo, Matthias,

bitte entschuldige die späte Antwort ...

Folgendes Szenario "from the wild": Eine Routine bearbeitet Dokumente, die von einer Jahreszahl abhängig sind. Normalerweise läuft dies automatisch ab, und bearbeitet werden dann alle Jahre, die als gültig aus einem Konfigurationsdokument ausgelesen werden.
Das ganze und absolut identische Procedere soll aber auch im Dialog mit dem Admin für ein von ihm gewähltes Jahr ablaufen können. Deswegen die ganze Routine identisch nochmals erstellen ohne UI-Klassen ? Blöde Idee ... Aber
Dim ws as New NotesUIWorkspace
darf ja in einem scheduled agent nicht auftreten.

Daher folgendes kleines Code-Snippet in der Lib:
Code:
   If bIsInteractive = True Then
   'Display a prompt to select the desired year:
      szExecuteCode = |
         Dim ws As New NotesUIWorkspace
         szContingentYear = ws.Prompt (PROMPT_OKCANCELLIST, "Auswahl Jahr", "Für welches Jahr sollen Dokumente erstellt werden ?", vSetupValidYears (0), vSetupValidYears) |
      
      Execute szExecuteCode
      
      If szContingentYear = "" Then
         szMsg = "Die Dokumenterstellung wurde abgebrochen !"
         Msgbox szMsg, MB_ICONINFORMATION, "Abbruch"
         Exit Sub
      End If
   End If 'bIsInteractive = true"

Der scheduled agent ruft diese Routine mit bIsInteractive = False auf. Damit bekommt der Server niemals mit, dass da mit dem NotesUIWorkspace gedealt wird.

Hilft Dir das erstmal weiter ? Ansonsten bitte eine eMail schicken an die bekannte Adresse.

Einen guten Wochenstart und viel Erfolg mit Deiner Klasse-Agentdoku wünscht

Bernhard
Gespeichert
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #17 am: 25.05.04 - 19:17:01 »

Hi Bernhard,

kein Problem, wir sind ja hier nicht in Eile  Smiley

Danke für die Infos, jetzt ist einiges klarer. Ich werde das mal gelegentlich für die Doku aus/umformulieren - dann kannst Du ja nochmal drüberschauen.
Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

animate
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 1540


Uh, I'm just gonna go find a cash machine.


WWW
« Antworten #18 am: 25.05.04 - 20:39:47 »

Hmm, dieses Beispiel von Bernhard finde ich etwas ungeeignet für "Best Practices" (vielleicht sogar den ganzen Anwendungsbereich
Zitat
Wie kann man Code ausführen (zum Bleistift aus einer ScriptLib), der NotesUI-Elemente enthalten muss, da dieser Code auch von client based-Programmen aufgerufen wird (-> Execute).

Es funktioniert so, das steht außer Frage.
Ich denke nur, dass es in diesem Fall unsauber und unelegant ist, UI und Logik zu vermischen.
Kann auch sein, dass ich das Problem nicht blicke.
Persönlich würde ich hier eine Funktion vorziehen, die einmal von einem zeitgesteuerten Agent benutzt wird und einmal von einem Agent mit der GUI für den Admin.

Also für mich kein Best Practice, weil ich die Anwendung selbst nicht für Best Practice halte.
Gespeichert

Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #19 am: 25.05.04 - 23:25:45 »

Hallo, Thomas,

das ist ja gerade der Punkt - Back- und Frontend vermischen sich NICHT, obwohl sie (fast den) gleichen Code verwenden.

An Diskussionen zu diesem Thema wäre ich logischerweise sehr interessiert ;-)

Bernhard
Gespeichert
Seiten: [1] 2 Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: