【发布时间】:2010-01-10 23:46:10
【问题描述】:
C++ 规则引擎在 XML 中定义规则,其中每个规则归结为“如果 X,则 Y”,其中 X 是一组测试,Y 是一组动作。 在 C++ 代码中,可用于测试/操作的“函数”被创建为每个“函数”的类,每个函数都有一个“run(args)”方法......每个都有自己的一组参数。
这很好用。
但是,需要一个单独的工具来节省用户手工制作的 XML;规则引擎是针对非程序员的。该工具需要知道所有可用的“功能”,以及它们所需的输入参数。考虑这样做的最佳方法是什么?我考虑了几种可能性:
- 配置文件描述了“功能”及其参数,并由工具读取。这很简单,实际的 C++ 代码可以使用它来执行参数验证,但仍不能保证 C++ 和 XML 同步 - 程序员可能会修改 C++ 而忘记更新 XML 导致验证错误
- 每个“函数”类都有描述它的方法。不知何故,该工具加载了 C++ 类......这在支持反射的语言中很容易,但在 C++ 中更混乱,可能你必须构建一个包含所有“函数”或其他东西的特殊 DLL。这意味着额外的开销。
具体考虑到 C++ 的性质,什么是有意义的?
编辑:标题是否具有描述性?我想不出更好的了。
【问题讨论】:
标签: c++ xml rule-engine