executeRules method
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>>[],
};
}
}