executeRules method

Future<Map<String, dynamic>> executeRules({
  1. required Map<String, dynamic> ruleDefinition,
  2. Map<String, dynamic>? eventContext,
})

Execute rules with given rule definition and context

Implementation

Future<Map<String, dynamic>> executeRules({
  required Map<String, dynamic> ruleDefinition,
  Map<String, dynamic>? eventContext,
}) async {
  try {
    // Merge event context with base context
    final executionContext = <String, dynamic>{
      ..._context,
      if (eventContext != null) ...eventContext,
    };

    // Parse rule definition into nodes
    final nodes = _parseRuleDefinition(ruleDefinition);

    // Execute rules
    final result = await _rootEngine.call(
      nodes: nodes,
      context: executionContext,
    );

    // Process results and extract actions
    return _processResults(result, executionContext);
  } catch (e, stackTrace) {
    ObslyLogger.error('Dart rules engine execution error: $e');
    ObslyLogger.error('Stack trace: $stackTrace');
    return {
      'success': false,
      'error': '$e\nStack trace: $stackTrace',
      'tags': <Map<String, dynamic>>[],
      'variables': <Map<String, dynamic>>[],
    };
  }
}