Drools 5.0 Candidate Release 1

Durante el día de ayer fue publicada la versión de Drools 5.0 CR1 (Candidate Release). Esta versión de Drools ya incluye versiones estables y probadas de sus módulos:

Drools Expert: Motor de inferencia de reglas empresariales, nos permite desacoplar reglas de negocio de nuestras aplicaciones y utilizar su motor de inferencia que utiliza para la deducción encadenamiento hacia adelante (forward chaining) y una extensión del Algoritmo RETE (llamada RETEOO).

Drools RuleFlow: modulo de BPM/Workflow, que nos permite definir procesos de negocio utilizando una API unificada para aprovechar las ventajas y la sesión del motor de inferencia. Permitiendo de esta manera una solución elegante y completamente integrada para el modelado de problemas empresariales reales.

Drools Fusion: modulo de procesamiento de eventos complejos, se agrega a la integración, este interesante modulo que permite que nuestras reglas de negocio puedan realizar deducciones basadas en datos temporales. Tambien  de una manera integrada al set de APIs.

Drools Guvnor: BRMS, sistema de administración de reglas empresariales que nos permitirá centralizar todos nuestros recursos de reglas, RuleFlow y consumirlos  desde este repositorio.

En las proximas semanas estare cubriendo cada uno de estos modulos con post practicos acerca de ellos, ya que se necesita probar bastante la herramienta y mejorar la documentacion actual para aprovechar al maximo la capacidad que nos brinda.

En la siguiente URL se pueden ver los cambios que se han ido agregando durante toda la etapa de desarrollo de esta nueva version.

http://blog.athico.com/2009/03/drools-50-cr1-new-and-noteworthy.html

Les recomiendo que vayan probando este framework porque presenta muchas ventajas a la hora de desarrollar soluciones complejas que requieran  las funcionalidades presentadas por sus modulos. Tambien es interesante el hecho de poder probarlo para proponer nuevas funcionalidades y mejoras sobre las que actualmente existen.

Para descargar los binarios pueden dirigirse

http://www.jboss.org/drools/downloads.html

Donde al final de la pagina se encuentran los binarios de esta versión.

Saludos!

Advertisements

5 thoughts on “Drools 5.0 Candidate Release 1”

  1. Hola, recien comienzo a investigar sobre el tema. Me han encargado verificar si es posible la integración de jboss con rational rose. La idea es desarrollar el BRMS en jboss y poder importar el resultante a Rational. O si existe alguna forma desde Rational (estoy obligado a utilizar esta herramienta) de importar los diseños de jboss. Muchas gracias

    Like

  2. Gracias por tu comentario.
    Es bastante amplio el tema, y las integraciones por lo general son posibles. El tema es que actualmente no existe ninguna.
    Si puedes comentarme, exactamente que necesitarias hacer en Rational que quieres que se vea luego reflejado en Drools?
    A que llamas desarrollar el BRMS? Drools ya es un BRMS por si mismo.
    Saludos

    Like

  3. Hola Salaboy, estoy desarrollando un proyecto donde necesito usar el motor de inferencia difuso de drool, he visto de ejemplo del juego de poker. Tomo tres valores de entrada (double) y me tiene que devolver una salida (double). Ejemplo en Fussy :
    [….]
    public double[] crispInference(double[] _input) {
    MembershipFunction medioambiente = new FuzzySingleton(_input[0]);
    MembershipFunction recursosnaturales = new FuzzySingleton(_input[1]);
    MembershipFunction pffuncionamiento = new FuzzySingleton(_input[2]);
    MembershipFunction efecto;
    MembershipFunction[] _call;
    _call = RL_ruleEfecto(medioambiente,recursosnaturales,pffuncionamiento); efecto=_call[0];
    double _output[] = new double[1];
    if(efecto instanceof FuzzySingleton)
    _output[0] = ((FuzzySingleton) efecto).getValue();
    else _output[0] = ((OutputMembershipFunction) efecto).defuzzify();
    return _output;
    }

    ****
    private MembershipFunction[] RL_ruleEfecto(MembershipFunction med, MembershipFunction recs, MembershipFunction pf) {
    double _rl;
    double _input[] = new double[3];
    if(med instanceof FuzzySingleton)
    _input[0] = ((FuzzySingleton) med).getValue();
    if(recs instanceof FuzzySingleton)
    _input[1] = ((FuzzySingleton) recs).getValue();
    if(pf instanceof FuzzySingleton)
    _input[2] = ((FuzzySingleton) pf).getValue();
    OP_opAnd _op = new OP_opAnd();
    OutputMembershipFunction efec = new OutputMembershipFunction();
    efec.set(2,_op,_input);
    TP_tModificacion _t_med = new TP_tModificacion();
    TP_tModificacion _t_recs = new TP_tModificacion();
    TP_tModificacion _t_pf = new TP_tModificacion();
    TP_tEfecto _t_efec = new TP_tEfecto();
    int _i_efec=0;
    _rl = _op.and(_op.and(_t_med.poco.isEqual(med),_t_recs.poco.isEqual(recs)),_t_pf.poco.isEqual(pf));
    efec.set(_i_efec,_rl, _t_efec.despreciable); _i_efec++;
    _rl = _op.or(_op.or(_t_med.mucho.isEqual(med),_t_recs.mucho.isEqual(recs)),_t_pf.mucho.isEqual(pf));
    efec.set(_i_efec,_rl, _t_efec.significativo); _i_efec++;
    MembershipFunction[] _output = new MembershipFunction[1];
    _output[0] = efec;
    return _output;
    }
    ***
    […..]
    El tema es que no se como pasarlo a Drool. Me enviarian algun ejemplo. Gracias

    Like

  4. Hola como estas?
    Mira actualmente se esta desarrollando todo un modulo de drools para manejar logica difusa, pero todavia no hay mucho usable. Yo creo que para la version 6 ya estara el modulo listo.
    Ahora mismo no tengo el tiempo suficiente para transformar tu ejemplo a reglas, pero si miras los ejemplos que he posteado aqui puedes copiarlos y empezarlos a usar. Cualquier duda puntal que tengas, no dudes en consultar.
    Saludos!

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s