Kontext für die Regeln / Context for the Rules

Es wäre schön wenn man innerhalb der Regeln auch noch auf den Context zugreifen könntet. Dadurch wäre man in der Lage erweiterte Regeln schreiben zu können die intelligenter werden könnten.

It would be nice if you could access within the rules also on the context. This would enable you to write advanced rules which could be smarter.

Tags (3)
7 Comments
Peter_Jodeleit
Crownpeak employee
Crownpeak employee

Rules have to be interoperable between rich (java) client and web client.

If the provided mechanisms are insufficient you have to implement a ValueService and use this in your rules.

Radigewski
Elite Observer

Wie kann man denn von einem ValueService auf den Context zugreifen?

rolf_siebachmey
I'm new here

Aus meiner Sicht ein sehr sinnvoller FeatureRequest.

Wenn ich z.B. im Formular einer Seite bin, hätte ich gerne das Page-Objekt zur Hand (bzw. würde es gerne ermitteln können). Dadurch könnte ich weitere Informationen der Seite in meinem ValueService verwenden (isSubscribed, hasMetaData, usw.).

fadtke
I'm new here

Hi,

ich habe gerade den ValueService benutzt, um auf die Page, respektive dessen Template, zuzugreifen. In der Hoffnung, dass es weiterhilft, hänge ich den Code mal an:

public class ScheduleService implements ValueService {

  private  MyModelListener modelListener;

  public ScheduleService(){
    modelListener = new MyModelListener();
  }

  @Override
  public Object getValue(final SpecialistsBroker specialistsBroker, final Map stringMap) {

    ServicesBroker servicesBroker = specialistsBroker.requireSpecialist(ServicesBroker.TYPE);
    String param_uidList = (String) stringMap.get("comma_separated_reference_names");
    String[] params = param_uidList.split(",");
    servicesBroker.getService(ModelService.class).addModelListener(SelectionModel.EDITORIAL, modelListener);

    boolean found = false;

    for(String param : params){
      if(!found){
        found = modelListener.checkCurrentPageTemplateUidIsEqualsWith(param);
      }
    }

    return found;
  }


  class MyModelListener implements ModelListener{

    private Object currentObject;

    @Override
    public void modelChanged(final Object o) {
     currentObject = o;
    }

    public boolean checkCurrentPageTemplateUidIsEqualsWith(String uid){
      String currentUid = "";
      if(currentObject != null) {
        IDProvider elementWrapper = ((SelectionModel)currentObject).getElement();

        while (elementWrapper instanceof Page == false){
          elementWrapper = elementWrapper.getParent();
        }

        if(elementWrapper instanceof Page){
          currentUid = ((Page)elementWrapper).getTemplate().getUid();
        }
      }

      return currentUid.equals(uid);
    }
  }

}
rolf_siebachmey
I'm new here

Schaue ich mir mal genauer an. Möglicherweise hilft mir das weiter. Danke schon mal.

sschneider
Occasional Observer

Hallo zusammen,

ich stehe vor einem ähnlichen Problem. Ich möchte den Referenznamen einer Datenquelle ermitteln und den Postfix daraus dann in ein Feld des Datensatzes speichern.

Leider meldet mir meine IDE, dass es die Klassen ModelService, ModelListener, und SelectionModel nicht gibt. Erst wenn ich die fs-lib-client.jar einbinden, kann ich diese benutzen.

Jedoch ist die Einbindung der fs-lib-client.jar nicht gewollt, oder sehe ich das falsch?

Gibt es vielleicht mittlerweile andere Möglichkeiten?

Ich wäre froh, über jegliche Unterstützung.

Danke & Gruß

Sabrina

feddersen
Community Manager
Community Manager

As mentioned by Peter, you can access the context by using a value service.