我需要构建一个应用程序(Ruby),允许用户选择一个或多个模式,以防这些模式匹配以继续并完成一组操作。 在进行我的研究时,我发现了基于规则的系统的新(对我而言)领域并花了一些时间阅读它,它似乎正是我需要的那种功能。
该应用程序将与不同的Web服务集成,并允许这样的规则:
添加Highrise联系人并创建Zendesk票证时,请向数据库添加电子邮件
我有两个想法来构建它。首先是构建一些类型的os DSL,以便能够指定规则条件并使用用户输入动态构建它们。
第二个是构建一些规则类,每个规则类都有一个模式/匹配器和动作方法。模式将评估表达式并返回true或false,如果匹配为正,则执行操作。
然后需要保留规则,然后定期评估。
任何人都可以对这个设计有所了解,或指出哪些地方可以获得更多相关信息?
由于
答案 0 :(得分:0)
您认为您可以在基于图表的表示中表示您的问题吗?我很确定您的问题可以被视为基于图表的问题
如果是,为什么不使用图形转换系统来定义和应用规则。我推荐的是GrGen.NET。 GrGen.NET的使用基于五个步骤构建
您可以在这里找到一本非常好的GrGen.NET手册:http://www.info.uni-karlsruhe.de/software/grgen/GrGenNET-Manual.pdf
答案 1 :(得分:0)
在商业规则引擎中,例如Drools,FlexRule ......模式匹配由RETE算法处理。并且,它们中的一些为不同的逻辑提供多个不同的引擎,例如程序,验证,推理,流程,工作流程......并且他们还提供DSL定制...... 规则排序和执行基于可在引擎上定义的议程和激活来处理。冲突解决策略可以帮助您找到适当的激活方式。
我建议您使用托管在主机/服务上的商业产品。并使用简单的Json / Xml格式与规则服务器通信并执行规则。这可能会比创建自己的结果更好。但是,如果您有兴趣创建自己的模式匹配引擎,请考虑复杂生产系统的RETE算法,议程和激活机制。
在RETE算法中,您可以考虑至少实现正面和负面条件。在实施RETE时,您需要实现beta和alpha内存以及支持左右激活的广告加入节点。