Autor Thema: Lotus Script blockiert alles  (Gelesen 9804 mal)

Offline Basti*

  • Junior Mitglied
  • **
  • Beiträge: 87
Lotus Script blockiert alles
« am: 02.10.12 - 11:55:02 »
Hallo,

ich habe hier ein paar Scripte, die brauchen etwas Zeit bei der Ausführung. Gestartet werden sie per Button in den Ansichten. Dabei wird der Notes Client komplegtt eingefroren. Arbeiten geht für diese Zeit nicht mehr. Ist die Routine mit allem durch, geht auch Notes wieder.

Kann man die Ausführung der Scripte irgendwie in den Hintergrund schieben? Oder gibt es irgend ein Kommando, dass man in Schleifen aufrufen kann, um die Steuerung des Notes Client zu ermöglichen?

Grüße
Basti

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.696
  • Geschlecht: Männlich
Re: Lotus Script blockiert alles
« Antwort #1 am: 02.10.12 - 11:56:15 »
Hallo,

Nein.


Andreas

Offline Basti*

  • Junior Mitglied
  • **
  • Beiträge: 87
Re: Lotus Script blockiert alles
« Antwort #2 am: 02.10.12 - 12:18:40 »
Mist!

Danke ;)

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Lotus Script blockiert alles
« Antwort #3 am: 02.10.12 - 12:28:25 »
Moin,

je nachdem was die Scripte machen käme vielleicht eine Auslagerung in Agenten mit der Option "Im Hintergrund-Client-Thread ausführen" in Frage?

Gruß
Demian
Gruß
Demian

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.696
  • Geschlecht: Männlich
Re: Lotus Script blockiert alles
« Antwort #4 am: 02.10.12 - 12:58:08 »
@Demian
Wen ich es aber noch richtig in Erinnerung habe, dann duerfen bei dieser Option des Agenten aber keine Front-End-Klassen referenziert werden.


Andreas

Offline Basti*

  • Junior Mitglied
  • **
  • Beiträge: 87
Re: Lotus Script blockiert alles
« Antwort #5 am: 02.10.12 - 14:49:40 »
Wann spricht man denn von Front-End-Klassen? Sind alle meine eigenen LIBs Front-End-Klassen?

Basti

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.696
  • Geschlecht: Männlich
Re: Lotus Script blockiert alles
« Antwort #6 am: 02.10.12 - 14:51:09 »
Nein.

FrontEnd-Klassen sidn alle die, die ein UI im Klassennamen tragen.

NotesUIWorkspace
NotesUIDocument

usw.


Andreas

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.696
  • Geschlecht: Männlich
Re: Lotus Script blockiert alles
« Antwort #7 am: 02.10.12 - 14:58:21 »
@Demian,

Was mir auch noch gerade einfaellt.

Basti* hat auch davon gesprochen, dass die Scripte ueber einen Button in einer Ansicht gestartet werden.
Was machst Du aber dann, wenn es sich bei diesen Scripten NICHT um einen Agenten handelt?


Andreas

Offline Basti*

  • Junior Mitglied
  • **
  • Beiträge: 87
Re: Lotus Script blockiert alles
« Antwort #8 am: 02.10.12 - 15:41:12 »
Nein.

FrontEnd-Klassen sidn alle die, die ein UI im Klassennamen tragen.
AH .. OK! Danke!

D.h. wenn ich in meinen Libs keine UI-Klassen verwende, könnte ich einen Agenten in den Hintergrund schicken? Das klingt doch nach einem Hauch von Hoffnung! :)

Basti

Offline Basti*

  • Junior Mitglied
  • **
  • Beiträge: 87
Re: Lotus Script blockiert alles
« Antwort #9 am: 02.10.12 - 15:44:34 »
@Demian,
[...]
Was machst Du aber dann, wenn es sich bei diesen Scripten NICHT um einen Agenten handelt?

