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