Search the FirstSpirit Knowledge Base
Hallo Community,
vielleicht könnte mir jemand einen Tip geben - ich habe eine Executable-Klasse (aus einem von mir installierten Modul),
die ich über ein Skript im SiteArchitect starten möchte.
Die Sache ist die, dass das nur geht, wenn ich in den Eigenschaften des Skripts den Geltungsbereich "Kontextmenü" wähle.
Wenn ich "Menü" auswähle und versuche das Skript zu starten (über "Extras" -> "Skript ausführen"), kommt eine Error
(de.espirit.firstspirit.common.ScriptUtil): de.espirit.firstspirit.impl.access.GuiScriptContextImpl
ohne Stacktrace.
Anscheinend wird die Ausführung schon vor dem Aufruf des Executable gestoppt.
Mein Skript:
#!executable-class
GlobalZipcodeInfoImportExecutable
module.xml:
<!DOCTYPE module SYSTEM "lib/module.dtd">
<module>
<name>rl_pdb3-importer</name>
<version>1.0.0</version>
<description>FS Module for importing data into PDB 3.0</description>
<vendor>re-lounge GmbH</vendor>
<components>
<public>
<name>ZipcodePriceImportExecutable</name>
<class>com.relounge.badenova.pdb3.importer.ZipcodePriceImportExecutable</class>
</public>
<public>
<name>GlobalZipcodeInfoImportExecutable</name>
<class>com.relounge.badenova.pdb3.importer.GlobalZipcodeInfoImportExecutable</class>
</public>
</components>
<resources>
<resource scope="module">lib/rl_pdb3-importer.jar</resource>
<resource scope="module">lib/commons-lang-2.6.jar</resource>
...
</resources>
</module>
FS Version 5.1.311.65223
Danke und Gruß,
Benny Kannengießer
// re-lounge
Hallo,
ich habe die Executable-Klasse jetzt so abgeändert, dass auf einen "ProjectScriptContext" getestet wird anstatt auf einen Content2ScriptContext und siehe da alles funktioniert.
Ich frage mich zwar, warum meine if-Abfrage vorher nicht die Exception geworfen hat, aber wenn's jetzt geht dann gut.
Danke und Gruß,
Benny Kannengießer
// re-lounge
Hallo Benny,
habe gerade mal versucht es nachzustellen (gleiche FS Version, gleicher Executable-Aufruf, ähnliche module.xml). Meine Executable gibt einfach nur eine Logging-Meldung aus. Und das funktioniert bei mir sowohl im Kontextmenü als auch im Menü über Extras -> Skript ausführen.
Könntest Du mir noch folgende Fragen beantworten:
Wo bekommst Du den Error? In der Java-Console?
Welche Java-Version verwendet ihr?
Und wie sehen die ersten Zeilen der execute-Methode eurer Executable aus?
Viele Grüße
Donato
Hi Donato,
Den Fehler bekomme ich tatsächlich in der Java (Web Start) Console.
Java Version ist 1.7.0_67-b01 Java HotSpot(TM) 64-Bit Server VM.
Hier die Executable-Klasse:
package com.relounge.badenova.pdb3.importer;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.Map;
import javax.swing.JFrame;
import com.relounge.badenova.pdb3.importer.gui.GlobalZipcodeInfoImportWizard;
import de.espirit.firstspirit.access.script.Executable;
import de.espirit.firstspirit.access.script.ExecutionException;
import de.espirit.firstspirit.access.store.contentstore.Content2ScriptContext;
public class GlobalZipcodeInfoImportExecutable implements Executable {
@Override
public Object execute(Map context) throws ExecutionException {
return execute(context, new PrintWriter(System.out), new PrintWriter(System.err));
}
@Override
public Object execute(Map params, Writer out, Writer err) throws ExecutionException {
Object context = params.get("context");
if (!(context instanceof Content2ScriptContext)) {
try {
err.append("context must implement 'Content2ScriptContext' [actual class: " + context != null ? context.getClass().getName() : "null" + "]");
} catch (IOException e) {
throw new ExecutionException(e);
}
return false;
}
GlobalZipcodeInfoImportController controller = new GlobalZipcodeInfoImportController((Content2ScriptContext) context);
JFrame frame = new GlobalZipcodeInfoImportWizard(controller);
frame.setResizable(true);
return true;
}
}
Ich habe es jetzt auch mal einer modifizierten Executable-Klasse probiert, die nur loggt, und das funktioniert dann!!
Danke und Gruß,
Benny
Hallo,
ich habe die Executable-Klasse jetzt so abgeändert, dass auf einen "ProjectScriptContext" getestet wird anstatt auf einen Content2ScriptContext und siehe da alles funktioniert.
Ich frage mich zwar, warum meine if-Abfrage vorher nicht die Exception geworfen hat, aber wenn's jetzt geht dann gut.
Danke und Gruß,
Benny Kannengießer
// re-lounge