Search the FirstSpirit Knowledge Base
Hallo,
wir haben einen selbstgeschriebenen ValueService über den <SCHEDULE>-Tag in den Regeln eines Formulars eingebunden. Der Service wird im Java-Client problemlos augerufen und funktioniert. Im WebEdit passiert jedoch gar nichts. Das jar-File der Public-Komponente ist in der module.xml als Resource der Webanwendung eingetragen, die Webanwendung ist im Projekt aktiv.
Meine Frage ist, ob die in einem <SCHEDULE>-Tag definierten Services im WebEdit überhaupt angesprochen werden? Und falls ja, wie müssten diese dann eingerichtet werden? In der Dokumentation zu <SCHEDULE> wird nur der Java-Client erwähnt, jedoch sollten die Regeldefinitionen ja in beiden Clients funktionieren, oder gibt es da Einschränkungen?
Viele Grüße
Thomas Domschke
Hi,
eine Einschränkung bzgl. id auf Zahlen gibt es nicht. Die ID dient dazu, verschiedene Instanzen des Services richtig zuordnen zu können, der Inhalt wird von uns nicht weiter verarbeitet und als Zeichenkette verwendet.
Ein Delay kann schon dazu führen, dass seltener ausgeführt wird (ist ja auch das Ziel), aber prinzipiell sollte auch dieses in Webedit funktionieren. Finden sich denn gar keine Informationen in den Logfiles (client-seitig)? Bei Problemen mit einer Regel sollten dort Meldungen mit Level Warning geloggt werden.
Mit den aktuellen Informationen sehe ich nicht, warum die Regel nicht funktioniert. Könnt ihr irgendwie feststellen (Logging o. Ä.), ob euer Service aufgerufen wird (mit gesetztem Delay)?
Gruß
Stefan
Hi,
bitte mal die Regeldefinition posten und die beteiligten Formularelemente erklären.
Prinzipiell soll diese Art Regel auch in Webedit funktionieren. Probleme können aber immer mal wieder auftreten.
Gruß
Stefan
Hallo,
momentan haben wir es als Beispiel mit einem einfachen TrueFalse Service eingebunden. Der Service gibt entweder ein Boolean.True (wish = true) oder ein Boolean.False (wish=false) zurück. Anhand der Rückgabe soll eine Eingabekomponente im Eingabeformular ein- bzw ausgeblendet werden.
Hier unsere Regeldefinition
<ON_EVENT>
<SCHEDULE service="demo" id="disable_footer" delay="100">
<PARAM name="wish"><TEXT>false</TEXT></PARAM>
</SCHEDULE>
<DO>
<PROPERTY source="tt_customfooter" name="VISIBLE"/>
</DO>
</ON_EVENT>
Und hier der Ausschnitt aus der modul.xml
<components>
<public>
<name>demo</name>
<class>de.thmd.TrueFalseService</class>
<description>Demo ValueService</description>
<resources>
<resource>lib/demoservice.jar</resource>
</resources>
</public>
</public>
<web-app>
<name>Demo WebApp</name>
<description>Webanwendung, welche die Public-Komponenten für den WebEdit bereit stellt</description>
<web-xml>web.xml</web-xml>
<web-resources>
<resource>lib/demoservice.jar</resource>
</web-resources>
</web-app>
</components>
Wie gesagt, im Java-Client funktioniert es wunderbar.
Gruß
Thomas
Hallo Stefan,
wir haben gerade mit den Parametern der Formular-Regel gespielt und dabei folgendes festgestellt:
Wird die Regel wie folgt definiert, funktioniert sie auch im WebEdit
<ON_EVENT>
<SCHEDULE service="demo" id="1">
<PARAM name="wish"><TEXT>false</TEXT></PARAM>
</SCHEDULE>
<DO>
<PROPERTY source="tt_customfooter" name="VISIBLE"/>
</DO>
</ON_EVENT>
Stimmen unsere Beobachtungen? Und gibt es weitere Einschränkungen, damit Regel-Definitionen zuverlässig im WebEdit funktionieren?
Vielen Dank
Dirk
Hi,
eine Einschränkung bzgl. id auf Zahlen gibt es nicht. Die ID dient dazu, verschiedene Instanzen des Services richtig zuordnen zu können, der Inhalt wird von uns nicht weiter verarbeitet und als Zeichenkette verwendet.
Ein Delay kann schon dazu führen, dass seltener ausgeführt wird (ist ja auch das Ziel), aber prinzipiell sollte auch dieses in Webedit funktionieren. Finden sich denn gar keine Informationen in den Logfiles (client-seitig)? Bei Problemen mit einer Regel sollten dort Meldungen mit Level Warning geloggt werden.
Mit den aktuellen Informationen sehe ich nicht, warum die Regel nicht funktioniert. Könnt ihr irgendwie feststellen (Logging o. Ä.), ob euer Service aufgerufen wird (mit gesetztem Delay)?
Gruß
Stefan
Hallo,
so wir haben unser Problem identifiziert - zumindest glauben wir das . Nachdem wir die Regeln in unserem Eingabeformular komplett geleert hatten und nur den Demoservice eingebunden haben, hat alles funktioniert.
Das Problem war ein anderer ValueService der in den ursprünglichen Regeln enthalten war. Dieser hat als Parameter einen Number Wert bekommen, was dazu führt, dass beim Aufruf des Formulars im WebEdit nichts mehr ausgeführt wird.
Ursprüngliche Regel mit dem Number-Parameter (explizit gesetzt)
<ON_EVENT>
<SCHEDULE service="demo2" id="disablefooter" delay="1000">
<PARAM name="type">
<NUMBER>3584</NUMBER>
</PARAM>
</SCHEDULE>
<DO>
<PROPERTY source="tt_customfooter" name="VISIBLE"/>
</DO>
</ON_EVENT>
Das führt dazu, dass im Java-Client alles funktioniert, im WebEdit aber nicht. Der Service wird dort einfach nicht aufgerufen.
Nachdem wir den Parameter auf Text gesetzt hatten, wurde der Service auch wieder angesprochen und fleißig Log-Ausgaben produziert.
<ON_EVENT>
<SCHEDULE service="demo2" id="disablefooter" delay="1000">
<PARAM name="type">
<TEXT>3584</TEXT>
</PARAM>
</SCHEDULE>
<DO>
<PROPERTY source="tt_customfooter" name="VISIBLE"/>
</DO>
</ON_EVENT>
Anscheinend hat der WebEdit warum auch immer Probleme damit, Number-Werte zu übertragen. Unsere Frage wäre noch, ob das ein Fehler ist oder so gewollt?
Grüße
Thomas
Hi,
Thomas-Michael Domschke schrieb:
Anscheinend hat der WebEdit warum auch immer Probleme damit, Number-Werte zu übertragen. Unsere Frage wäre noch, ob das ein Fehler ist oder so gewollt?
Na, gewollt kann das ja nicht sein.
Mir ist an dieser Stelle auch nicht klar, wieso ein Number-Parameter nicht funktionieren soll (technisch gesehen). Schade ist, dass anscheinend keine Fehlermeldung geloggt wird? Ein entsprechender Fehler müsste (wenn geloggt) im Client-Log erscheinen (ist hier wohl die Fehlerkonsole des Browsers).
Bitte mit möglichst viel Informationen (am Besten inkl. Testprojekt und Service) als Bug an den Helpdesk melden.
Gruß
Stefan