Skip to main content

Module trigger

Module trigger 

Source
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§

ConditionLimits
Safety limits for condition evaluation in the trigger rule engine.
InMemoryRuleStorage
内存规则存储。
TriggerContext
触发动作的上下文数据。
TriggerEvent
触发规则引擎使用的内部事件类型。
TriggerRule
触发规则定义。
TriggerRuleEngine
触发规则引擎。

Traits§

RuleStorage
触发规则存储后端 trait。

Type Aliases§

TriggerActionFn
触发动作的异步回调类型。