- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
FS_Button Drop
Hallo,
ich mรถchte gerne einen FS_Button benutzen, um Text/CSV Dateien an ein Script รผbergeben zu kรถnnen.
Problem Nr.1 ist, dass ich keine Klasse angeben kann als Drop Ziel. Ich habe den Button folgendermaรen konfiguriert:
onDrop="class:de.test.ClassName" wobei ClassName vom Typ Executable ist. Beim Speichern kommt hier immer die Fehlermeldung, dass die Excutable nicht geunden werden konnte, obwohl diese in einem Modul (scope=server) vorhanden ist. Das Problem konnte ich lรถsen indem ich einfach ein BeanshellScip ("#!executable-class ....") dazwischen geschaltet habe.
Problem Nr.2 ist, dass ich das gedropte Element nciht auslesen kann. Die Executable sieht so aus:
@Override
public Object execute(Map<String, Object> map) throws ExecutionException {BaseContext context = (BaseContext) map.get("context");
CommodityContainer dropdata = (CommodityContainer) map.get("dropdata");
TransferAgent transferAgent = context.requireSpecialist(TransferAgent.TYPE);
TransferType<String> transferAgentType = transferAgent.getType("*/*", String.class);
List texts = dropdata.get(transferAgentType);
texts.size(); // is always 0
return null;
}
Das Formular sieht so aus (habe hier auch schon mehrere Kombinationen ausprobiert):
<DROPTYPES>
<MIME type="*/*" classname="java.lang.String"/>
<MIME type="text/plain" classname="java.io.InputStream"/>
<MIME type="text/comma-separated-values" classname="java.io.InputStream"/>
</DROPTYPES>
Ich habe scon mehrer "TransferType" ausprobiert, ohne Erfolg Die Ergebnislisten size ist immer 0.
Ich hatte mir auch schon den AppCenter Showcase angeguckt, leider fehlt dort der entscheidende Teil.
PS: Wir setzten FS 5.2.314 ein.
Danke schon mal im Voraus,
Sebastian
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Sebastian,
hast du in deiner module.xml die Drop-Executable als Public-Komponente bekannt gemacht?
<public>
<name>MyDropHandler</name>
<description>My Drop Handler</description>
<class>de.test.ClassName</class>
</public>
Wenn nicht, kรถnnte das eine Ursache fรผr dein erstes Problem sein. Wenn der Eintrag in der module.xml vorhanden ist, solltest du sowohl onDrop="class:MyDropHandler" als auch onDrop="class:de.test.ClassName" verwenden kรถnnen.
Der Code deiner Executable sieht soweit erstmal richtig ist. Ich vermute, dass das Problem mit dem Mime- und Transfer-Type zu tun hat.
Was genau lรคsst du denn auf den Button fallen? Ein StoreElement? Ein Item aus einem Report? Mime- und Transfer-Type mรผssen natรผrlich zum tatsรคchlich gedroppten Element passen.
Viele Grรผรe
Tim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Tim,
Danke fรผr die Antwort. Nr. 1 mรผsste ich noch mal ausprobieren, aber ja eine Public Komponente habe ich nicht definiert (hab ich so auch nicht in der Doku gesehen :smileyconfused:).
Zu Nr. 2: Ich lasse eine externe (= aus Windows) Datei auf den button fallen (eine txt und csv Datei).
Gruร,
Sebastian
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Sebastian,
versuch mal Folgendes:
In deinem Formular
<MIME type="text/plain" classname="java.io.InputStream"/>
Und in deiner Executable
transferAgentType = transferAgent.getPlainTextType();
Als Dropdata solltest du dann die URL der Datei bekommen.
Viele Grรผรe
Tim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Tim,
Nr.1 ist jetzt gelรถst , es lag an der Public Komponente, 2 tut leider immer noch nicht
Der DropHandler sieht so aus:
public class DropHandler implements Executable {
@Override
public Object execute(Map<String, Object> map) throws ExecutionException {BaseContext context = (BaseContext) map.get("context");
CommodityContainer dropdata = (CommodityContainer) map.get("dropdata");
TransferAgent transferAgent = context.requireSpecialist(TransferAgent.TYPE);
TransferType<String> transferAgentType = transferAgent.getPlainTextType();
List texts = dropdata.get(transferAgentType);
texts.size(); // is still always 0 ๐
return null;
}@Override
public Object execute(Map<String, Object> map, Writer writer, Writer writer1) throws ExecutionException {return execute(map);
}}
Und das Formular so:
<CMS_MODULE>
<FS_BUTTON
name="test"
alwaysEnabled="yes"
icon="info"
onDrop="class:com.bosch.DropHandler"
useLanguages="no">
<DROPTYPES>
<MIME type="text/plain" classname="java.io.InputStream"/>
</DROPTYPES>
<LANGINFOS>
<LANGINFO lang="*" label="Drop something"/>
</LANGINFOS>
</FS_BUTTON>
</CMS_MODULE>
Audgerufen wird der Button in einem Context Menu Script.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Sebastian,
was genau meinst du mit
Audgerufen wird der Button in einem Context Menu Script.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Tim,
der Button wird im Formular eines Scriptes genutzt.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo zusammen,
hier noch als allgemein Info: Fรผr das beschriebene Problem gibt es aktuell keine allumfassende, offizielle Lรถsung. Das Problem haben wir aufgenommen, um es intern zu evaluieren.
Grรผรe,
Hannes

