Wellmer
I'm new here

Generierungsauftrag - Setzen von Variable und Auslesen in den Projekteinstellungen

Jump to solution

Hallo zusammen,

ich bin wie in Zugriff auf Variablen in der Auftragsplanung vorgegangen.

ich habe über den Variablen-Tab in der Generierungsaktion eine Variable gesetzt:

Auftragsvariable.png

Auf diese greife ich wie folgt in den Projekteinstellungen zu:

$CMS_SET(void,#global.logWarning("job_isDebugEnabled: " + job_isDebugEnabled))$

Im Log bekomme ich dann folgende Meldung:

WARN  16.04.2018 09:15:34.773 (de.espirit.firstspirit.generate.SiteProduction): job_isDebugEnabled: null

Wir nutzen folgende Version:

FirstSpirit SiteArchitect 5.2.905.76007

Version Server: 5.2.905.76007

Java Version: 1.8.0_121 32bit Oracle Corporation

Betriebssystem: Windows 10 10.0 x86

Hat hier jemand noch eine Idee?

Gruß

Christian

PS

In der Dokumentation zu dieser Version findet man im Kapitel "9.6.4 Konfiguration des Generierungsauftrags" (immernoch) keinen Hinweis zur Verwendung der Variablen.

0 Kudos
1 Solution

Accepted Solutions

Deine Vermutung ist korrekt. Im Seitentemplate ist die Variable sichtbar.

Was aber dieses Feature irgendwie absurd macht, da es dann ja nicht für "Einmal-Einstellungen" in den Projekteinstellungen zu verwenden ist.

Gelöst habe ich das wie folgt:

Zusätzliche Aktion "Script ausführen" vor der Aktion "Generierung ausführen" mit folgendem Code eingefügt:

context.setProperty("context_isDebugEnabled", true);

Und Folgender Schnipsel in die Projekteinstellungsseite:

$-- please overrite this value by using script task and set context variable "context_isDebugEnabled", example: context.setProperty("context_isDebugEnabled", true); --$

$CMS_SET(set_isDebugEnabled, if(#global.scheduleContext.getProperty("context_isDebugEnabled").isEmpty, false, #global.scheduleContext.getProperty("context_isDebugEnabled")))$

$CMS_SET(#global.debugMode, set_isDebugEnabled)$

$CMS_SET(void,

    if(set_isDebugEnabled,

    #global.logWarning("debug mode ON - do not use this in production"),

    #global.logInfo("debug mode OFF")))$

View solution in original post

0 Kudos
9 Replies
witt
I'm new here

Hallo Christian,

an welcher Stelle schaust du Dir aktuell die Log-Meldung an? In der Vorschau oder ist das eine Logausgabe während der Generierung/der Ausführung des Auftrages?

Gruß,

Daniel

0 Kudos

In das Log des Generierungsauftrages.

0 Kudos

Kannst du dir mal die Variable in einer Seite ausgeben? Ich vermute, im Kontext der Projekteinstellungsseite sind die Variablen noch nicht verfügbar.

Peter
0 Kudos

Deine Vermutung ist korrekt. Im Seitentemplate ist die Variable sichtbar.

Was aber dieses Feature irgendwie absurd macht, da es dann ja nicht für "Einmal-Einstellungen" in den Projekteinstellungen zu verwenden ist.

Gelöst habe ich das wie folgt:

Zusätzliche Aktion "Script ausführen" vor der Aktion "Generierung ausführen" mit folgendem Code eingefügt:

context.setProperty("context_isDebugEnabled", true);

Und Folgender Schnipsel in die Projekteinstellungsseite:

$-- please overrite this value by using script task and set context variable "context_isDebugEnabled", example: context.setProperty("context_isDebugEnabled", true); --$

$CMS_SET(set_isDebugEnabled, if(#global.scheduleContext.getProperty("context_isDebugEnabled").isEmpty, false, #global.scheduleContext.getProperty("context_isDebugEnabled")))$

$CMS_SET(#global.debugMode, set_isDebugEnabled)$

$CMS_SET(void,

    if(set_isDebugEnabled,

    #global.logWarning("debug mode ON - do not use this in production"),

    #global.logInfo("debug mode OFF")))$

0 Kudos

Was aber dieses Feature irgendwie absurd macht, da es dann ja nicht für "Einmal-Einstellungen" in den Projekteinstellungen zu verwenden ist.

Der Einsatz-Zweck ist Variablen zu überschrieben, die im Struktur-Root-Knoten gesetzt sind.

Peter
0 Kudos

Hallo Peter,

dann bitte das in eurer Dokumentation auch genauso beschreiben.

Eine weitere Ergänzung, dass die Variablen nicht in den Projekteinstellungen zur Verfügung stehen, wäre sicherlich ebenfalls hilfreich.

Oder ihr denkt ggf. darüber nach sie auch dort verfügbar zu machen.

Meine Stimme habt ihr! ^^

Gruß

Christian

0 Kudos

Hallo Christian,

Meine Stimme habt ihr! ^^

Das ist ja ein valider Einsatzzweck, da kann ich mir gut vorstellen, dass da noch mehr Stimmen für einsammeln kannst.
Wichtig ist halt, das beide Einsatzzwecke funktionieren.
Stell doch bitte einen Feature-Request dafür ein. Du kannst dabei auf diese Diskussion verweisen und das Ticket CORE-7867 referenzieren.

Den Hinweis für die Dokumentation nehme ich davon unabhängig gerne auf.

Danke und Gruß,

Peter

Peter
0 Kudos

Hallo Peter,

ist hier zu finden: Generierungsaktionsvariable in den Projekteinstellungen verwenden

Gruß

Christian

0 Kudos
seegers
Returning Observer

Auch wenn es schon eine Weile her ist, ich hatte dies für mich einmal so lösen können, um in den Projekteinstellungen an die entsprechenden Variabeln zu kommen:

  1. //Abruf
  2. $CMS_SET(generationContextVars,{:})$ 
  3. $CMS_FOR(var,#global.scheduleContext().getTask().getVariables())$ 
  4.     $CMS_SET(void,generationContextVars.put(var.getKey(),var.getValue()))$ 
  5. $CMS_END_FOR$ 
  6. //Zugriff
  7. $CMS_VALUE(generationContextVars.dv_varName)$ 

Funktioniert natürlich nur, wenn eine Generierung läuft; für die Vorschau sollte mit $CMS_IF(#global.preview)$ noch eine Alternative eingebaut werden.

Gruß,

René

0 Kudos