2011-08-05 15 views
5

Estoy creando una interfaz donde los usuarios pueden construir sus propias reglas de negocios de objetos específicos de dominio en tiempo de ejecución, tienen esas reglas persistentes en la base de datos y luego las usa la aplicación. Algunos de estos son predicados complejos y otros requieren combinaciones de objetos de dominio en lo que parecen relaciones bastante complicadas. Hasta ahora he estudiado GoF, dynamics con eval y CodeDom. ¿Alguien tiene alguna sugerencia sobre lo que debería usarse?Reglas de negocio dinámicas

+2

¿Cuál es exactamente su pregunta, cómo almacenarlas y recuperarlas, o cómo ejecutarlas de manera rápida? Algunas muestras ayudarían, también en qué deberían operar las reglas, etc. – gjvdkamp

+0

Eche un vistazo al motor de reglas de Code Effects. Hace lo que estás buscando. – Lacash

Respuesta

1

Kaizen, dependiendo del alcance y el tipo de sus reglas dinámicas, podría utilizar un motor de flujo de trabajo, como MS WF para definir las reglas como actividades de flujo de trabajo, por ejemplo ... de esta manera aislar la lógica y no necesita una reconstrucción completa de la aplicación cuando necesita cambiar algo en el flujo de trabajo.

Esto podría no ser la mejor solución, pero podría ser una alternativa ...

1

Después de haber pasado un año construyendo un motor de reglas y luchando en enfoques, puedo decir que no es fácil. Especialmente cuando te enfocas en cuál es tu objetivo. Si se trata de hacer que los usuarios escriban las reglas para el sistema, realmente debe concentrarse mucho en esa área. Lo que es fácil para un desarrollador es quizás mucho más difícil para la mayoría de los usuarios de negocios. Construimos una plataforma de autoría de reglas en Excel que se compiló en C# y se ejecutó dinámicamente ... el problema fue que los usuarios encontraron las hojas de cálculo y el flujo de la lógica demasiado complicado y contrataron a los contratistas de ASp.NET para construir las reglas.

BizTalk tiene un motor que creo que puede ser utilizado para aplicaciones .NET http://www.microsoft.com/biztalk/en/us/business-rule-framework.aspx

Que se diviertan!

1

¿Con qué frecuencia cambian las reglas? Crear un sistema que le permita al negocio construir (y versionar) sus propias reglas es mucho más desafiante que construir un sistema que permita a un programador actualizar las reglas de manera dinámica.

Cuando surgió un requisito similar en un proyecto anterior, la empresa admitió que, aunque sí, las reglas cambiarán; no cambiarán tan a menudo que tiene para que ellos estén haciendo las actualizaciones. Terminamos usando IronPython para las partes dinámicas y almacenando el código en la base de datos y el sistema obtendría las reglas apropiadas en la carga. El resto de la aplicación fue escrita en C#. Una victoria para nosotros y para el negocio.