laboratorio 2 de sistemas experto
DESCRIPTION
sistemas experto reglas de negocioTRANSCRIPT
-
Sistemas Expertos uniminuto
Laboratorio 2 de sistemas experto.
Elaborado por: Ing. John Jaiver Muoz
Universidad uniminuto
Santiago de Cali, valle del cauca.
2014
-
Introduccin.
Caractersticas de las aplicaciones web
El usuario puede acceder fcilmente a estas aplicaciones empleando un navegador web
(cliente) o similar.
Si es por internet, el usuario puede entrar desde cualquier lugar del mundo donde tenga
un acceso a internet.
Pueden existir miles de usuarios pero una nica aplicacin instalada en un servidor, por lo
tanto se puede actualizar y mantener una nica aplicacin y todos sus usuarios vern los
resultados inmediatamente.
Emplean tecnologas como Java, JavaFX, JavaScript, DHTML, Flash, Ajax... que dan gran
potencia a la interfaz de usuario.
Emplean tecnologas que permiten una gran portabilidad entre diferentes plataformas.
Por ejemplo, una aplicacin web flash podra ejecutarse en un dispositivo mvil, en una
computadora con Windows, Linux u otro sistema, en una consola de videojuegos, etc.
Java servlets. Java Servlets son programas en java que son pre compilados por el programador, entonces puestos en el servidor de pginas (web server) que los carga, compila y ejecuta al momento que un usuario remoto lo solicita, generalmente a travs de una pagina html. Es de tomar muy en cuenta que cuando el servidor de paginas carga y ejecuta un servlet, lo va mantener activo en memoria en su propio proceso por toda la vida del servidor de pginas (es decir mientras no se recete el servidor). Procedimiento
Para el desarrollo de la implementacin del laboratorio se necesitan los siguientes:
Libreras Drools - 4.0.7
Aplicacin Drools Brms - 4.0.7 GA
JBoss 4.2.2 GA
Eclipse 3.6 Estructuras de Datos que contiene el plugin de JBoss IDE instalado.
Prerrequisitos
Para la realizacin de este tutorial es necesario que se encuentre familiarizado con el desarrollo de
aplicaciones Java en el ambiente de desarrollo Eclipse. Adems se espera un conocimiento mnimo
sobre WebServices y desarrollo de aplicaciones Web en jsf 2.0.
-
Objetivos
Identificar reglas de negocio.
Proponer e implementar estrategias para integrar las aplicaciones existentes con las reglas
de negocio.
Utilizar Drools JBRMS como administrador de reglas de negocio e incorporarlo a
aplicaciones existentes con el fin de desacoplar las reglas de negocio de las aplicaciones.
Instalacin de JBoss AS. JBoss es un servidor de aplicaciones J2EE de cdigo abierto implementado en Java puro. Al estar basado en Java, JBoss puede ser utilizado en cualquier sistema operativo para el que est disponible Java. Para instalar slo es necesario descomprimir los archivos en una carpeta de su sistema preferiblemente en una ruta que no tenga espacios entre los nombres. http://www.jboss.org/jbossas/downloads Para nuestro caso se utilizara la versin de jboss 4.2.2
Para realizar la instalacin del servidor jboss se realizan los siguientes pasos.
1. Descargar instalador de la pgina principal de jboss.
2. La carpeta descargada se encuentra comprimida en un archivo de extensin .rar, para lo
cual es necesario descomprimir en ubicacin que se desea instalar el servidor, por
recomendacin se debe instalar en disco c.
3. Se debe configurar la variable de entorno.
* En la caja Nombre de variable: JBOSS_HOME.
* En la caja Valor de variable: la ubicacin donde hayas instalado el servidor.
4. Reiniciamos pc.
Ejecucin.
La ejecucin de JBoss es relativamente sencilla, dentro del directorio bin de la instalacin de JBoss
se encuentran los archivos de arranque en forma de "scripts" para Shell. El archivo de ejecucin
run.sh es utilizado para iniciar JBoss en ambientes *nix con los parmetros encontrados en el
directorio server/default/conf, de igual manera, el archivo run.bat lo hace para ambientes
Windows.
-
Debe observar algo similar al siguiente desplegado; los detalles de estos parmetros son aquellos
definidos en la configuracin de JBoss e incluyen: bases de datos para trabajar con JBoss,
ubicacin de registros, parmetros JNDI, EJB's disponibles y cargados, entre otra informacin.
Esta pantalla es donde se ejecuta JBoss que permanecer congelada por el trmino en que este
activo JBoss, a esta pantalla se enviarn entre otras cosas: los errores de ejecucin y resultados de
agregar EJB's al directorio deploy de Jboss.
Para finalizar JBoss basta ejecutar Ctrl-C bajo la pantalla en cuestin y Jboss ser terminado, en el
proceso desplegando ciertos mensajes de terminacin.
Como consola de administracin se puede acceder en el equipo a la siguiente direccin ip local,
mostrando la consola web. http://localhost:8080/.
-
Para colocar el servidor en eclipse se hace lo siguiente:
Para ello abra la vista Servers en eclipse y al hacer clic derecho sobre el panel de trabajo seleccione
la opcin new Server.
Configurando:
Instalacin de las libreras de Drools en el JBOSS AS
El archivo se descarga de la siguiente ruta:
http://download.jboss.org/drools/release/4.0.7.19894.GA/
-
Debido a que se va a utilizar el Droold BRMS para la administracin de las reglas se deben copiar dentro del servidor de aplicacin JBOSS las libreras necesarias. Para esto se siguen los siguientes pasos: Descargue el archivo .zip con las libreras de Drools que se indic la pgina de instaladores
Descomprima este archivo Copie los siguientes jars:
o drools-core-4.0.7.jar (Se encuentra en la carpeta donde descomprimi el archivo). o mvel-1.3.1-java1.4.jar (Se encuentra en la carpeta /lib donde descomprimi el
.zip). o Pegue los jars en la carpeta JBOSS_HOME\server\default\lib.
Despliegue de Drools BRMS en el servidor de aplicaciones
Para realizar el despliegue de la interfaz web de administracin de reglas de drools realice los siguientes pasos:
Descargue el archivo zip de Drools BRMS indicado en la pgina de descargas Descomprima el archivo (Debi aparecer un archivo denominado drools-jbrms.war) Copie este archivo y pguelo en la carpeta de deploy en servidor de aplicaciones JBoss
(JBOSS_HOME\server\default\deploy) Inicie JBoss ejecutando el archivo binario JBOSS_HOME\bin\run.bat Si le sale una notificacin de Windows, dele click en Desbloquear. Una vez terminado el despliegue de JBoss, desde su navegador puede ingresar a la
siguiente direccin donde se encuentra el administrador web de drools: http://localhost:8080/drools-jbrms/
http://localhost:8080/drools-jbrms/
-
Creacin de proyecto web.
Creacin de proyecto web para la utilizacin de reglas drools.
Nombre de proyecto: MedidorTemperatura.
-
Es creado el proyecto web.
-
Se crea la pgina de inicio del proyecto.
Con nombre: index.html
-
Se crea la carpeta para colocar imgenes. Nombre:IMG
Se copia y se pegan las imgenes en esta carpeta.
En el formulario index.html se coloca el siguiente cdigo:
-
Gestin de Variable Temperatura
Opciones de Ingreso:
Valor Temperatura:
-
Se crea el servlet. Nombre: ServletGestionTemperatura Package: edu.uniminuto.se.servlet
-
En el servlet queda:
package edu.uniminuto.se.servlet;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import uniminuto.se.variable.Temperatura;
import edu.uniminuto.se.prototipo.reglas.ServicioAnalisis;
/**
* Servlet implementation class ServletGestionTemperatura
*/
public class ServletGestionTemperatura extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ServletGestionTemperatura() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request,
HttpServletResponse response)
*/
-
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request,
HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("INGRESO::::");
String valortemp = request.getParameter("valortem");
System.out.print("### El valortemp "+valortemp);
String localizacion = "Cali";
String codigo = "002";
float valor = Float.parseFloat(valortemp);
Temperatura p = new Temperatura(valor, localizacion,codigo);
try {
p = ServicioAnalisis.ejecutarAnalisis(p);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("LLEGO:"+p.getDescripcion());
String respuesta = p.getDescripcion();
request.setAttribute("valortem", respuesta);
gotoPage("Respuesta.jsp", request, response);
}
private void gotoPage(String address, HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
RequestDispatcher dispatcher =
request.getRequestDispatcher(address);
dispatcher.forward(request, response);
}
}
Se crea la clase donde se toma las mediciones.
Package: uniminuto.se.variable
Clase: Temperatura
-
La clase debe quedar de la siguiente forma.
package uniminuto.se.variable;
public class Temperatura {
private float valortemperatura;
private String localizacion;
private String codigo;
private String descripcion;
public Temperatura(float valortemperatura, String localizacion,
String codigo){
this.valortemperatura = valortemperatura;
this.localizacion = localizacion;
this.codigo = codigo;
}
public float getValortemperatura() {
return valortemperatura;
}
public void setValortemperatura(float valortemperatura) {
this.valortemperatura = valortemperatura;
}
public String getLocalizacion() {
return localizacion;
}
public void setLocalizacion(String localizacion) {
this.localizacion = localizacion;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
-
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
}
Tambin se crea la clase que hace la gestin de reglas con la aplicacin guvnor de drools, es donde
est la regla determinada.
Clase:ServicioAnalisis
paquete: edu.uniminuto.se.prototipo.reglas
La clase queda de la siguiente forma:
package edu.uniminuto.se.prototipo.reglas;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
import org.drools.RuleBase;
import org.drools.WorkingMemory;
import org.drools.agent.RuleAgent;
import org.jboss.system.server.ServerConfig;
import org.jboss.system.server.ServerConfigLocator;
-
import uniminuto.se.variable.Temperatura;
/**
* Clase que representa el anlisis de la variable
*/
public class ServicioAnalisis
{
// -----------------------------------------------------------------
// Mtodos
// -----------------------------------------------------------------
public static Temperatura ejecutarAnalisis( Temperatura p ) throws
Exception
{
ServerConfig config = ServerConfigLocator.locate( );
File dataDir = config.getServerDataDir( );
File archivo = new File( dataDir, "./analisis/Reglas.properties"
);
Properties prop = new Properties( );
System.out.println( "Cargando el archivo###:" +
archivo.getAbsolutePath( ) );
FileInputStream in = new FileInputStream( archivo );
prop.load( in );
in.close( );
RuleAgent agent = RuleAgent.newRuleAgent( prop );
RuleBase ruleBase = agent.getRuleBase( );
WorkingMemory workingMemory = ruleBase.newStatefulSession( );
workingMemory.insert( p );
workingMemory.fireAllRules( );
return p;
}
}
Se crea un jsp donde se imprimir la respuesta dada por guvnor drools.
Nombre: Respuesta
-
En el jsp se coloca:
-
Resultado del Expert
Descripcin de Temperatura
Se revisa el archivo web.xml que quede de la siguiente forma.
MedidorTemperatura
index.html
ServletGestionTemperatura
ServletGestionTemperatura
edu.uniminuto.se.servlet.ServletGestionTemperatura
ServletGestionTemperatura
/ServletGestionTemperatura
Tambin en el servidor jboss se debe colocar el archivo properties donde se coloca la ruta de
guvnor drool.
Segn la ruta dada en la clase ServicioAnalisis, la ruta es:
-
"./analisis/Reglas.properties"
Si la carpeta anlisis no se encuentra se crea en data.
La ruta donde se crea es:
jboss-4.2.2.GA\server\default\data\analisis
Nombre: Reglas.properties
El cdigo que se coloca en el properties:
## ## RuleAgent configuration file example ## ##file=/foo/bar/boo.pkg /foo/bar/boo2.pkg ## newInstance=false url=http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/VariableTemperatura/LATEST #file=E:/Java/Drools/Biblioteca.pkg name=MyConfig poll=30
Como resumen y resultados tenemos:
-
Estructura de proyecto en eclipse:
Formulario de ingreso de temperatura:
Despus de enviar el parmetro se obtiene.
Es la descripcin dada por la regla creada en guvnor drools.
-
Instalador de drools y creacin de reglas.
BossDrools BRMS esel componente de Jboss Rules que permite gestionar, almacenar, clasificar, modificar y desplegar en caliente reglas de negocio, que podrn ser invocadas va servicios web desde aplicaciones Java. Proporciona un interfaz Web, que facilita la definicin de reglas a personas que no trabajan con habitualmente con IDES de desarrollo, principalmente Analista de Negocio y Expertos en Reglas. Alguna caracterstica tcnica interesante: utiliza JCR (JackRabbit) para la gestin del repositorio de reglas o que utiliza el estndar JAAS para la autorizacin y autenticacin.
Instalacin de las libreras de Drools en el JBOSS AS Debido a que se va a utilizar el Droold BRMS para la administracin de las reglas se deben copiar dentro del servidor de aplicacin JBOSS las libreras necesarias. Para esto se siguen los siguientes pasos:
Descargue el archivo .zip con las libreras de Drools que se indic la pgina de instaladores
Descomprima este archivo
Copie los siguientes jars: drools-core-4.0.7.jar (Se encuentra en la carpeta donde descomprimi el archivo). mvel-1.3.1-java1.4.jar (Se encuentra en la carpeta /lib donde descomprimi el
.zip). Pegue los jars en la carpeta JBOSS_HOME\server\default\lib.
Despliegue de Drools BRMS en el servidor de aplicaciones.
Para realizar el despliegue de la interfaz web de administracin de reglas de drools realice los siguientes pasos:
Descargue el archivo zip de Drools BRMS http://download.jboss.org/drools/release Descomprima el archivo (Debi aparecer un archivo denominado drools-jbrms.war) Copie este archivo y pguelo en la carpeta de deploy en servidor de aplicaciones JBoss
(JBOSS_HOME\server\default\deploy) Inicie JBoss ejecutando el archivo binario JBOSS_HOME\bin\run.bat Si le sale una notificacin de Windows, dele click en Desbloquear. Una vez terminado el despliegue de JBoss, desde su navegador puede ingresar a la
siguiente direccin donde se encuentra el administrador web de drools: http://localhost:8080/drools-jbrms/,
A continuacin nos aparece la siguiente pantalla de login pulsamos el botn Login con User y
Password vacos.Debera estar en la pgina de inicio del BRMS. Si no te da respuesta de la pagina
siguiente probar con otros navegadores, tal como chrome o explorer.
-
A continuacin pulsamos sobre la opcin del men Packages, la pantalla muestra varias opciones en la parte superior representadas por pequeos iconos, Haga click en el cono de create new package en la ventana que aparece e ingrese un nombre. En la siguiente imagen se puede observar:
Ingresandolos datos necesarios,Nos solicita un nombre de paquete y una descripcin, se da en la opcin CreatePackage. Ya queda creado el paquete en este caso llamado VariableTemperatura.
Recordemos que para definir reglas necesitamos un modelo (Clase Java) sobre la cual verificar condiciones y ejecutar acciones. En nuestro caso se tiene una clase que est en la aplicacin de sensor. El directorio est en uniminuto.se.variable de la aplicacin web. Se debe crear el respectivo .jar de esta clase lo cual realizamos el siguiente procedimiento:
Haga click derecho sobre la clase Temperatura en nuestro caso. Escoja la opcin Export. Escoja la opcin Java / Jar File. En la ubicacin de export.
-
Si se necesita realizar cambios a este archivo es necesario crear de nuevo el .jar Una vez creado el jar de la clase Temperatura vamos a proceder a cargarlo en el BRMS:
Haga cick en el cono de create a new model
-
Ingrese un nombre para el modelo (Temperatura)
Luego de ingresar los datos, dar click en ok.
Ahora vamos a asociar un modelo de datos al paquete creado anteriormente, este modelo debe hacer referencia a un jar, el cual contendr una serie de beans, en nuestro caso un nico bean llamado Temperatura. Importante: el jar no debe contener los fuentes.
En la nueva ventana haga click en examinar y escoja el .jar anteriormente creado, haga click en
Upload.
Observando el tmodel creado queda de la siguiente forma:
En el rbol de la izquierda hacemos click sobre el paquete, y seleccionamos EditPackageConfiguration, nos aparece la siguiente pantalla. En la seccin Header debemos incluir las clases sobre la cuales vamos a definir reglas, as como la definicin de variables globales. En nuestro caso aadimos nuestro nico bean, importante no incluir; al final de la lnea:
Colocar: import uniminuto.se.variable.Temperatura (Esto le indica que debe asociar al paquete la clase Temperatura del jar cargado anteriormente)
-
Hacer click en Save and valdate configuration. Ahora haga click en Build, Validate and Deploy y haga click en BuildPakage (El paso de BuildPackage es necesario de realizar siempre que se hagan cambios sobre las reglas).
Luego se crea una categora, las categoras no son obligatorias, pero es recomendable cuando tenemos gran cantidad de reglas. Para ello vamos al Men Admin Create a new category. Introducimos el nombre (Valortemperatura) y una descripcin, y pulsamos OK. Si no aparece la nueva categora pulsa sobre la opcin Refreshview.
Llegados a este punto ya podemos definir una regla, para ello en el men que se encuentra encima del rbol, pulsamos sobre el icono de Drools si nos ponemos sobre este nos muestra un tooltip con Create New Rule.
-
Introducimos el nombre, seleccionamos el paquete, y el formato de la regla, vamos a seleccionar Regla de Negocio (Bussiness rule usingguided editor).
Aparecer el campo de texto donde se escribir la regla, por ejemplo.
rule "1001" no-loop true when p:Temperatura(valortemperatura
-
Bibliografia
http://cupi2.uniandes.edu.co/site/index.php/tutoriales/drools