Capítulo 8. Integración de reglas con sus aplicaciones
Hasta este momento el manual ha abordado la administración de reglas. Ahora aprenderemos sobre su uso en su aplicación. Esta sección aborda el uso del componente de implementación del agente de conocimiento que automatiza la mayor parte de este proceso por usted.
8.1. El agente de conocimiento Copiar enlaceEnlace copiado en el portapapeles!
Copiar enlaceEnlace copiado en el portapapeles!
Importante
El archivo
README_DEPENDENCIES.txt
que se incluye en jboss-brms-engine.zip
contiene detalles específicos para las dependencias de cada componente.
El agente de conocimiento es un componente que está incluído en la API de JBoss Rules 5.0. No se necesitan componentes adicional para usar el agente de conocimiento. Si esta utilizando la plataforma JBoss Enterprise BRMS, la aplicación sólo necesita incluír las dependencias
drools-core
en su ruta de clase, es decir, sólo las JARs drools
y mvel
. No hay otras dependencias específicas de las reglas.
También hay una tarea ant drools-ant de manera que pueda construir reglas como parte de un script ant y generar archivos .pkg. El escenario más común para esto en cuando las reglas se modifican en un IDE tal como JBoss Developer Studio sin usar la interfaz de usuario de BRMS.
Una vez que haya construído sus reglas en un paquete en la plataforma BRMS (o desde la tarea ant), está listo para utilizar el agente en su aplicación destino.
El siguiente ejemplo construye un agente que construirá una nueva KnowledgeBase desde los archivos especificados en la cadena de la ruta. Sondeará esos archivos cada 60 segundos, el cual es el valor predeterminado, para ver si se han actualizado. Si se encuentran nuevos archivos entonces construirá una nueva KnowledgeBase. Si el grupo de cambios especifica un recurso que sea un directorio entonces su contenido se escaneará en busca de cambios.
KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( "MyAgent" ); kagent.applyChangeSet( ResourceFactory.newUrlResource( url ) ); KnowledgeBase kbase = kagent.getKnowledgeBase();
KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( "MyAgent" );
kagent.applyChangeSet( ResourceFactory.newUrlResource( url ) );
KnowledgeBase kbase = kagent.getKnowledgeBase();
El KnowledgeAgent puede aceptar una configuración que permite cambiar algunos valores predeterminados. Una propiedad de ejemplo es "drools.agent.scanDirectories", por defecto se escanean los directorios especificados en busca de nuevas adiciones pero es posible inhabilitar esto.
Este es un ejemplo de un
change-set.xml
.
El escaneo de recursos está habilitado por defecto. Es un servicio y se debe iniciar y los mismo aplica para la notificación. Esto se puede lograr por medio de ResourceFactory.
ResourceFactory.getResourceChangeNotifierService().start(); ResourceFactory.getResourceChangeScannerService().start();
ResourceFactory.getResourceChangeNotifierService().start();
ResourceFactory.getResourceChangeScannerService().start();
Después se muestra la pantalla de implementación de la interfaz del usuario BRMS, la cual proporciona las URLs y las descargas de los paquetes.
Figura 8.1. Implementación de tomas de pantalla
Puede ver la Package URI. Esta es la URL que necesita incluir en el archivo
change-set.xml
para especificar que quiere este paquete. Especifica una versión exacta, en este caso una toma de pantalla. Cada toma de pantalla tiene su propia URL. Si quiere la última versión entonces reemplace NewSnapshot
con LATEST
.
También puede descargar un archivo de paquete (
PKG
) de aquí. Ponga ese archivo en un directorio y use la funcionalidad file
o dir
del KnowledgeAgent. Esto contactará de manera automática el servidor JBoss Enterprise BRMS Platform para las actualizaciones que no sean deseadas en algunos escenarios.
8.2. Implementación manual Copiar enlaceEnlace copiado en el portapapeles!
Copiar enlaceEnlace copiado en el portapapeles!
Esta sección es para usuarios avanzados que estén integrando la implementación en su propio mecanismo. Normalmente debe utilizar el agente de conocimiento.
Para aquellos quienes no desean usar la implementación automática del KnowledgeAgent, la implementación manual es bastante simple. Los paquetes binarios que JBoss Enterprise BRMS Platform produce son objetos de paquetes serializados. Puede des-serializarlos y agregarlos a cualquier KnowledgeBase.
Desde JBoss Enterprise BRMS Platform, los paquetes binarios se proporcionan desde la última versión de un paquete (una vez que el paquete se ha validado de manera exitosa y se ha construído) o desde las tomas de pantalla de la implementación. Las URLs que JBoss Enterprise BRMS Platform expone proporcionan el paquete binario usando HTTP. También puede emitir un comando "HEAD" para ver la última vez que se actualizó un paquete.
8.3. WebDAV Copiar enlaceEnlace copiado en el portapapeles!
Copiar enlaceEnlace copiado en el portapapeles!
El repositorio de segundo palno también se puede acceder por medio de
WebDav
. WebDAV es una interfaz de programación de aplicaciones del sistema de archivos basado en HTTP. La mayoría de los sistemas operativos modernos incluyendo Microsoft Windows, Apple MacOS X y Linux proporcionan soporte integrado para acceder WebDav. Consulte la documentación de su sistema operativo para ver las instrucciones de configuración. También hay muchos clientes WebDav de terceros disponibles para la mayoría de las plataformas.
La URL para acceder su repositorio usando WebDav es casi la misma que la de la interfaz web. Simplemente reemplace
Guvnor.html
al final con /webdav/
así como lo muestra este ejemplo:
http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/webdav/
http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/webdav/
Se requiere autenticación como siempre. WebDav proporciona un directorio de paquetes y tomas de pantalla. El directorio
Snapshots
es de sólo lectura y es esencialmente una vista de las tomas de pantalla creadas de los paquetes de conocimiento. El directorio de paquetes contiene una lista de paquetes de conocimiento en el repositorio como directorios que a su vez contienen los activos individuales como archivos.
8.3.1. WebDav y caracteres especiales Copiar enlaceEnlace copiado en el portapapeles!
Copiar enlaceEnlace copiado en el portapapeles!
BRMS soporta caracteres UTF-8 como parte de los nombres de las reglas, sin embargo, cuando las reglas se copian por medio de WebDav los caracteres multibyte se decodifican como ISO-8859-1.
Red Hat no recomienda el usar caracteres especiales en nombres de reglas; sin embargo, si se utilizan caracteres especiales entonces el Web Connector se debe cambiar para que soporte Unicode.
Para agregar soporte para Unicode complete los siguientes pasos:
Procedimiento 8.1. Agregue soporte Unicode
- Detenga el servidor de aplicaciones.
- Abra el archivo
server.xml
. Este archivo se encuentra en el directoriojbossweb.sar
. - Agregue
URIEncoding="UTF-8"
al conector web. Por ejemplo, para el código HTTP el código debe ser el siguiente:<Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
<Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Inicie el servidor de aplicaciones
8.4. URLs Copiar enlaceEnlace copiado en el portapapeles!
Copiar enlaceEnlace copiado en el portapapeles!
La URL de implementación del paquete mencionada en la sección sobre el agente de conocimiento también tiene otras funcionalidades.
Para obtener el DRL generado para ese paquete en lugar del paquete binario agregue
.drl
al final de una URL, por ejemplo, /package/testPDSGetPackage/LATEST.drl Al agregar /assetName.drl
se podrá ver el DRL generado para ese objeto incluso si no es un archivo DRL tal como /package/testPDSGetPackage/LATEST/SomeFile.drl
.