【发布时间】:2011-08-26 17:21:33
【问题描述】:
我正在寻找可以帮助我完成以下任务的 Ruby/Rails 工具:
我想在我的数据库中存储以下字符串以及与之类似的字符串。当一个对象被创建、更新、删除等操作时,我想遍历所有的字符串,检查CRUD事件是否匹配字符串的条件,如果是,运行指定的动作。
When a new ticket is created and it's category=6 then notify user 1234 via email
我打算创建一个接口来构建这些字符串,因此它不需要是人类可读的字符串。如果 JSONish 结构更好,或者工具具有现有语言,那就太好了。我的想法是这样的:
{
object_types: ['ticket'],
events: ['created', 'updated'],
conditions:'ticket.category=6',
actions: 'notify user',
parameters: {
user:1234,
type:'email'
}
}
所以基本上,我需要以下内容:
监控 CRUD 事件 - 如果该工具有办法做到这一点,那就太好了,但如果该工具本身没有提供它,我可以在这里使用 Rails 的 ModelObservers
查找所有匹配的“规则” - 这是我的主要未知数...
执行请求的方法/参数 - 理想情况下,这将在我的 Ruby 代码中定义为类/方法
是否有任何我应该研究的现有工具?
编辑:
感谢大家到目前为止的回复!非常感谢您为我指明正确的道路。
这里的用例是我们有许多不同的客户端,有许多不同的业务规则。对于适用于所有客户端的规则,我可以轻松地在代码中创建它们(使用类似于 Ruleby 的东西),但对于所有特定于客户端的规则,我想将它们存储在数据库中。理想情况下,规则可以编写一次,存储在代码或数据库中,然后运行(使用 Resque 来提高性能)。
在这一点上,我似乎不得不自己动手了,所以任何关于最好的方法的想法,或者我应该研究的任何工具,都将不胜感激。
再次感谢!
【问题讨论】:
-
你可以使用像
after_create和after_update这样的回调吗? -
@mischa - 在某种程度上,是的。其中每一个都应该触发一个事件,然后其他东西应该处理该事件以寻找匹配的规则,如果找到任何匹配规则,则对这些规则执行操作。很好地抽象它,这样我就不必手动触发事件并进行规则匹配会很好:-)
标签: ruby-on-rails parsing event-handling rule-engine