executeRule method
Execute a specific rule definition with optional explicit context
Implementation
Future<RulesResult> executeRule(
Map<String, dynamic> ruleDefinition, [
Map<String, dynamic>? context,
]) async {
if (!_engine.isActive) {
return const RulesResult.empty();
}
try {
// Use provided context, or rule's embedded context, or fall back to app context
final actualContext =
context ?? ruleDefinition['context'] ?? _appContext.toMap();
// Merge rule into context for engine execution
final fullContext = <String, dynamic>{
...actualContext,
'ruleDefinition': ruleDefinition,
};
return await _engine.executeRules(fullContext);
} catch (e, stackTrace) {
ObslyLogger.error('Error executing rule', e);
ObslyLogger.error('Stack trace: $stackTrace');
return RulesResult.error('$e\nStack trace: $stackTrace');
}
}