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:

  1. Initialisierung: Erstellen des Ausführungskontexts

  2. Bereitstellung: Zugriff auf Produktdaten über vordefinierte Variablen

  3. Berechnung: Ausführung der Berechnungslogik

  4. Speicherung: Automatische Persistierung des Ergebnisses

Verfügbare Variablen im Script

  1. product - Zugriff auf alle Attributwerte des aktuellen Produkts

  2. logger - Logging-Funktionalität für Debugging

  3. result - Rückgabewert der im Attribut gespeichert wird

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.

Ausführungslogik:

  • Bei sprachabhängigen Attributen: Script wird pro Sprache durchlaufen (z.B. DE, EN, FR)

  • Bei sprachunabhängigen Attributen: Script wird nur einmal ausgeführt

Im Script sichtbar:

  • Sprachabhängige Attribute: Liefern den Wert der aktuellen Sprache

  • Sprachunabhängige Attribute: Liefern immer denselben Wert (unabhängig vom Durchlauf)

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):

  1. Durchlauf DE:

    • Sprachabhängige Attribute → Deutsche Werte

    • Sprachunabhängige Attribute → Standardwert

    • Ergebnis wird für DE gespeichert

  2. Durchlauf EN:

    • Sprachabhängige Attribute → Englische Werte

    • Sprachunabhängige Attribute → Standardwert

    • Ergebnis wird für EN gespeichert

  3. 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

DIRTY_WAITING

  • Produkt wurde geändert und benötigt Neuberechnung

  • Wartet auf Verarbeitung durch das System

DIRTY_PROCESSING

  • Aktive Berechnung läuft

  • Scripte werden gerade ausgeführt

Workflow-Ablauf

  1. Änderungserkennung: Bei Änderung eines Produktattributs prüft das System automatisch, ob abhängige f(x) Scripte existieren

  2. Status-Wechsel zu DIRTY_WAITING: Das Produkt wird für die Verarbeitung vorgemerkt

  3. Automatische Verarbeitung: Ein Hintergrundprozess erkennt wartende Produkte und startet die Berechnung

  4. Status-Wechsel zu DIRTY_PROCESSING: Während der aktiven Script-Ausführung

  5. Script-Ausführung: Alle f(x) Scripte des Produkts werden nacheinander ausgeführt

  6. Wertspeicherung: Berechnete Werte werden automatisch gespeichert

  7. 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:

  1. Gewichtsattribut wird von 8kg auf 35kg geändert

  2. Status wechselt zu DIRTY_WAITING

  3. System startet Verarbeitung

  4. Status wechselt zu DIRTY_PROCESSING

  5. Script prüft Bedingungen und ermittelt "Sperrgut"

  6. Versandkategorie wird gespeichert

  7. Status wechselt zu READY

  8. 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:

  1. Lagerbestand wird von 5 auf 0 reduziert

  2. Status wechselt zu DIRTY_WAITING

  3. Verarbeitung startet automatisch

  4. Status wechselt zu DIRTY_PROCESSING

  5. Script berechnet neuen Verfügbarkeitsstatus basierend auf Lieferzeit

  6. Status-Text wird aktualisiert

  7. Status wechselt zu READY

  8. Ä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:

  1. Durchlauf DE:

    • brand: "Samsung"

    • model: "Galaxy S23" (immer gleich)

    • color: "Mitternachtsschwarz"

    • size: "256GB" (immer gleich)

    • Ergebnis DE: "Samsung Galaxy S23 - Mitternachtsschwarz (256GB)"

  2. 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:

  1. Farbe wird von "Phantom White" / "Phantom Weiß" auf "Midnight Black" / "Mitternachtsschwarz" geändert

  2. Status wechselt zu DIRTY_WAITING

  3. System startet Verarbeitung

  4. Status wechselt zu DIRTY_PROCESSING

  5. Script wird für DE ausgeführt → Deutscher Name wird generiert und gespeichert

  6. Script wird für EN ausgeführt → Englischer Name wird generiert und gespeichert

  7. Status wechselt zu READY

  8. Änderungszeitpunkt wird aktualisiert

Welcome to the AI Chat!

Write a prompt to get started...