rule

package
v0.1.24 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 4, 2024 License: Apache-2.0 Imports: 6 Imported by: 0

README

规则引擎执行流程

  1. 规则定义
    • 业务分析师、技术专家或其他相关人员定义具体的业务规则。
    • 使用声明性语言或DSL来编写规则。
  2. 规则存储
    • 规则被保存在规则库或仓库中。
    • 保证规则的结构化、组织和检索。
  3. 规则部署
    • 规则从仓库部署到生产环境或其他特定环境。
    • 可能需要的编译或转换步骤。
  4. 规则执行
    • 输入数据准备:准备用于规则执行的数据。
    • 规则匹配:基于输入数据评估哪些规则应该被触发。
    • 规则决策:执行匹配的规则,并产生决策或行动。
    • 处理无匹配规则:当没有规则与输入数据匹配时,可能需要特定的行为或默认决策。
  5. 规则评估和优化
    • 基于实际应用和业务反馈评估规则的效果。
    • 根据需要优化和调整规则。
  6. 规则更新和版本控制
    • 更新或修改规则以适应变化的业务需求。
    • 保持规则版本的跟踪和管理,确保可以回溯或应用不同版本的规则。
  7. 异常处理和日志记录
    • 捕获并处理在规则执行过程中可能出现的异常。
    • 记录规则执行的日志,包括输入、匹配的规则、决策结果等,以便于跟踪和分析。

规则设计要素

  1. 规则名称(Rule Name)
    • 为每条规则提供一个唯一的标识。这有助于在日志、调试和维护时追踪和引用特定的规则。
  2. 规则描述(Rule Description)
    • 一个简短的文本描述,解释规则的目的和功能。尽管它在技术实现中不是必需的,但对于理解和维护规则是很有帮助的。
  3. 前提或条件部分(Premise or Condition)
    • 定义了规则触发的条件。这部分描述了一系列的测试或查询,用于确定规则是否应该被执行。例如,一个规则的条件可能是"如果一个人的年龄大于18"。
  4. 结论或动作部分(Conclusion or Action)
    • 如果条件部分为真,则执行这部分。这部分定义了规则触发后要采取的实际操作或决策。继续上面的例子,结论部分可能是"允许这个人投票"。
  5. 优先级(Priority, optional)
    • 在某些规则引擎中,规则可能会有一个优先级设置,以确定当多个规则同时满足条件时的执行顺序。
  6. 元数据(Metadata, optional)
    • 其他与规则相关的信息,例如规则的创建者、创建日期、最后修改日期等。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CompileRule

func CompileRule(code string, ops ...Option) error

func ExecRule

func ExecRule(code string, env any, ops ...Option) (rst any, err error)

Types

type Err

type Err int
const (
	UnknownErrCode Err = iota
	NotFound
)

func (Err) String

func (i Err) String() string

type Option

type Option = expr.Option

func AsInt added in v0.1.7

func AsInt() Option

func AsString

func AsString() Option

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL