- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Aufruf von FS Beanshell Scripten aus anderen Beanshell Scripten
Hallo Zusammen,
gibt es in FirstSpirit eigentlich die Mรถglichkeit Beanshell Scripte aus anderen Beanshell Scripten aufzurufen?
Muร ich dafรผr รผber die ScriptEngine gehen um die Executables auszulesen?!?
Falls ja, hรคtte jemand ein Beispiel, wie das Ganze funktioniert?
Vielen Dank schon mal!
Thomas Pannek
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo zusammen,
ich nehme das Beispiel hier mal auf und habe selber eine Frage.
Wie kann ich eigene Parameter in meine Executable Klasse einbringen?
z.B. wรผrde ich gerne an dieser Stelle data.get("st_text");
"st_text" nicht fest in den Quellcode schreiben.
Oder
String meintext = params.get("begruessungstext");
import de.espirit.firstspirit.access.GuiScriptContext;
public class MyExecutable implements Executable {
....
public Object execute(final Map<String, Object> params, final Writer _out, final Writer _err) throws ExecutionException {
final Object contextArg = params.get("context");
if (contextArg instanceof GuiScriptContext) {
final GuiScriptContext context = (GuiScriptContext) contextArg;
final Data data = context.showGui();
if (data != null) {
data.get("st_text");
// todo
} else {
// user clicked cancel
}
}
}
Dazu wรผrde ich dann im beanshell Script folgendes schreiben wollen
import java.util.HashMap;
import java.util.HashMap;
import java.util.Map;
import java.lang.String;
import java.lang.Object;
Map<java.lang.String,java.lang.Object> map = new HashMap<java.lang.String,java.lang.Object>();
map.put("context",context);
map.put("begruessungstext
","HelloWorld");
map.put("datafiled","st_text");
#! executable-class
MyExecutable.execute(map);
Das geht aber so nicht.
Was mache ich da falsch?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Das ist jetzt ein Beanshell-Skript , d.h. die letzten beiden Zeilen ersetzen durch Beanshell-Code (new MyExecutable().execute(map);) dann sollte es funktionieren.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Danke hat mir weiter geholfen.
Aber der 1.Fehler war schon weiter oben.
Das ersetzt
Map<java.lang.String,java.lang.Object> map = new HashMap<java.lang.String,java.lang.Object>();
map.put("context",context);
map.put("begruessungstext
","HelloWorld");
map.put("datafiled","st_text");
mit
Map map = new HashMap();
importObject( map );
put("context", context);
put("begruessungstext
", "HelloWorld")
(new MyExecutable().execute(map);)
und dann geht es.
Danke
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
es ist wahrscheinlich nicht mehr aktuell, aber was spricht gegen diese Variante?:
TemplateStoreRoot templateStore = ((UserService)context.getUserService()).getTemplateStore();
Map map = new HashMap();
map.put("context", context);
templateStore.getScripts().getScriptByName("__ref_name__").getExecutable(context.getProject().getTemplateSets().get(0)).execute(map);
Beste Grรผรe
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ich bestรคtige der Post von "Marcel Fadtke" als Anwort, weil ich die gleiche Struktur getestet habe, und ich konnte von einem Skript ein weiteres Skript oder mehrere Skripte starten.


- ยซ Previous
-
- 1
- 2
- Next ยป
- ยซ Previous
-
- 1
- 2
- Next ยป