Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Thunder am 21.10.04 - 13:46:35

Titel: Agent stoppen
Beitrag von: Thunder am 21.10.04 - 13:46:35
Hallo Leute,

kann man mit einem Script-Befehl einen Agenten zum anhalten bringen ?
Titel: Re: Agent stoppen
Beitrag von: Glombi am 21.10.04 - 13:50:51
Kannst Du biite genauer definieren, was Du erreichen willst?
Warum sollte ein Agent angehalten werden?

Andreas
Titel: Re: Agent stoppen
Beitrag von: Thunder am 21.10.04 - 14:12:22
OK - folgendes Problem:
Ich habe hier einen Server, auf dem nur eine DB liegt, um Margen auszurechnen.Die User können hier ihre Anfragen in die DB-Maske eingeben.Auf dem Server arbeitet die ganze Zeit ein Agent, der nachschaut, ob eine neue Anfrage vorliegt - > falls ja, öffnet er Excel (falls noch nicht offen) überträgt die Daten von der Notes-Maske in Excel - dort werden dann wilde Berechnungen ausgeführt und die Daten zurück an Notes geschickt, wo der Bearbeiter sie dann als Antwortdokument bekommt. Die Anzahl der Durchläufe des Agenten ist im Profil einstellbar. Am Abend wird dann ein 2.Agent gestartet, der dann das Excel schließt - der funktioniert aber nur, wenn der andere Agent nicht läuft !
Jetzt hatte ich aber schon das Problem, daß den Server neu starten musste und dann die Zeitplanung der beiden Agenten nicht mehr hinkommt. Deswegen möchte ich gern, daß ich den ersten Agenten über einen Befehl einfach stoppen kann, wenn er noch läuft.
Ganz schön wild, oder ?
Titel: Re: Agent stoppen
Beitrag von: eknori am 21.10.04 - 14:22:37
was ist mit @Command( [AgentEnableDisable] ; Agentname ; AktivStatus )
Titel: Re: Agent stoppen
Beitrag von: koehlerbv am 21.10.04 - 14:25:43
Wenn das funktioniert, dann bestimmt nicht zeitnah genug.

Andere Frage: Warum läuft der andere Agent überhaupt dauernd und nicht nur "Wenn Dokumente erstellt oder geändert wurden" ? Dann kannst Du Dir doch das separate Schliessen der Excelinstanz sparen ...

Bernhard
Titel: Re: Agent stoppen
Beitrag von: Thunder am 21.10.04 - 14:34:35
Danke für die Antworten:
Das hatten wir vorher probiert.Das ging aber nicht vernünftig, weil für eine Berechnung mehrere Minuten benötigt werden. Die Berechnung unter Excel ist unheimlich Komplex-es werden noch diverse Add-Ins benötigt  usw. Deswegen die Abfrage - dann wird ein Flag gesetzt und die folgenden Berechnungen in eine Warteschlange gestellt.
Könnte man hier evt. einen  Befehl einbauen (bin doch leider nicht so Script-firm  :-\)

Hier der Code für das Excel-beenden.

Option Public
Use "EXCELLIB"  

(Declarations)
Public Type INPUT_TYPE
   dwType As Long
   xi(0 To 23) As Integer
End Type

(Initialize)
Sub Initialize
   Print "Excel wird beendet"
   Dim oleExcel As Variant
   
   On Error Resume Next
   Set oleExcel = getobject(, "Excel.Application")
   
   If Isobject(oleExcel) Then
      On Error Goto 0
      Excel_Quit(oleExcel)
   Else
      Print "Kein Excel geöffnet -> Agent beendet"
   End If
   
End Sub
Public Type KEYBDINPUT
   wVk As Integer
   wScan As Integer
   dwFlags As Long
   time As Long
   dwExtraInfo As Long
End Type

Declare Function SendInput Lib "user32.dll" (Byval nInputs As Long, pInputs As INPUT_TYPE, Byval cbSize As Long) As Long