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"

1 N 2라는 두 파일이 있습니다. 첫 번째 파일에서 이름이 Nita 또는 Gita인지 확인해야합니다. 실행에 따라 가치를 얻을 수 있습니다. 이제이 결과 값은 XML 파일이고 경로가 정의 된 두 번째 파일과 비교해야합니다.

누구든지 C#에 효과적으로 동일하게 개발할 수있는 것이 있다고 제안 할 수 있습니까?

.NET 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) 또는 (C 및 D). 지금.


여기에 일부 C# 3.0 구조물을 사용하고 있습니다. 1.1에서 전체 개인 속성을 만들어야합니다.

다른 팁

Boo와 함께 DSL을 만들 수 있지만 1.1에서 작동하는지 모르겠습니다.

.NET 1.1에 의해 매우 제한 될 것입니다. 첫 번째 단계는 업그레이드하는 것입니다.

후속 단계에는 Windows Workflow Foundation에 내장 된 규칙 엔진이 포함될 수 있습니다. 이 엔진과 이와 관련된 그래픽 디자이너는 WF 외부에서 사용할 수 있도록 설계되었습니다.

볼 또 다른 것은 Microsoft Enterprise Library.

6 년 전 .NET 1.1이 지구를 통치했을 때 이러한 것들 중 어느 것도 존재하지 않았습니다.

또는 다른 사람 이이 작업을 수행하고 .NET의 .NET 또는 Blaze Advisor에 대한 IBM/ILOG 규칙과 같은 좋은 .NET 규칙 엔진을 사용할 수 있습니다. 그들은 잘 작동하고 .net에서 강력한 규칙 환경을 제공 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top