ERESYE获取已添加到引擎的规则列表?

时间:2013-11-08 17:12:44

标签: module erlang rules rule-engine

有没有办法获取已添加到ERESYE规则引擎的规则列表?想象一下,我有这样的功能:

start () ->
  eresye:start(engine),
  eresye:add_rule(engine, {module, a_rule_function}),
  eresye:add_rule(engine, {module, another_rule_function}),
  %% do some other stuff
  ok.

在给定引擎名称的情况下,是否有办法检索已添加的所有规则函数的数组?我可以自己跟踪这个,但如果我可以做eresye:list_rules(engine)之类的事情会更容易。

提前致谢!

1 个答案:

答案 0 :(得分:0)

查看source code,看起来规则在进程状态下以eresye_tree_list的形式存储。你可以获取整个“rete”并用以下内容提取树:

[_, _, Tree, _, _] = eresye:get_rete(engine).

然后,您可以使用eresye_tree_list模块中的函数遍历Tree并将其转换为列表。将此实现作为eresye模块本身的一部分可能是有意义的。