C# で単純なルール エンジンを作成することになっています。私がどのように進めることができるかについての手がかりはありますか?. これは最小限のルール エンジンであり、SQL サーバーをバックエンドとして使用します。ルール エンジンに一般的に適用される一般的な設計図や設計パターンはありますか? 設計に使用できる .Net テクノロジの種類は? どんな指示も役に立ちます。ありがとう。
7 に答える
.NET 3.0 以降を使用している場合は、ワークフローを実際に使用しなくても、Windows Workflow Foundation のルール エンジンを使用できます。
私はプロジェクトでこれを行いました.SQLまたはXMLをバックエンドとして使用でき、うまく機能します. ワークフローの例に付属の IDE を使用して、独自のアプリに配置できます。素晴らしいです。
非常に多くの商用およびオープンソースが利用可能であることを考えると、あなたが独自に実装するとは信じられません。
手頃な価格の優れた商用オプションとして InRule を検討するか、オープン ソース スペースの NxBRE を検討することをお勧めします。
You can also try http://rulesengine.codeplex.com/
どのようなルール エンジンをお探しですか? スタイリングの練習に?もしそうなら、 StyleCopをチェックしてください。答えではありませんが、すでにあなたのために何かがあるかもしれません.
高レベルのルール エンジンをプログラムするビジネス アナリストがいる場合は、前述のルール エンジンのいずれかを選択するか、独自のルール エンジンを作成してください (ワークフローを含む)。そうでない場合は、ビジネス ロジックをコードでコーディングするだけで、ビジネス アナリストを雇ってシステムをやり直す必要が生じた場合でも、問題はありません。
実装を次のように書きたい場合は...
[TestMethod]
public void GreaterThanRule_WhenGreater_ResultsTrue()
{
// ARRANGE
int threshold = 5;
int actual = 10;
// ACT
var integerRule = new IntegerGreaterThanRule();
integerRule.Initialize(threshold, actual);
var integerRuleEngine = new RuleEngine<int>();
integerRuleEngine.Add(integerRule);
var result = integerRuleEngine.MatchAll();
// ASSERT
Assert.IsTrue(result);
}
...またはこれ...
[TestMethod]
public void GreaterThanRule_WhenGreater_ResultsTrue()
{
// ARRANGE
int threshold = 5;
int actual = 10;
// ACT
var integerRule = new IntegerGreaterThanRule(threshold);
var integerRuleEngine = new RuleEngine<int>();
integerRuleEngine.ActualValue = actual;
integerRuleEngine.Add(integerRule);
// Get the result
var result = integerRuleEngine.MatchAll();
// ASSERT
Assert.IsTrue(result);
}
方法についての指示はありますか?(つまり、これがコース教材で補足されている場合、現在何を学んでいますか?) これがかなり基本的なシステムであることが意図されている場合は、決定論的有限状態機械と非決定論的有限状態機械を調べると成功する可能性があります。