有没有办法获取已添加到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)
之类的事情会更容易。
提前致谢!
答案 0 :(得分:0)
查看source code,看起来规则在进程状态下以eresye_tree_list
的形式存储。你可以获取整个“rete”并用以下内容提取树:
[_, _, Tree, _, _] = eresye:get_rete(engine).
然后,您可以使用eresye_tree_list
模块中的函数遍历Tree
并将其转换为列表。将此实现作为eresye
模块本身的一部分可能是有意义的。