Aus einem LS heraus einen LS-Agent aufrufen

  • Hallo!


    Ich versuche gerade, über einen Button im Dokument dem User die Möglichkeit zu geben, einen Agenten zu starten, der mit Serverrechten läuft.
    D.h.: Der User hat ein Dokument angelegt und ist jetzt nicht mehr im Autorenfeld eingetragen (blöderweise funktionieren ja die Abschnitte mit Berechtigungen nicht sauber! -> siehe entsprechenden Post in diesem Forum).
    Trotzdem soll er in einem ganz bestimmten Feld noch Kommentare eintragen und in diesem Zusammenhang eine Infomail abschicken.


    Meine Idee: Nutze einen Agenten, der mit dem Recht des Servers läuft.
    Blöderweise hilft die Notes-Hilfe hier nur bedingt weiter. Ich kann mit agent.run wohl irgendwas bewirken, denn es git eine 0 zurück, aber auf jeden Fall läuft der Agent nicht.
    Ist die Notes-Hilfe hier etwa unvollständig?

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

  • Zitat


    Ich kann mit agent.run wohl irgendwas bewirken, denn es git eine 0 zurück, aber auf jeden Fall läuft der Agent nicht.


    Wenn der Agent 0 zurück gibt, läuft er sehr wohl. Wenn er nicht das tut, was du erwartest, bau ein geeignetes Error Handling ein, dann siehst du im Log, was er (nicht) tut. RunOnServer ist normal ohnehin die bevorzugte Methode, um zu erreichen was du dir vorstellt (jedenfall, wenn ich dich richtig verstehe).


    [size=xx-small][color=ff0000]Bitte Themenpräfix beachten![/color][/size]

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Naja, jetzt bekomme ich die Fehlermeldung, daß ich zu dieser Aktion nicht berechtigt wäre beim Aufruf von "RunOnServer"...

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

  • Das käme so ein bißchendrauf an....


    Aktuell soll er auf dem testserver laufen. Signiert egal mit welcher Server-ID (test oder produktiv) bekomme ich den gleichen Fehler.

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

  • Der jeweilige Server ist in den ganzen Sicherheitseinstellungen (Serverdokument -> Sicherheit -> rechte seite) eingetragen.

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

  • ok, habe nochmal die signatur und die einstellung am agenten selbst geprüft.
    Da stimmte wohl der servername nicht exakt.
    Jetzt bekomme ich die fehlermeldung nicht mehr, daß berechtigungen fehlen.
    Allerdings hat sich am Ursprungsproblem auch nichts geändert...
    ... der Agent gibt zwar 'ne 0 zurück, aber die Aktionen werden nicht ausgeführt.


    Ich schreib hier mal den Code auf:


    1) Button:
    Sub Click(Source As Button)
    Set se = New NotesSession
    Set db = se.CurrentDatabase
    Set agent = db.GetAgent("(Kommentar)")
    If agent.RunOnServer = 0 Then
    Messagebox "Kommentar geschrieben, Mail versendet",, "Success"
    Else
    Messagebox "Agent did not run",, "Failure"
    End If
    End Sub


    2) Agent:
    Sub Initialize
    Set se = New NotesSession
    Set agent = se.CurrentAgent
    Set ws = New NotesUIWorkspace
    Messagebox "Agent gestartet"
    Set uidoc = ws.CurrentDocument
    If uidoc.editmode = False Then uidoc.editmode = True
    Call Kommentar("Kommentar")
    If uidoc.FieldGetText("Kommentar") = "" Then Goto Ende
    sSendTo(1) = "lotusfee/firma/de"
    sSubject = "Ein neuer Kommentar wurde eingetragen"
    sMessage = "Bitte lesen Sie im entsprechenden Bereich des Tickets nach ----- >>> "
    wfl_Text = "Kommentar eingetragen"
    Call SendeAn(doc, sSendTo, sSubject, sMessage, wfl_Text)
    Ende:
    uidoc.editmode = False
    End Sub


    Die Sub-Routine Kommentar("Kommentar") steht in einer library.
    Prinzipiell ist alles gelaufen, als ich es direkt hinter den Button gelegt hatte.
    Nur leider darf der User das eben nicht, daher die Idee mit dem Server-Agenten...

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

  • Hi Andreas!


    Der Agent ist aber nicht periodisch, sondern wird aus einem script heraus aufgerufen!

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

  • Dennoch laeuft er auf dem Server und hat somit kein Frontend mehr.


    Wie soll er an das UI-Document herankommen?


    By the way.
    An agent.RunOnServer kann die NoteId eines zu bearbeitenden Dokumenten als Parameter uebergeben werden.



    Andreas

  • Ok!


    Aber so geht's auch nicht:


    1) Button:
    Sub Click(Source As Button)
    Set se = New NotesSession
    Set ws = New NotesUIWorkspace
    Set uidoc = ws.CurrentDocument
    Set db = se.CurrentDatabase
    Set agent = db.GetAgent("(Kommentar)")
    Set doc = uidoc.document
    If agent.RunOnServer(doc.NoteID) = 0 Then
    Messagebox "Kommentar geschrieben, Mail versendet",, "Success"
    Else
    Messagebox "Agent did not run",, "Failure"
    End If
    End Sub


    2) Agent:
    Sub Initialize
    Set se = New NotesSession
    Set db = se.CurrentDatabase
    Set agent = se.CurrentAgent
    Set doc = db.GetDocumentByID(agent.ParameterDocID)
    Messagebox "Agent gestartet"
    Call Kommentar("Kommentar")
    If doc.Kommentar(0) = "" Then Exit Sub
    sSendTo(1) = "lotusfee/firma/de"
    sSubject = "Ein neuer Kommentar wurde eingetragen"
    sMessage = "Bitte lesen Sie im entsprechenden Bereich des Tickets nach ----- >>> "
    wfl_Text = "Kommentar: "
    Call SendeAn(doc, sSendTo, sSubject, sMessage, wfl_Text)
    End Sub

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

  • Mal abgesehen, daß nicht mal die Messagebox des Agenten kommt... Kann ich überhaupt über RunOnServer einen Agenten nutzen, der User-Input erfordert?

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

  • Selbstverständlich nicht. Wie das OnServer ja aussagt, läuft der Agent auf dem Server. Ist wie wenn du tell amgr run "db.nsf" 'agent' auf der Konsole absetzt.

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Ok, das war klar.
    Aber mit 'nem "normalen" Run geht's eben genauso wenig: Angeblich läft der Agent erfolgreich, aber seine Befehle werden nicht abgearbeitet.

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

  • Hast du denn -wie bereits vorgeschlagen- ein vernünftiges Error Handling eingebaut (ich sehe da nichts dergleichen) um zu sehen, an welcher Stelle er angeblich nichts tut?

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Was verstehst Du unter einem "Vernünftigen Errorhandling" in diesem Zusammenhang?
    Ich gehe mit dem Script-Debugger durch und wenn iuch an der Stelle "if agent.run..." bin, dann rappelt's ganz leicht und das Ergebnis 0 wird ausgegeben.
    Der Agent selbst hat von mir direkt in der ersten Zeile eine msgbox bekommen, aber da kommt das script wohl nie an...

    LG Lotusfee
    Domino 9.0.1/ Notes 8.5.2 :-o


    "Wenn man keine Ahnung hat, einfach mal Fresse halten" (Dieter Nuhr)
    ... oder Jemand fragen, der sich mit sowas auskennt. (Gelbe Seiten)

  • vernuenftige Fehlerroutine will heissen:


    On Error GoTo ErrorHandler am Anfang Deines Codes.


    Anschliessend den Agenten laufen lassen.


    Zitat

    Der Agent selbst hat von mir direkt in der ersten Zeile eine msgbox bekommen


    Ersetze doch mal die Messagebox durch einen Print ...
    (Ausgabe erfolgt bei manuellem Start in der Statuszeile)



    Andreas