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

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();
Copy to Clipboard Toggle word wrap
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.
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();

KnowledgeAgentConfiguration kaconf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
kaconf.setProperty( "drools.agent.scanDirectories", "false" ); // we don't scan directories, only files
       
KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( "test agent", kaconf );
// resource to the change-set xml for the resources to add
kagent.applyChangeSet( ResourceFactory.newUrlResource( url ) );
Copy to Clipboard Toggle word wrap
Este es un ejemplo de un change-set.xml.
<change-set xmlns='http://drools.org/drools-5.0/change-set'";
    xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
    xs:schemaLocation='http://drools.org/drools-5.0/change-set drools-change-set-5.0.xsd' >
    <add>
        <resource source='http://localhost:9000/TEST.pkg' type='PKG' />
    </add> 
</change-set>
Copy to Clipboard Toggle word wrap
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();
Copy to Clipboard Toggle word wrap
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

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

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/
Copy to Clipboard Toggle word wrap
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

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

  1. Detenga el servidor de aplicaciones.
  2. Abra el archivo server.xml. Este archivo se encuentra en el directorio jbossweb.sar.
  3. 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" />
    Copy to Clipboard Toggle word wrap
  4. Inicie el servidor de aplicaciones

8.4. URLs

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.
Volver arriba
Red Hat logoGithubredditYoutubeTwitter

Aprender

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar. Explore nuestras recientes actualizaciones.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

Theme

© 2025 Red Hat