Hallo zusammen,
ich entwickle ein Plugin für Lagerbestand-Benachrichtigungen und habe ein Problem: Mein
Custom Flow Event wird dispatched, aber der Flow Builder führt keine Flows dafür aus.
Implementierung
Event-Klasse (implementiert FlowEventAware, ProductAware, MailAware):
class LowStockEvent extends Event implements FlowEventAware, ProductAware, MailAware
{
public const EVENT_NAME = ‚foo.product.low_stock‘;
public function getName(): string
{
return self::EVENT_NAME;
}
// ... alle erforderlichen Methoden implementiert
}
BusinessEventCollectorSubscriber (registriert mit Priority 1000):
public function onCollectBusinessEvents(BusinessEventCollectorEvent $event): void
{
$definition = $this->businessEventCollector->define(LowStockEvent::class);
$event->getCollection()->set($definition->getName(), $definition);
}
Event Dispatch:
$event = new LowStockEvent($context, $productId, $productName);
$this->eventDispatcher->dispatch($event, $event->getName());
Was funktioniert
- Event wird dispatched (eigene Log-Einträge beweisen es)
- BusinessEventCollectorSubscriber ist registriert
- Flow existiert in DB (event_name = ‚foo.product.low_stock‘, active = 1)
- Alle Interfaces korrekt implementiert
Das Problem
- debug:event-dispatcher foo.product.low_stock zeigt: „The event does not have any registered listeners“
- Flow wird nie ausgeführt
- Keine Flow-bezogenen Fehler in den Logs
Was ich bereits versucht habe
- Cache geleert (cache:clear, cache:pool:clear)
- dal:refresh:index ausgeführt
- Flow-Record aktualisiert
- Standard-Events funktionieren korrekt
Fragen
- Gibt es einen speziellen Service-Tag für Plugin-basierte Custom Flow Events in 6.7?
- Registriert der Flow Builder Listener automatisch für FlowEventAware Events?
- Gibt es einen Unterschied zwischen App flow.xml Events und Plugin Events?
Umgebung: Shopware 6.7.7.1, PHP 8.3.30
Danke für eure Hilfe!