Search the FirstSpirit Knowledge Base
Guten Tag zusammen,
gibt es eine Möglichkeit aus einem Auftrag heraus Dialoge, sei es den undokumentierten CMSDialog oder die JOptionPane, zu erzeugen?
Wenn ich das Ganze als Skript in den Vorlagen anlegen und ausführe funktioniert es einwandfrei, aber im ScheduleContext scheint das Skript keine Rückschlüsse auf die GUI ziehen zu könne und es kommt zu Fehlern. Generell ist das Verhalten auch nachvollziehbar, da die Aufträge ja in erster Linie GUI-unabhängig ablaufen. Besteht aber dennoch die Möglichkeit solche einen Dialog, im Falle einer bestehenden GUI, anzuzeigen?
Schöne Grüße,
Florian Bätz
Wenn der Auftrag über Projekt->Auftrag ausführen gestartet wird habe ich aber nicht mehr die Möglichkeit 1 und 4 selbst zu steuern oder seh ich das falsch?
Korrekt, an dieser Stelle besteht keine Möglichkeit, sich einzuklinken.
Hallo,
Welche FirstSpirit-Vesion wird genutzt und wie sieht der/die StackTrace(s) aus?
generell kann mit GraphicsEnvironment#isHeadless getestet werden ob eine MOuse,Keyboard, Grafikarte angesprochen werden kann.
gruss
andre
Genutzt wird 4.2.432.
Und der StackTrace sieht im Falle des CMSDialogs folgendermaßen aus (der Import ist drin):
ERROR 05.04.2011 12:09:51.208 {seID=427417} (de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): error during script execution : de.espirit.firstspirit.access.script.ExecutionException: Attempt to resolve method: showInfoDialog() on undefined variable or class name: CMSDialog at line 21
de.espirit.firstspirit.access.script.ExecutionException: Attempt to resolve method: showInfoDialog() on undefined variable or class name: CMSDialog at line 21
at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:122)
at de.espirit.firstspirit.common.ScriptUtil.execute(ScriptUtil.java:88)
at de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor.run(ScriptTaskExecutor.java:93)
[...]
Im Falle der JOptionPane:
ERROR 05.04.2011 12:12:30.830 {seID=427417} (de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): error during script execution : de.espirit.firstspirit.access.script.ExecutionException: Method Invocation JOptionPane.showMessageDialog at line 21
de.espirit.firstspirit.access.script.ExecutionException: Method Invocation JOptionPane.showMessageDialog at line 21
at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:120)
at de.espirit.firstspirit.common.ScriptUtil.execute(ScriptUtil.java:88)
at de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor.run(ScriptTaskExecutor.java:93)
[...]
Aufträge werden auf dem FirstSpirit-Server ausgeführt. Daher macht es keinen Sinn, dort Dialoge anzuzeigen.
Wenn der Redakteur Parameter des Auftrages beeinflussen soll, müssen die Werte vor dem Start abgefragt werden.
Generell mag das stimmen, aber in diesem Fall kann der Auftrag eben auch manuell ausgeführt werden und es soll am Ende eine spezielle Rückmeldung an den Benutzer geliefert werden.
prinzipiell sollte CMSDialog nicht verwendet werden und auf dem FsServer ist CMDDialog natuerlich nicht bekannt. Also müsste man wohl Headless testen und JOptionPane nutzen o.ä.
Nicht "generell" sondern immer
Der Ablauf für deinen Anwendungsfall ist dann:
Schritt 1,2 und 4 können auf dem Client laufen, Schritt 3 nicht.
Ja, stimmt - laufen wird der Auftrag immer auf dem Server
Wenn der Auftrag über Projekt->Auftrag ausführen gestartet wird habe ich aber nicht mehr die Möglichkeit 1 und 4 selbst zu steuern oder seh ich das falsch?
Wenn der Auftrag über Projekt->Auftrag ausführen gestartet wird habe ich aber nicht mehr die Möglichkeit 1 und 4 selbst zu steuern oder seh ich das falsch?
Korrekt, an dieser Stelle besteht keine Möglichkeit, sich einzuklinken.
pjodeleit schrieb:
Wenn der Auftrag über Projekt->Auftrag ausführen gestartet wird habe ich aber nicht mehr die Möglichkeit 1 und 4 selbst zu steuern oder seh ich das falsch?Korrekt, an dieser Stelle besteht keine Möglichkeit, sich einzuklinken.
Könnte nicht von einer Auftragsaktion ein Workflow gestartet werden, der wiederum in einer automatischen Aktion nach dem Start ein Skript aufruft, welches die gewünschten Ergebnisse einblendet? [Der Workflow müsste sich danach natürlich auch direkt wieder beenden.]
Oder bekomme ich die Informationen aus dem Auftrag nicht in den Client kommuniziert?
Anstatt diesen [häßlichen und fragilen] Umweg zu nehmen, wäre es aber besser direkt einen Workflow zu starten und in diesem den Auftrag per Skript auszuführen und dann dort die Rückmeldung des Auftrags auszuwerten.
Viele Grüsse aus Dortmund,
Holger