f(x) Attribute - Technische Dokumentation
Überblick
f(x) Attribute ermöglichen die automatische Berechnung und Aktualisierung von Produktattributen durch JavaScript-Code.
Das System führt Skripte bei Produktänderungen aus und speichert die berechneten Werte automatisch.
Funktionale Attribute stehen für die folgenden Attributtypen zur Verfügung:
Funktionsweise
JavaScript-Ausführung
Das System nutzt eine Java-basierte JavaScript-Engine zur Script-Ausführung mit folgenden Schritten:
-
Initialisierung: Erstellen des Ausführungskontexts
-
Bereitstellung: Zugriff auf Produktdaten über vordefinierte Variablen
-
Berechnung: Ausführung der Berechnungslogik
-
Speicherung: Automatische Persistierung des Ergebnisses
Mehrsprachigkeit
Sprachabhängige f(x) Attribute
Wenn ein f(x) Attribut als sprachabhängig konfiguriert ist, wird das Script für jede aktivierte Sprache separat ausgeführt.
Beispiel:
// Diese Werte ändern sich je nach Sprachdurchlauf:
var articleName = product.get("articleName");
// DE: "Artikel", EN: "Article"
var description = product.get("description");
// DE: "Beschreibung...", EN: "Description..."
// Dieser Wert bleibt immer gleich:
var articleNumber = product.get("articleNumber");
// Immer: "12345"
// Berechnung erfolgt mit den Werten der aktuellen Sprache
result = articleName + " (" + articleNumber + ")";
Ausführungsablauf bei 3 Sprachen (DE, EN, FR):
-
Durchlauf DE:
-
Sprachabhängige Attribute → Deutsche Werte
-
Sprachunabhängige Attribute → Standardwert
-
Ergebnis wird für DE gespeichert
-
-
Durchlauf EN:
-
Sprachabhängige Attribute → Englische Werte
-
Sprachunabhängige Attribute → Standardwert
-
Ergebnis wird für EN gespeichert
-
-
Durchlauf FR:
-
Sprachabhängige Attribute → Französische Werte
-
Sprachunabhängige Attribute → Standardwert
-
Ergebnis wird für FR gespeichert
-
Einschränkungen
-
Was funktioniert:
-
Sprachabhängige Werte der aktuellen Sprache lesen
-
Sprachabhängige Ergebnisse berechnen
-
Pro Sprache unterschiedliche Ergebnisse erzeugen
-
-
Was nicht funktioniert:
-
Werte einer anderen Sprache im Script abfragen
-
Die aktuelle Sprach-ID im Script ermitteln
-
Cross-Language Berechnungen (z.B. DE + EN Werte kombinieren)
-
| Das Script ist sprachagnostisch - es weiß nicht, welche Sprache gerade verarbeitet wird, erhält aber automatisch die korrekten sprachspezifischen Werte. |
Dirty-Processing Workflow und Status-Wechsel
Das System verwendet einen statusbasierten Verarbeitungsprozess, um sicherzustellen, dass berechnete Attribute immer aktuell sind.
Status-Übersicht
READY
-
Produkt ist vollständig aktualisiert
-
Alle f(x) Scripte wurden erfolgreich ausgeführt
-
Attributwerte sind konsistent
Workflow-Ablauf
-
Änderungserkennung: Bei Änderung eines Produktattributs prüft das System automatisch, ob abhängige f(x) Scripte existieren
-
Status-Wechsel zu DIRTY_WAITING: Das Produkt wird für die Verarbeitung vorgemerkt
-
Automatische Verarbeitung: Ein Hintergrundprozess erkennt wartende Produkte und startet die Berechnung
-
Status-Wechsel zu DIRTY_PROCESSING: Während der aktiven Script-Ausführung
-
Script-Ausführung: Alle f(x) Scripte des Produkts werden nacheinander ausgeführt
-
Wertspeicherung: Berechnete Werte werden automatisch gespeichert
-
Status-Wechsel zu READY: Verarbeitung abgeschlossen, Produkt ist aktuell
|
Aktualisierungszeitpunkt Bei jeder Script-Ausführung wird der Änderungszeitpunkt des Produkts aktualisiert - auch wenn sich der berechnete Attributwert nicht ändert. Dies stellt sicher, dass nachgelagerte Systeme über die Neuberechnung informiert werden und entsprechend reagieren können. |
Use Case Beispiele
Beispiel 1: Dynamische Produktkategorisierung
Szenario: Automatische Zuweisung einer Versandkategorie basierend auf Produkteigenschaften
// Produkteigenschaften auslesen
var weight = product.get("weight");
var dimensions = product.get("dimensions");
// Kategorisierungslogik
if (weight > 30 && dimensions > 100) {
result = "Sperrgut";
} else if (weight > 10) {
result = "Paketversand";
} else {
result = "Standardversand";
}
Ablauf:
-
Gewichtsattribut wird von 8kg auf 35kg geändert
-
Status wechselt zu DIRTY_WAITING
-
System startet Verarbeitung
-
Status wechselt zu DIRTY_PROCESSING
-
Script prüft Bedingungen und ermittelt "Sperrgut"
-
Versandkategorie wird gespeichert
-
Status wechselt zu READY
-
Produkt ist für nachgelagerte Systeme als aktualisiert markiert
Beispiel 2: Verfügbarkeitsstatus
Szenario: Berechnung der Produktverfügbarkeit basierend auf Lagerbestand und Lieferzeit
// Produkteigenschaften auslesen
var stock = product.get("stockQuantity");
var leadTime = product.get("deliveryLeadTime");
// Kategorisierungslogik
if (stock > 0) {
result = "Sofort lieferbar";
} else if (leadTime <= 7) {
result = "Lieferbar in " + leadTime + " Tagen";
} else {
result = "Auf Anfrage";
}
Ablauf:
-
Lagerbestand wird von 5 auf 0 reduziert
-
Status wechselt zu DIRTY_WAITING
-
Verarbeitung startet automatisch
-
Status wechselt zu DIRTY_PROCESSING
-
Script berechnet neuen Verfügbarkeitsstatus basierend auf Lieferzeit
-
Status-Text wird aktualisiert
-
Status wechselt zu READY
-
Änderungszeitpunkt wird aktualisiert (auch wenn Text unverändert bleibt)
Beispiel 3: Mehrsprachiger Produktname
Szenario: Automatische Generierung eines vollständigen Produktnamens aus mehreren sprachabhängigen Attributen
var brand = product.get("brand");
var model = product.get("modelNumber");
// sprachunabhängig
var color = product.get("color");
// sprachabhängig
var size = product.get("size");
// sprachunabhängig
// Vollständigen Namen zusammensetzen
result = brand + " " + model + " - " + color + " (" + size + ")";
Bei Ausführung über 2 Sprachen:
-
Durchlauf DE:
-
brand: "Samsung"
-
model: "Galaxy S23" (immer gleich)
-
color: "Mitternachtsschwarz"
-
size: "256GB" (immer gleich)
-
Ergebnis DE: "Samsung Galaxy S23 - Mitternachtsschwarz (256GB)"
-
-
Durchlauf EN:
-
brand: "Samsung"
-
model: "Galaxy S23" (immer gleich)
-
color: "Midnight Black"
-
size: "256GB" (immer gleich)
-
Ergebnis EN: "Samsung Galaxy S23 - Midnight Black (256GB)"
-
Ablauf:
-
Farbe wird von "Phantom White" / "Phantom Weiß" auf "Midnight Black" / "Mitternachtsschwarz" geändert
-
Status wechselt zu DIRTY_WAITING
-
System startet Verarbeitung
-
Status wechselt zu DIRTY_PROCESSING
-
Script wird für DE ausgeführt → Deutscher Name wird generiert und gespeichert
-
Script wird für EN ausgeführt → Englischer Name wird generiert und gespeichert
-
Status wechselt zu READY
-
Änderungszeitpunkt wird aktualisiert