onRulesExecutionError method
Called when rules processing fails
Implementation
@override
void onRulesExecutionError(String error, Map<String, dynamic> context) {
if (!_isCapturing) return;
final eventId = _generateEventId(context);
final ruleKey = context['ruleKey']?.toString() ?? 'unknown';
final now = DateTime.now();
// Buscar o crear evento agrupado
RulesEventExecution eventExecution;
if (_activeEvents.containsKey(eventId)) {
eventExecution = _activeEvents[eventId]!;
} else {
final eventType = _extractEventType(context);
eventExecution = RulesEventExecution(
eventId: eventId,
timestamp: now,
eventType: eventType,
eventDescription: _generateEventDescription(context, eventType),
eventContext: Map<String, dynamic>.from(context),
ruleExecutions: [],
startTime: now,
);
_activeEvents[eventId] = eventExecution;
}
// Agregar regla con error al evento
final ruleExecution = RuleExecution(
ruleKey: ruleKey,
ruleName: context['ruleName']?.toString() ?? ruleKey,
status: RulesExecutionStatus.error,
startTime: now,
endTime: now,
error: error,
);
eventExecution.addRuleExecution(ruleExecution);
// Finalizar evento y mover a historial
final finalEvent = RulesEventExecution(
eventId: eventExecution.eventId,
timestamp: eventExecution.timestamp,
eventType: eventExecution.eventType,
eventDescription: eventExecution.eventDescription,
eventContext: eventExecution.eventContext,
ruleExecutions: List.from(eventExecution.ruleExecutions),
startTime: eventExecution.startTime,
endTime: now,
);
_addEventToHistory(finalEvent);
_activeEvents.remove(eventId);
_updateMetrics(finalEvent);
_eventExecutionStreamController.add(finalEvent);
_broadcastMetrics();
ObslyLogger.debug(
'❌ Rules Monitor: Rule execution error - $ruleKey for event $eventId: $error');
}