规则引擎
概述
Swift 中的简单、通用、可扩展的规则引擎。
安装
Swift 包管理器
一旦您设置了 Swift 包,将 RuleEngine 添加为依赖项就像将其添加到 Package.swift 中的 dependencies 值一样简单。
示例
dependencies: [
.package(url: "https://github.com/adobe/aepsdk-rulesengine-ios.git", from: "0.0.1")
]
用法
初始化规则引擎
要创建一个 RuleEngine
实例,首先定义一个 Evaluator
,然后将其作为参数传递给 RuleEngine
。
let evaluator = ConditionEvaluator(options: .caseInsensitive)
let rulesEngine = RulesEngine(evaluator: evaluator)
定义规则
任何符合 Rule
协议的事物都可以用作规则。最简单的方法是使用内建的 ConsequenceRule
。
let condition = ComparisonExpression(lhs: "abc", operationName: "equals", rhs: "abc")
let rule = ConsequenceRule(id: "sample-rule", condition: condition)
rulesEngine.addRules(rules: [rule])
然而,这样的规则没有动态获取值的能力,它始终会是真或假,而不具有实际意义。
let mustache = Operand<String>(mustache: "{{company}}")
let condition = ComparisonExpression(lhs: mustache, operationName: "equals", rhs: "adobe")
let rule = ConsequenceRule(id: "sample-rule", condition: condition)
rulesEngine.addRules(rules: [rule])
评估数据
使用 evaluate
方法在可以被遍历的输入数据上运行规则引擎。
let matchedRules = rulesEngine.evaluate(data: ["company":"adobe"])
贡献
欢迎贡献!阅读贡献指南获取更多信息。
许可协议
本项目采用 Apache V2 许可证。更多信息请参阅LICENSE。