ValueService
Author: Radigewski
Publication Date: 11/14/2013 14:57
Hallo,
in der Community gibt es einige Beiträge zum Thema Rules & ValueService. Gerade der ValueService scheint mir leider kaum dokumentiert zu sein. Mir ist daher nicht klar, wie man von einem ValueService auf den aktuellen Inhalt zugreifen kann. Gibt es irgendwo eine Beschreibung oder ein Beispiel? Kann mir jemand einen Tipp geben?
Grundsätzlich scheint es ja möglich zu sein:
"Innerhalb des Dienstes steht ein SpecialistBroker zur Verfügung, über den der Zugriff auf die üblichen Inhalte von FirstSpirit möglich ist."
https://community.e-spirit.com/message/16742#16742
Der SpecialistsBroker in ValueService.getValue() ist vom Typ "GuiHostDelegatingSpecialistsBroker", den ich wiederum nicht in der API finden kann.
Wie geht es hier weiter? Ziel ist es weitere Informationen aus dem aktuellen Inhalt zu lesen.
Vielen Dank
Thomas Radigewski
Tags: valueservice
-
Author: mbergmann - 11/15/2013 9:09
Hallo Her Radigewski,
um welche Informationen geht es genau? Werte von Eingabekomponenten desselben Formulars müssten Sie als Parameter übergeben:
<ON_EVENT>
<SCHEDULE service="NAME_DER_PUBLIC_KOMPONENTE" id="1" delay="200">
<CONDITION>
...
</CONDITION>
<PARAM name="myHeadline">
<PROPERTY source="st_headline" name="VALUE"/>
</PARAM>
</SCHEDULE>
<DO>
...
</DO>
</ON_EVENT>
... und dann im ValueService darauf zugreifen:
public Object getValue(final SpecialistsBroker broker, final Map<String, ?> params) {
String headline=(String) params.get("myHeadline");
...
}Viele Grüße
Michael Bergmann
0 -
Author: Radigewski - 11/15/2013 9:51
Ich möchte z.B. wissen, ob der aktuelle Absatz in einem Inhaltsbereich oder in einer FS_LIST angelegt wurde.
0 -
Author: mbergmann - 11/15/2013 12:24
Hallo Herr Radigewski,
das ist leider aktuell meines Wissens nach nicht möglich. Der ValueService hat nur die Informationen, die über Parameter hineinkommen: Also fixe Werte oder zugreifbare <PROPERTY>s. Und hier gibt es aktuell nur Properties, die zwar Informationen über das aktuelle StoreElement liefern - z.B. dessen Typ mit <PROPERTY source="#global" name="ELEMENTTYPE" />, aber nichts mit dem das konkrete Element identifiziert werden könnte.
Über den SpecialisBroker (bzw. einen Agent, den dieser liefern könnte) bekommen Sie im JavaClient leider auch überhaupt keine Informationen über den Element-Kontext...
Eine Möglichkeit, zumindest die aktuelle Seitenreferenz zu erhalten gibt es lediglich in WebEdit, da der SpecialistsBroker hier einen WebeditUiAgent liefern kann, den man dann per getPreviewElement() danach fragen kann. Ich habe mal ein Beispiel getestet, in dem die UID der entsprechenden Seitenreferenz zurückgeliefert und in ein INPUT_TEXT geschrieben wird:
public Object getValue(SpecialistsBroker specialistsBroker, Map<String, ?> stringMap) {
WebeditUiAgent agent=specialistsBroker.requestSpecialist(WebeditUiAgent.TYPE);
if(agent==null) {
return "No Agent there";
} else {
return agent.getPreviewElement().getUid();
}
}
Viele Grüße
Michael Bergmann
0 -
Author: MichaelaReydt - 12/5/2013 10:03
Hallo,
ist an dieser Stelle noch weitere Hilfe gewünscht oder konnten Michaels Antworten die Frage bereits lösen? In diesem Fall wäre es super, wenn die "richtige Antwort" entsprechend ausgewählt werden würde.
Viele Grüße
Michaela
0 -
Author: Martin_Dirlewan - 2/11/2014 17:09
Hallo,
zum Eintrag von Herrn Bergmann:
Für die JavaClient funktioniert es über den UIStoreAgent siehe:
UIStoreAgent uiStoreAgent = specialistsBroker.requestSpecialist(UIStoreAgent.TYPE);
// JavaClient.
if (uiStoreAgent != null)
{
GuiStoreElement activeUiElement = uiStoreAgent.getActiveUiElement();
if (activeUiElement != null)
{
System.out.println("Debug id:" + activeUiElement.getId());
System.out.println("Debug storeElement:" + activeUiElement.getStoreElement());
}
}
Grüße
Martin Dirlewanger
0 -
Author: StefanSchulz - 2/12/2014 7:01
Bitte Vorsicht, der UIStoreAgent ist keine API!
Gruß
Stefan
0 -
Author: gockel - 5/28/2014 9:47
Hallo Herr Dirlewanger,
das API-Pendant zu dem NICHT-API-Weg über UiStoreAgent ist der folgende Weg:
Registrierung eines ModelListeners für den Modeltyp SelectionModel#EDITORIAL auf dem ModelService
Gruß
0 -
Author: sschneider - 4/12/2016 10:49
Hallo zusammen,
gibt es noch ein anderen Weg, als über den ModelListener?
Ich habe mich an diesem Beispiel orientiert: https://community.e-spirit.com/ideas/1292#comment-3140.
Jedoch reicht die Einbindung der fs-access.jar dann nicht aus, und die Einbindung der fs-lib-client.jar ist doch nicht gewollt, oder sehe ich das falsch?
Gruß Sabrina
0 -
Author: MichaelaReydt - 4/12/2016 10:57
Hallo Sabrina,
kannst du mit dieser Frage bitte ein neues Posting eröffnen und in ihm lediglich auf dieses Posting verweisen?
Da dieses Posting zwei Jahre alt ist und bereits eine "richtige Antwort" besitzt, wird deine Frage sonst potentiell nicht wahrgenommen. Ein neu eröffnetes Posting vermeidet dies.
Danke und viele Grüße
Michaela
0
Please sign in to leave a comment.
Comments
9 comments