Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Thunder am 21.10.04 - 13:46:35
-
Hallo Leute,
kann man mit einem Script-Befehl einen Agenten zum anhalten bringen ?
-
Kannst Du biite genauer definieren, was Du erreichen willst?
Warum sollte ein Agent angehalten werden?
Andreas
-
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 ?
-
was ist mit @Command( [AgentEnableDisable] ; Agentname ; AktivStatus )
-
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
-
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