AEPRulesEngine
概述
Swift 中简单、通用、可扩展的规则引擎。
要求
- Xcode 14.1(或更高版本)
- Swift 5.1(或更高版本)
安装
CocoaPods
# Podfile
use_frameworks!
target 'YOUR_TARGET_NAME' do
pod 'AEPRulesEngine'
end
替换YOUR_TARGET_NAME
,然后在Podfile
目录中
$ pod install
Swift Package Manager
要将AEPRulesEngine包添加到您的应用程序中,从Xcode菜单中选择
文件 > Swift Packages > 添加包依赖...
输入AEPRulesEngine包仓库的URL: https://github.com/adobe/aepsdk-rulesengine-ios.git
.
当提示时,输入特定的版本或版本范围。
或者,如果您的项目有一个Package.swift
文件,您可以将AEPRulesEngine直接添加到依赖中
dependencies: [
.package(url: "https://github.com/adobe/aepsdk-rulesengine-ios.git", .upToNextMajor(from: "4.0.0"))
]
使用方法
初始化规则引擎
要创建一个RulesEngine
实例,定义一个Evaluator
并将其传递给RulesEngine
的初始化器
let evaluator = ConditionEvaluator(options: .caseInsensitive)
let rulesEngine = RulesEngine(evaluator: evaluator)
定义规则
任何符合 Rule
协议的课程都可以用作规则
public class MobileRule: Rule {
init(condition: Evaluable) { self.condition = condition }
var condition: Evaluable
}
let condition = ComparisonExpression(lhs: "abc", operationName: "equals", rhs: "abc")
let rule = MobileRule(condition: condition)
rulesEngine.addRules(rules: [rule])
不带有动态抓取值灵活性的规则始终为真或假。要在运行时抓取规则的值,请使用 Mustache 标识符
let mustache = Operand<String>(mustache: "{{company}}")
let condition = ComparisonExpression(lhs: mustache, operationName: "equals", rhs: "adobe")
let rule = MobileRule(condition: condition)
rulesEngine.addRules(rules: [rule])
评估数据
使用 evaluate
方法通过 RulesEngine
处理 Traversable
数据
let matchedRules = rulesEngine.evaluate(data: ["company":"adobe"])
贡献
欢迎贡献!请阅读贡献指南以获取更多详细信息。
许可
本项目采用 Apache V2 许可。更多信息请见LICENSE