onRuleExecutionStarted method

  1. @override
void onRuleExecutionStarted(
  1. String ruleKey,
  2. Map<String, dynamic> context
)
override

Called when a rule is about to be executed

Implementation

@override
void onRuleExecutionStarted(String ruleKey, Map<String, dynamic> context) {
  if (!_isCapturing) return;

  final eventId = _generateEventId(context);
  final eventType = _extractEventType(context);
  final now = DateTime.now();

  // Buscar o crear evento agrupado
  RulesEventExecution eventExecution;
  if (_activeEvents.containsKey(eventId)) {
    eventExecution = _activeEvents[eventId]!;
  } else {
    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 iniciada al evento
  final ruleExecution = RuleExecution(
    ruleKey: ruleKey,
    ruleName: context['ruleName']?.toString() ?? ruleKey,
    status: RulesExecutionStatus.started,
    startTime: now,
  );

  eventExecution.addRuleExecution(ruleExecution);
  _eventExecutionStreamController.add(eventExecution);

  ObslyLogger.debug(
      '🎬 Rules Monitor: Rule execution started - $ruleKey for event $eventId');
}