Java rulez !!
No, no voy a hablar de las bondades de java como lenguaje de programación, algo que además ya sabrás si estás leyendo esto (tampoco voy a soltar nada del estilo .net sucks!). Este post está motivado por la reciente aparición en The ServerSide de un artículo denominado Jess and the javax.rules api en el que se introduce, como su propio nombre indica, el api javax.rules, definido en el JSR 94 y el motor de reglas para java JESS.
El articulo, algo breve, comienza con una breve introducción sobre la programación basada en reglas, sobre el motor open source (que no libre) Jess y sobre el Java Rule Engine Api (JSR 94). Este api nos permitirá escribir aplicaciones que sean independientes del motor de reglas que utilicemos, algo parecido a lo que hace JDBC, que permite escribir aplicaciones que no dependan de la base de datos utilizada. Eso si, como se explica en el artículo, si decidimos cambiar de motor de reglas posiblemente tengamos que modificar las reglas utilizadas, las cuales son independientes a su vez de nuestra aplicación. El texo también se acompaña de unos ejemplos para trabajar con este api.
Al leer el artículo me vino a la cabeza de inmediato el post que Aitor puso en su anterior blog. Si alguien todavía no tiene claro en qué consiste un motor de reglas es el momento adecuado para echar un vistazo a la pequeña presentación que Aitor incluyó en su post. Comentar que me resultó llamativo la diferente terminología que se utiliza para referirse a este campo. Mientras en el entorno empresarial se refieren a reglas de negocio lo cierto es que estamos ante una de las formas mas potentes a la vez que sencillas de representación del conocimiento en inteligencia artificial. De hecho los sistemas expertos basados en reglas constituyeron uno de los primeros éxitos (también comerciales) de la I.A. Si a este sencillo sistema de representación le añadimos un sencillo método de inferencia como el encadenamiento de reglas (hacia adelante o hacia atrás) y un sencillo método para tratar la incertidumbre como los factores de certeza o la lógica difusa, obtenemos una poderosa herramienta para construir sistemas expertos con una pericia igual o superior a la de los expertos humanos que queremos imitar (médicos, ingenieros, economístas, etc).
Personalmente mi experiencia en el campo de las reglas se limita a pequeñas prácticas universitarias realizadas con software específico como Nexpert y GoldWorks o con lenguajes de programación como Lisp y Prolog (donde las reglas son algo intrínseco al lenguaje) pero con Java nunca he hecho nada y ahora me ha entrado el gusanillo ...
Para empezar en el blog Manageability aparece un listado de motores de reglas escritos en java donde aparecen entre otros Drools, OfBiz Rule Engine, Mandarax, etc. Un detalle importante es que casi todos los motores de reglas utilizan el lenguaje RuleML (Rule Mark-up Language) basado en XML para definir las reglas, excepto Drools, "que no lo estima prioritario". Esto parece un poco contradictario, ya que la especificación JSR-94 asume la existencia de un esfuerzo paralelo para la especificación de un lenguaje abierto de reglas basado en XML y se refiere explícitamente al proyecto RuleML y Drools en su documentación anuncian que pretenden cumplir la JSR 94 en un futuro cercano.
En fin, ya tenemos lectura y entretenimiento para los próximos días...
(2003-10-14 22:13:41.0) Permalink Comentarios [2]


Tengo una gran duda. Se que existe JESS y FUZZYJESS. Mi duda es si con JESS puedo tratar lo referente a factor de certeza, o para esto necesito FUZZYJESS....por favor responder a mi correo
Enviado por Acosta Pablo Jose en noviembre 14, 2009 a las 01:12 AM CET #
Tengo una gran duda. Se que existe JESS y FUZZYJESS. Mi duda es si con JESS puedo tratar lo referente a factor de certeza, o para esto necesito FUZZYJESS....por favor responder a mi correo
Enviado por Acosta Pablo Jose en noviembre 14, 2009 a las 01:16 AM CET #