2008-09-18 17 views
17

Se supone que debo crear un motor de reglas simple en C#. ¿Alguna pista sobre cómo puedo proceder ?. Es un motor de reglas minimalista, y usaría SQL Server como back-end. ¿Tenemos algún modelo general o patrones de diseño que generalmente se apliquen a motores de reglas? ¿Qué tipo de tecnologías .Net puedo usar para diseñar uno? Cualquier dirección sería útil. Gracias.¿Cómo diseñar un motor de reglas?

Respuesta

14

Si está utilizando .NET 3.0 o posterior, can use the Rules Engine of Windows Workflow Foundation sin tener que utilizar; fuimos de flujo de trabajo.

He hecho esto en un proyecto, y puede usar SQL o XML como back-end, y funciona muy bien. Puede usar el IDE que viene con los ejemplos de Workflow y ponerlo en sus propias aplicaciones. Es excelente.

0

¿Qué tipo de motor de regla está buscando? Para las prácticas de estilo? Si es así, ve al StyleCop. No es la respuesta, pero puede que ya exista algo para ti.

+0

@Scott, estoy buscando desarrollar un motor de reglas de negocios con C#. Como inRule o algo así, pero muy simple. Y estoy buscando patrones o cualquier modelo, en base al cual puedo crear mi motor de reglas. –

3
  1. yo no puedo creer que implementar su propio teniendo en cuenta hay muchos disponibles en el mercado y de código abierto.

  2. Recomiendo echar un vistazo a InRule como una gran opción comercial que tiene un precio razonable, o NxBRE en el espacio de código abierto.

0

¿Se le ha dado alguna indicación sobre el método? (es decir, si esto se complementa con el material del curso, ¿qué está aprendiendo actualmente?) Si se trata de un sistema bastante básico, puede encontrar el éxito en Deterministic Finite State Machine y Nondeterministic Finite State Machine

+0

@jwarzech, no es para ningún curso. Es un motor de reglas de negocios, se supone que es un trabajo comercial, pero es bastante simple. Hay un par de clases genéricas (¿10 o más?) De reglas. Por cierto, una vez hice 'Theory of computation' en la escuela. Gracias por la respuesta de todos modos. –

0

Si tiene analistas comerciales para programar el alto nivel motor de reglas, entonces bien: elija uno de los motores de reglas antes mencionados o desarrolle el suyo propio (incluidos los flujos de trabajo). De lo contrario, simplemente codifique la lógica de su negocio en código y si alguna vez necesita contratar analistas comerciales y rehacer el sistema, está en un buen lugar para estar.

0

Si desea escribir su puesta en práctica algo como esto ...

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

... o esto ...

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

. .. entonces tal vez eche un vistazo a mi motor de reglas simples aquí: http://www.duanewingett.info/2015/01/21/SimpleCRuleEnginePart1TheRuleEngine.aspx

Cuestiones relacionadas