Expand description
触发规则引擎模块,提供基于事件模式的动态规则触发能力。
通过触发规则引擎,系统可以:
- 动态配置事件到动作的映射规则
- 支持事件名称模式匹配(通配符
*和**) - 支持条件过滤(基于 JSON payload)
- 运行时添加、删除、启用/禁用规则
- 与外部系统(如 WorkflowEngine)集成
§与 WorkflowEngine 集成示例
ⓘ
use std::sync::Arc;
use anycms_event::prelude::*;
use anycms_event::trigger::{TriggerRuleEngine, TriggerRule, TriggerAction, TriggerContext};
// 1. 创建触发规则引擎
let engine = TriggerRuleEngine::new(bus.clone());
// 2. 注册自定义 Action(例如触发 workflow)
engine.register_action("workflow", |ctx: TriggerContext| {
// 调用 WorkflowEngine.emit()
let workflow_engine = ctx.action_config["engine"].clone();
// ... 触发 workflow
async move { Ok(()) }
});
// 3. 添加规则
engine.add_rule(TriggerRule {
id: "rule-1".to_string(),
name: "内容发布触发 Sitemap".to_string(),
event_pattern: "content.published".to_string(),
condition: None,
action_type: "workflow".to_string(),
action_config: serde_json::json!({"workflow_id": "generate-sitemap"}),
enabled: true,
priority: 0,
});
// 4. 启动引擎(订阅 EventBus)
engine.start().await?;Structs§
- Condition
Limits - Safety limits for condition evaluation in the trigger rule engine.
- InMemory
Rule Storage - 内存规则存储。
- Trigger
Context - 触发动作的上下文数据。
- Trigger
Event - 触发规则引擎使用的内部事件类型。
- Trigger
Rule - 触发规则定义。
- Trigger
Rule Engine - 触发规则引擎。
Traits§
- Rule
Storage - 触发规则存储后端 trait。
Type Aliases§
- Trigger
Action Fn - 触发动作的异步回调类型。