Best Practices > Diskussionen zu Best Practices
BP: Notes Agenten
TMC:
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 ;D ) 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.
koehlerbv:
--- 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.
--- Ende Zitat ---
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"
--- Ende Code ---
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
TMC:
Hi Bernhard,
kein Problem, wir sind ja hier nicht in Eile :)
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.
animate:
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).
--- Ende Zitat ---
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.
koehlerbv:
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
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln