mscholz3
I'm new here

Strukturvariable in einer Regel - ValueService

Jump to solution

Hallo Community,

ich habe in einem Beitrag gelesen, dass man anhand eines ValueService Strukturvariabeln in Regeln einbeziehen kann. (FS5 Rules: Werte von Projekt- und Strukturvariablen auswerten )

Leider wird nicht erklärt, wie man auf eine Strukturvariable zugreifen kann.

Die Strukturvariable als Parameter übergeben funktioniert logischerweise nicht, da man ja ansonsten direkt in der Regel den Wert prüfen könnte.

Trotzdem habe ich es probiert. Hier wird der ValueService erst gar nicht mehr aufgerufen. ss_unique_microsite_name ist  die Strukurvariabel  

....

<SCHEDULE delay="10" id="x" service="Strukturvariable">

....

<PARAM name="unique_microsite_name">

     <PROPERTY name="VALUE" source="ss_unique_microsite_name"/>

</PARAM>

</SCHEDULE>

Der erstelle ValueService funktioniert auf jeden Fall, da bei einem Testparamater der ValueService richtig aufgerufen wird.  

<PARAM name="unique_microsite_name">

     <TEXT>test</TEXT>

</PARAM>

Wahrscheinlich muss ich über einen Agent im ValueService, den ich durch den SpecialistsBroker bekomme, auf die Variabel zugreifen.

Hat jemand eine Idee wie ich am besten dran komme?

Liebe Grüße Marcel

0 Kudos
1 Solution

Accepted Solutions

Hi Lena,

danke für den Hinweis! Wir nutzen einen Tomcat und dort waren natürlich die Logs vorhanden. Danke sehr!

Zu dem eigentlichen Problem, welches ich mittlerweile lösen konnte:

Der Code oben funktioniert, nur liefert der WebeditUiAgent, je nachdem wie ich auf die Seite springe, andere Werte:

Ich hatte in meinem Lehrerverzeichnis eine Section (im SiteArchitekten) abgespeichert. Hierüber bin ich auf die Seite im ContentCreator gesprungen. Wenn ich nun auf diese Seite mit diesem Sprung den ValueService aufrufe, funktioniert mein Code nicht. Wenn ich den über einen Link auf der Seite im ContentCreator auf die Seite gehe und somit auf die PageRef, dann funktioniert alles prima. Wenn ich die Seite als Lesezeichen hinzufüge und auf die Seite hierrüber springe, dann funktioniert es ebenfalls problemlos

Also kurz zusammengefasst:

Lesezeichen CC.png

Der obige Sprung auf die Seite -> Code funktioniert nicht

Der untere Spring auf die Seite -> Code funktioniert.

Das Verhalten finde ich etwas komisch, da ich beim ContentCreator die Sektionen nicht wirklich erkenne und somit auch nicht weiß in welcher Sektion ich mich evtl. gerade auf der Seite im ContentCreator befinde. Erwarten würde ich: egal wie ich auf die Seite gekommen bin -> ich liefere die gleichen Werte dem ValueService bzw. den Brokern.

Viele Grüße

Marcel

View solution in original post

0 Kudos
6 Replies
mscholz3
I'm new here

Keiner eine Idee?

0 Kudos

Hallo Marcel,

meines Wissens kommst du über SiteStoreFolder.getFormData an Strukturvariablen. D. h. sobald du in deinem Service an einen Ordner in der Strukturverwaltung kommst, kannst du über die genannte Methode seine Variablen auslesen.

Ich hoffe das hilft dir weiter.

Viele Grüße

Tim

0 Kudos

Hi Tim,

danke für den Hinweis. Ich konnte Erfolgreich anhand des SpecialistsBroker die Strukturvariable im SiteArchitekten abfragen.

.

0 Kudos

Zugriff auf eine Sturkturvariable im ContentCreator über einen ValueService:

Im SiteArchitekten kann ich über den ValueService die Strukturvariable erhalten.

Im ContentCreator irgendwie nicht. Problem:

public static IDProvider getElement(final SpecialistsBroker specialistsBroker) {

   //##################### ContentCreator #####################
   WebeditUiAgent webeditUiAgent = specialistsBroker.requestSpecialist(WebeditUiAgent.TYPE);
  if (webeditUiAgent != null) {

   return webeditUiAgent.getPreviewElement();
   }

  //##################### SiteArchitect #####################
  ServicesBroker serviceAgent = specialistsBroker.requireSpecialist(ServicesBroker.TYPE);
  if (serviceAgent != null) {

    return serviceAgent.getService(ClipboardService.class).getCurrentElement();
   }

}

Hierüber erhalte ich ein IDProvider, der vom Typ PageRef ist. Von diesem Objekt kann ich leider kein getParentFolder() oder getParent() aufrufen, da sonst ein Fehler getriggert wird. Somit komme nicht in an die Strukturvariable.

(Im SiteArchitekten habe ich eine Sektion  bekommen, von der ich die PareRef erhalten konnte und darüber den ParentFolder)

Ich kann leider auch nicht sagen welcher Fehler geschmissen wird, da sich Log-Ausgaben nicht in der fs-server.log befinden. Ich rufe wie folgt den Logger auf:

private static final Class<?> LOGGER = MicrositeSiteStoreVariable.class;

Beispiel:

Logging.logError("currentElement " + currentElement, LOGGER);

Wo werden die Loginformationen geloggt? (Im Beitrag FS5 Rules: Werte von Projekt- und Strukturvariablen auswerten  wurde das Problem schon mal erwähnt, jedoch nicht beantwortet bzw. gelöst)

Im SiteArchitekten wird ein logError als Fehlerereigniss geschmissen. Da konnte ich den Fehler direkt im SiteArchitekten sehen.

Liebe Grüße

Marcel

0 Kudos

Hallo Marcel,

wo deine Logs landen, hängt davon ab wie der ContentCreator betrieben wird. Wenn du den internen Jetty verwendest (das passiert normalerweise, wenn du FirstSpirit lokal hochfährst), dann landen die Logs auch mit in der fs-server.log. Wenn du allerdings einen extra Webserver benutzt um die Webapps laufen zu lassen, musst du in die Logs des Webservers schauen.

Viele Grüße,

Lena

0 Kudos

Hi Lena,

danke für den Hinweis! Wir nutzen einen Tomcat und dort waren natürlich die Logs vorhanden. Danke sehr!

Zu dem eigentlichen Problem, welches ich mittlerweile lösen konnte:

Der Code oben funktioniert, nur liefert der WebeditUiAgent, je nachdem wie ich auf die Seite springe, andere Werte:

Ich hatte in meinem Lehrerverzeichnis eine Section (im SiteArchitekten) abgespeichert. Hierüber bin ich auf die Seite im ContentCreator gesprungen. Wenn ich nun auf diese Seite mit diesem Sprung den ValueService aufrufe, funktioniert mein Code nicht. Wenn ich den über einen Link auf der Seite im ContentCreator auf die Seite gehe und somit auf die PageRef, dann funktioniert alles prima. Wenn ich die Seite als Lesezeichen hinzufüge und auf die Seite hierrüber springe, dann funktioniert es ebenfalls problemlos

Also kurz zusammengefasst:

Lesezeichen CC.png

Der obige Sprung auf die Seite -> Code funktioniert nicht

Der untere Spring auf die Seite -> Code funktioniert.

Das Verhalten finde ich etwas komisch, da ich beim ContentCreator die Sektionen nicht wirklich erkenne und somit auch nicht weiß in welcher Sektion ich mich evtl. gerade auf der Seite im ContentCreator befinde. Erwarten würde ich: egal wie ich auf die Seite gekommen bin -> ich liefere die gleichen Werte dem ValueService bzw. den Brokern.

Viele Grüße

Marcel

0 Kudos