문제

C#으로 간단한 규칙 엔진을 만들어야 합니다.어떻게 진행할 수 있는지에 대한 단서가 있나요?.이는 최소한의 규칙 엔진이며 SQL 서버를 백엔드로 사용합니다.규칙 엔진에 일반적으로 적용되는 일반적인 청사진이나 디자인 패턴이 있습니까?어떤 종류의 .Net 기술을 사용하여 디자인할 수 있나요?어떤 지시라도 도움이 될 것입니다.감사해요.

도움이 되었습니까?

해결책

.NET 3.0 이상을 사용하는 경우 Windows Workflow Foundation의 규칙 엔진을 사용할 수 있습니다. Workflow를 실제로 사용할 필요 없이.

저는 프로젝트에서 이 작업을 수행했으며 SQL 또는 XML을 백엔드로 사용할 수 있으며 훌륭하게 작동합니다.워크플로 예제와 함께 제공되는 IDE를 사용하여 이를 자신의 앱에 넣을 수 있습니다.훌륭해요.

다른 팁

  1. 상업적으로 이용 가능한 소스와 오픈 소스가 너무 많다는 점을 고려하면 당신이 자신만의 소스를 구현할 것이라고는 믿을 수 없습니다.

  2. 합리적인 가격의 훌륭한 상업용 옵션인 InRule이나 오픈 소스 공간의 NxBRE를 살펴보는 것이 좋습니다.

당신은 또한 시도할 수 있습니다http://rulesengine.codeplex.com/

어떤 종류의 규칙 엔진을 찾고 계십니까?스타일링 연습을 위해?그렇다면 가서 확인해 보세요 스타일캅.대답은 아니지만 이미 당신을 위한 무언가가 있을 수도 있습니다.

방법에 대한 지침이 제공됩니까?(즉, 현재 배우고 있는 내용이 강의 자료로 보완된다면?) 이것이 상당히 기본적인 시스템이라면 다음을 살펴보는 것이 성공할 수 있습니다. 결정론적 유한 상태 머신 그리고 비결정적 유한 상태 머신

높은 수준의 규칙 엔진을 프로그래밍할 비즈니스 분석가가 있는 경우에는 괜찮습니다. 앞서 언급한 규칙 엔진 중 하나를 선택하거나 자체적으로 굴릴 수 있습니다(워크플로 포함).그렇지 않다면 비즈니스 로직을 코드로 코딩하면 됩니다. 비즈니스 분석가를 고용하고 시스템을 다시 실행해야 하는 경우에는 잘 된 것입니다.

구현 내용을 다음과 같이 작성하고 싶다면...

[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);
}

...그렇다면 여기에서 간단한 규칙 엔진을 확인해 보세요. http://www.duanewingett.info/2015/01/21/SimpleCRuleEnginePart1TheRuleEngine.aspx

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