どのように私はC#.NETで他のルール場合は、ユーザ定義を実行することができ、ルールエンジンを構築することができます

StackOverflow https://stackoverflow.com/questions/771843

  •  12-09-2019
  •  | 
  •  

質問

私は表形式で、Excelシートに格納されている。このように支配している中で、新たなルールエンジンを構築する必要があります。

<If>  "Name = Nita "
<Value> "200"
<else> "Name = Gita"
<value> "300"
<LookInto> "/Name/@Income"

私が持っている2つのファイルが1からn 2 iは名前がニタまたはギーターであるかどうかという最初のファイルで見る必要があると言います。実行に基づいて、私は値を取得します。私は、パスに定義されているXMLファイルである第二のファイルと比較する必要があります。

さて、この結果の値

誰もがそれは私が同じを開発するために効果的に使用することができますC#で何がある,,または私はC#のでこれを達成することができますどのように誰もが私を提案することができ、私を提案することができます..私は同じクラスの設計のためのいくつかのアイデアが必要です。

私は純1.1を使用しています。

役に立ちましたか?

解決

まず、あなたのルールを定義することができますクラスを作成する必要があります。あなたの場所にこのような構造を持っていたら、これらのクラスを利用してエンジンを構築することができるようになります。

私のようなものを作るになります:

class RuleEngine 
{
  public RuleMatch[] RuleMatches { get; set; }
  public void RunEngine(inputdata...) 
  {  
    // do processing in here
  }
}

class RuleMatch 
{
  public Rule[] Rules { get; set; }
  public Object ValueIfMatched { get; set; }
}

class Rule 
{
  public String FieldName { get; set; }
  public MatchType Match { get; set; }
  public Object Value { get; set; }
)

enum MatchType 
{
  Equal = 1,
  NotEqual = 2,
  GreaterThan = 4,
  LessThan = 8,
  Like = 16
}

そして、そこから上に行く....

それは例えば、ルールのグループに追加することができ、ルールのグループ(AとB)OR(CとD)を持つように変更された場合は、

この構造が良いだろう - 私はあなたにこれを残しておきます今のところ考えています。

<時間>

は1.1で、完全なプライベートプロパティを作成する必要があります、私はここにいくつかのC#3.0構文を使用していますのでご注意ください。

他のヒント

あなたはブーイングとDSLを作成することができますが、それは1.1で動作する場合、私は知りません。

あなたは非常に.NET 1.1によって制限されることになるだろう。私はあなたの最初のステップは、アップグレードすることになると思います。

以降の手順は、Windowsのワークフロー財団に組み込まれたルールエンジンを伴う可能性があり、このエンジン、及びそれに関連付けられたグラフィックデザイナーは、WFの使用可能な外になるように設計した。

を見てもう一つは、マイクロソフトエンタープライズライブラリでの一部であり、検証アプリケーションブロックになります。

.NET 1.1が地球を支配していたときにこれらの事のどれもが、6年前に存在していませんでした。

それとも他の誰かがこの仕事をやらせるとInRule Technologyの製品、.NET用.NETまたはブレイズAdvisorのIBM / ILOGルールのような良い.NETのルール・エンジンを使用することができます。彼らはうまく動作し、あなたの.NETの強力なルール環境を提供します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top