Na, man könnte den Agenten per Formula starten: @Command([RunAgent];"Name d. Agenten"]). Wäre das eine Lösung? Oder greifen dann wieder Spezialdinge?

Basti

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.696
  • Geschlecht: Männlich
Re: Lotus Script blockiert alles
« Antwort #10 am: 02.10.12 - 15:58:27 »
Ich meinte es aber eher in der Richtung, dass der Code der ausgefuehrt werden soll sich entweder im Button selbst bzw. nur in Routinen aus Bibliotheken zusammensetzt.

Somit hast Du keinen Agenten mehr.
(taucht ja nicht im Designer unter Agenten auf)


Andreas

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.873
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Lotus Script blockiert alles
« Antwort #11 am: 02.10.12 - 16:39:30 »
Jeder Code, der direkt in einem Button steht kann auch in einen Agenten mit Ziel "Keines" ausgelagert werden. Insofern ist das nicht wirklich ne Einschränkung (auch wenn es ein wenig zusätzlichen Aufwand bedeutet).
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Lotus Script blockiert alles
« Antwort #12 am: 02.10.12 - 17:03:45 »

D.h. wenn ich in meinen Libs keine UI-Klassen verwende, könnte ich einen Agenten in den Hintergrund schicken? Das klingt doch nach einem Hauch von Hoffnung! :)


Im Prinzip ja, aber es dürfen auch sonst keine Interaktionen mit dem Benutzer stattfinden, also z.B. Eingaben über eine Inputbox gemacht werden oder Ausgaben über eine Messagebox usw.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Lotus Script blockiert alles
« Antwort #13 am: 05.10.12 - 09:50:28 »
@Andreas: deswegen habe ich geschrieben "je nachdem was die Scripte machen, käme vielleicht eine Auslagerung....."
Das mit dem Starten über den Button geht dann aber nicht. Dann wird trotzdem blockiert. Nur wenn die Dinger über "Aktionen" gestartet werden laufen se wirklich im Hintergrund. Code aus Script-Libs stellen hierbei aber kein Problem dar?

Beispiel:
Zitat
   Dim i As Integer
   Dim s As New NotesSession
   Dim db As NotesDatabase
   
   Set db = s.CurrentDatabase
   
   Call ReportInitialize(db,"Ini",s.CommonUserName)
   
   
   For i = 1 To 5000
      Call ReportWrite("Zähler: " & i)
   Next

ReportInitialize und ReportWrite sind Funktionen aus ner Script-Lib. Sofern über "Aktionen" gestartet rennt der Agent wie er es soll im Hintergrund und erzeugt die Report-Einträge.
« Letzte Änderung: 05.10.12 - 09:53:41 von Demian »
Gruß
Demian

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.873
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Lotus Script blockiert alles
« Antwort #14 am: 05.10.12 - 10:03:35 »
Also das mit dem "Start über Buitton geht nicht" ist nur halb richtig: Ich kann natürlich in den Button ein "@Command( [RunAgent] ; "MeinAgent" ) reinschreiben, und der Agent läuft dann im Backend- Client- Thread... Und das einbinden von Script- Libs ist überhaupt kein Problem.
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Lotus Script blockiert alles
« Antwort #15 am: 05.10.12 - 10:30:26 »
Also ich hatte das den Tag getestet. Starte ich den Agent mit dem Code von oben über nen Button auf folgende Weise:

Sub Click(Source As Button)
   Dim s As New notessession
   Dim db As NotesDatabase
   Dim agent As NotesAgent
   
   Set db = s.CurrentDatabase
   Set agent = db.GetAgent("Test")
   Call agent.RunOnServer
End Sub

blockiert er mir Notes. Habs jetzt aber grad mal mit dem Formelaufruf getestet, da blockiert er nicht. Gut zu wissen  ;D
Gruß
Demian

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.873
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Lotus Script blockiert alles
« Antwort #16 am: 05.10.12 - 10:42:33 »
Das hätte ich Dir auch sagen können... RunOnServer wartet auf den Rückgabewert des Agenten...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz