Wie implementiert man eine flexible Promotion-Engine, die komplexe Abhängigkeiten und exklusive Rabattregeln in Echtzeit berechnet?

Wir setzen für die Implementierung einer flexiblen Promotion-Engine auf eine entkoppelte Rule-Engine-Architektur. Die Logik wird dabei in zwei funktionale Komponenten unterteilt: Conditions (Prädikate) und Actions (Effekte).

Eine Condition prüft, ob spezifische Kriterien erfüllt sind (z. B. Warenkorbwert > 100 €, Nutzergruppe = 'VIP' oder Kategorie = 'Elektronik'). Die Action definiert die daraus resultierende Auswirkung (z. B. 10 % Preisreduktion, Fixbetrag-Abzug oder eine Gratisbeigabe).

Um exklusive Regeln und Abhängigkeiten zu steuern, führen wir Prioritätsstufen und Exklusionsgruppen ein. Die Berechnung erfolgt in einem definierten Pipeline-Prozess:

  1. Filterung: Auswahl aller aktiven Regeln, deren Zeitfenster und Basis-Conditions auf den aktuellen Warenkorb zutreffen.
  2. Validierung: Prüfung von Abhängigkeiten (z. B. „Regel B wird nur angewendet, wenn Regel A bereits gegriffen hat“).
  3. Konfliktlösung: Anwendung einer definierten Strategie zur Handhabung exklusiver Rabatte.
  4. Berechnung: Finale Kalkulation der Preise.

Die Wahl der Konfliktlösungsstrategie bestimmt, wie die Engine mit sich überschneidenden Regeln umgeht:

StrategieFunktionsweiseErgebnis
Best DealAlle gültigen Regeln werden berechnetDer Kunde erhält den höchsten Einzelrabatt
Priority FirstRegeln werden nach Priorität sortiertDie erste gültige Regel stoppt die weitere Prüfung
StackableRegeln werden sequenziell angewendetRabatte kumulieren (z. B. 10 % + 5 %)

Die Echtzeitberechnung wird durch das Laden der aktiven Regelsätze in einen In-Memory-Cache sichergestellt. Die effiziente Strukturierung und Bereitstellung dieser Datenmengen ist ein Kernaspekt unseres Data Engineering.

Für die technische Umsetzung nutzen wir das Specification Pattern. Dies erlaubt es uns, komplexe logische Verknüpfungen (AND, OR, NOT) modular aufzubauen, ohne die Kernlogik der Engine bei jeder neuen Kampagne anpassen zu müssen. Die Regeln werden in einer JSON- oder XML-Struktur hinterlegt, die zur Laufzeit in ausführbare Prädikate übersetzt wird.

Wir empfehlen den strikten Verzicht auf Hardcodierung von Rabattlogiken im Business-Layer; nur eine vollständig konfigurierbare Rule-Engine mit expliziten Prioritätsstufen verhindert technische Schulden und Fehlberechnungen bei steigender Kampagnenkomplexität.

Sergej Wiens

Sergej Wiens

Gründer & Software Architekt