C ++ルールエンジンはXMLでルールを定義し、各ルールは「if X、then Y」に要約されます。ここで、Xは一連のテストであり、Yは一連のアクションです。C ++コードでは、テスト/アクションで使用できる「関数」は、「関数」ごとにクラスとして作成され、それぞれに「run(args)」メソッドがあります...それぞれが独自のパラメーターのセットを取ります。
これは正常に機能します。
ただし、ユーザーがXMLを手作りするのを防ぐために別のツールが必要です。ルールエンジンはプログラマー以外を対象としています。ツールは、使用可能なすべての「関数」と、それらに必要な入力パラメーターを知っている必要があります。これを行うことを検討するための最良の方法は何ですか?私はいくつかの可能性を考えました:
- 構成ファイルには、「関数」とそのパラメーターが記述されており、ツールによって読み取られます。これは非常に簡単で、実際のC ++コードはこれを使用して引数の検証を実行できますが、それでもC ++とXMLの同期は保証されません。プログラマーは、C ++を変更し、XMLの更新を忘れて検証のバグが発生する可能性があります。
- 各「関数」クラスには、それを記述するメソッドがあります。どういうわけか、ツールはC ++クラスをロードします...これはリフレクションをサポートする言語では簡単ですが、C ++では厄介です。おそらく、すべての「関数」などを備えた特別なDLLを作成する必要があります。これは余分なオーバーヘッドを意味します。
特にC++の性質を考えると、何が理にかなっていますか?
編集:タイトルは説明的ですか?これ以上良いものは考えられません。