Manual del usuario de BRMS
Para desarrolladores de JBoss Rules, escritores de reglas y analistas empresariales.
Edición 5.2.0
Resumen
Capítulo 1. Introducción Copiar enlaceEnlace copiado en el portapapeles!
1.1. Aspectos nuevos en esta edición Copiar enlaceEnlace copiado en el portapapeles!
| Funcionalidad | Cambio |
|---|---|
| Sección 4.3.9, “ tablas de decisión dirigidas (basadas en la web)” | Se agregaron detalles adicionales sobre las tablas de decisiones |
| Sección 4.3.10, “Plantillas de reglas” | Se agregó una sección sobre las plantillas de reglas. |
| Capítulo 5, El modelo de hechos (el modelo de objetos) | Se agregó información adicional sobre el modelo de hechos. |
| Capítulo 6, grupos de trabajo | Se agregó un nuevo capítulo sobre los grupos de trabajo. |
| Sección 8.3.1, “WebDav y caracteres especiales” | Se agregaron instrucciones para utilizar caracteres multibyte en toda la WebDAV. |
1.2. ¿Qué es un BRMS? Copiar enlaceEnlace copiado en el portapapeles!
Importante
1.3. ¿Cuándo se debe utilizar un BRMS? Copiar enlaceEnlace copiado en el portapapeles!
- Se necesita administrar un sistema para implementación y modificación de reglas.
- Múltiples usuarios con diferentes niveles de habilidad necesitan acceder y modificar las reglas.
- No existe una infraestructura para administrar las reglas.
- Hay muchas reglas "empresariales" que se deben administrar de manera opuesta a las reglas técnicas que serán parte de una aplicación.
1.4. ¿Quién utiliza BRMS? Copiar enlaceEnlace copiado en el portapapeles!
- Analistas empresariales
- Expertos en reglas
- Desarrolladores
- Administradores de reglas
1.5. Resumen de las funcionalidades Copiar enlaceEnlace copiado en el portapapeles!
- El soporte para múltiples idiomas en la interfaz de usuario web BRMS actualmente es inglés de Estados Unidos, japonés y chino simplificado.
- Varios tipos de editores de reglas (gráfico y basado en texto)
- Control de versiones (para activos históricos)
- Categorización
- Construcción e implementación
- Almacenar múltiples "activos" de reglas como un solo paquete.
Capítulo 2. Arquitectura Copiar enlaceEnlace copiado en el portapapeles!
Figura 2.1. Diagrama arquitectónico
2.1. Componentes re-utilizables Copiar enlaceEnlace copiado en el portapapeles!
RepositoryService, la cual se implementa en ServiceImplementation. El plano principal ajax GWT le habla a esta interfaz usando el mecanismo de callback asincrónica de GWT. El archivo de configuración Seam es components.xml.
Guvnor.html. Para aquellos familiarizados con GWT, cada una de las funcionalidades se puede utilizar por separado. La clase JBRMSFeature y las clases que la implementan (en teoría pueden ser autónomas) contienen información adicional.
2.2. Versionamiento y almacenamiento Copiar enlaceEnlace copiado en el portapapeles!
.cnd se encuentran en la fuente para las definiciones de tipo de nodos ya que algunos desean verlas. Un paquete es un folder y cada activo es un archivo: un archivo puede ser textual o puede tener un anexo binario.
Capítulo 3. Manual de inicio rápido Copiar enlaceEnlace copiado en el portapapeles!
Figura 3.1. Interfaz de usuario web de JBoss Enterprise BRMS Platform
- Info: Esta es la pantalla inicial con enlaces a los recursos.
- Reglas: Esta es la categoría y la perspectiva del usuario empresarial.
- Paquete: Aquí es donde se configuran y administran los paquetes de conocimiento.
- Implementación: aquí es donde se administran las tomas de pantalla de la implementación.
- Admin: funciones administrativas (categorías, estatus, importación y exportación).
3.1.
Navegadores soportados Copiar enlaceEnlace copiado en el portapapeles!
| Sistema operativo | Navegadores |
|---|---|
| RHEL 5.x y posteriores | FireFox 3.0+ |
| Microsoft Windows | FireFox 3.0+ |
| Microsoft Windows | Internet Explorer 7+ |
| Mac OSX 10.x | FireFox 3.0+ |
| Mac OSX 10.x | Safari 4 y 5 |
3.2. ¿BRMS o Guvnor? Copiar enlaceEnlace copiado en el portapapeles!
3.3. Configuración inicial Copiar enlaceEnlace copiado en el portapapeles!
- Si es un repositorio nuevo vaya a "Admin" y seleccione "Manage Categories"Agregue unas pocas categorías (note que las categorías son sólo con el fin de la clasificación).
- Las reglas necesitan un modelo de hechos (también conocido como un modelo de objetos) con el cual trabajar. Desde la funcionalidad "Package Management" tal como se esperaría se puede crear un nuevo paquete de conocimiento. Los paquetes deben tener nombres significativos sin espacios.
- Para cargar un modelo use un archivo
.jarque contenga el modelo de hechos (API) que estará utilñizando en sus reglas y en su código. Cuando se encuentre en la pantalla "Model Editor" puede cargar un archivo.jar. Para hacer esto seleccione el nombre del paquete de la lista que creó en el paso anterior. - Ahora modifique la configuración del paquete que acaba de crear con el fin de importar los tipos de hechos que ha cargado (estas son las declaraciones de importación). Guarde los cambios.
- En este momento el paquete está configurado y está listo para utilizarse.Note que también puede importar un paquete DRL (Drools Rule Language) ya existente y las reglas se almacenarán en el repositorio como activos individuales.
3.4. Escritura de reglas Copiar enlaceEnlace copiado en el portapapeles!
- Una vez que tenga configurados una categoría y un paquete puede empezar a escribir reglas.
- Hay múltiples formatos de reglas pero BRMS los considera "activos".
- Puede crear una regla haciendo clic en el logo de la cabecera y posteriormente introducir el nombre.
- También tendrá que escoger una categoría. Las categorías proporcionan una manera de ver las reglas separado de los paquetes de conocimiento (de hecho puede hacer que las reglas aparezcan en múltiples paquetes de conocimiento). Puede que le sea útil el considerarlo como una etiqueta.
- Seleccione los formatos "Business Rule (Guided Editor)".
- Esto abrirá un modelador de reglas, el cual es un editor dirigido. Puede agregar y modificar condiciones y acciones con base en el modelo que se esté utilizando en el paquete actual. También estará disponible cualquier plantilla de oraciones DSL configurada para el paquete.
- Cuando haya terminado de modificar las reglas puede guardar los cambios o también puede escoger el validar o "ver fuente" (para la fuente efectiva).
- También puede agregar o borrar categorias del editor de reglas y puede modificar otros atributos tal como la documentación, (si no está seguro de qué hacer entonces escriba un documento con lenguaje normal que describa la regla y guárdelo. Después lo puede utilizar como una plantilla).
3.5. Búsqueda Copiar enlaceEnlace copiado en el portapapeles!
3.6. Implementación Copiar enlaceEnlace copiado en el portapapeles!
- Después de modificar algunas reglas en un paquete puede hacer clic en la funcionalidad "Package", abra el paquete que desee y constrúyalo.
- Si el proceso de construcción tiene éxito podrá descargar un archivo de paquete binario, el cual luego se puede implementar en un sistema en tiempo de ejecución.
- También puede realizar una "toma de pantalla" de un paquete para la implementación. Esto congela el paquete en ese justo momento de manera que ninguno de los cambios actuales no lo afectan. Esto también hace disponible el paquete en una URL de la siguiente forma:
http://<your server>/jboss-brms/org.drools.guvnor.Guvnor/packages/<packageName>/<snapshotName>
Capítulo 4. Conceptos de BRMS Copiar enlaceEnlace copiado en el portapapeles!
4.1. Las reglas son activos Copiar enlaceEnlace copiado en el portapapeles!
Nota
4.2. Categorización Copiar enlaceEnlace copiado en el portapapeles!
Figura 4.1. Categorias
Figura 4.2. Los activos pueden tener múltiples categorías
Figura 4.3. Creación de categorías
Nota
4.3. Autoría de reglas Copiar enlaceEnlace copiado en el portapapeles!
4.3.1. El editor de activos Copiar enlaceEnlace copiado en el portapapeles!
Figura 4.4. Vista del editor de activos
4.3.2. Reglas empresariales con el editor dirigido Copiar enlaceEnlace copiado en el portapapeles!
Nota
Ejemplo 4.1. El editor dirigido
4.3.3. Anatomía de una regla Copiar enlaceEnlace copiado en el portapapeles!
- WhenLa parte When de la regla es la condición con la que se debe cumplir. Por ejemplo en Ejemplo 4.1, “El editor dirigido”, la sección del when de la reglas es: When the applicant is under 21 years old.
- ThenLa parte Then de la regla es la acción que se va a realizar cuando se ha cumplido con la parte condicional de la regla. Por ejemplo, en Ejemplo 4.1, “El editor dirigido”, la parte del then de la regla es: Then decline the loan because the applicant is under age.
Ejemplo 4.2. Modificación de reglas
Procedimiento 4.1. Agregar un campo a un tipo de hecho
Seleccionar el modelo
Seleccione Knowledge Bases del panel de navegación en el lado izquierdo de la pantalla. Expanda el paquete que contiene el modelo y seleccione model.Abra el modelo de la lista haciendo clic en open.Agregue el campo
Despliegue el tipo de hecho haciendo clic en el signo más justo al lado y seleccione Add Field.Introduzca los detalles del campo
Agregue los detalles en la ventana que aparece. En este caso introduzca fiador en el campo Field name y seleccione True or False del menú desplegable Type.Guarde los cambios realizados al modelo seleccionando File y Save changes.
Procedimiento 4.2. Agregar restricciones a las reglas
Borrar la restricción actual
Al modificar una regla existente puede ser necesafrio el borrar la restricción actual. Esto asegura que se seleccione el operador lógico correcto (And u Or) al tratar con múltiples restricciones.En este caso haga clic en el símbolo de menos al lado de la condición de la edad.Modificación de restricciones
Abra Modify Constraints Dialogue haciendo clic en el texto There is an Applicant.Seleccione la restricción del menú desplegable Add a restriction on a field. En este caso seleccione Age.Del menú deplegable Multiple field constraints seleccione All of (and).Especifique la primera restricción
Haga clic en el texto all of the following para abrir la ventana Add fields to this constraint y agregue la restricción. En este caso seleccione Age.Del menú desplegable seleccione less than y modifique el valor literal haciendo clic en el ícono del lápiz, seleccione literal y luego haga clic en Value para introducir el valor apropiado, en este caso 21.Especifique la segunda restricción
Haga clic en el texto all of the following para abrir la ventana Add fields to this constraint y agregue la restricción. Esta vez seleccione guarantor.Del nuevo menú desplegable seleccione equal to y modifique el valor literal haciendo clic sobre el ícono del lápiz, seleccione literal y luego haga clic en true para modificar el valor y seleccione falso.
4.3.4. Relevancia Copiar enlaceEnlace copiado en el portapapeles!
4.3.5. Listas desplegables dirigidas por el usuario Copiar enlaceEnlace copiado en el portapapeles!
4.3.6. Incremento con declaraciones DSL Copiar enlaceEnlace copiado en el portapapeles!
Importante
[when] y [then] de la configuración DSL.
Figura 4.5. DSL en el editor dirigido
4.3.7. Reglas DSL Copiar enlaceEnlace copiado en el portapapeles!
Figura 4.6. Regla DSL
4.3.8. Hoja de cálculo de las tablas de decisión Copiar enlaceEnlace copiado en el portapapeles!
.xls), por medio del cual cada fila representa una regla. Los detalles de la hoja de cálculo no los abordamos en este capítulo.
Figura 4.7. Tabla de decisiones en la hoja de cálculo
.xls como se puede ver en Figura 4.7, “Tabla de decisiones en la hoja de cálculo”. También puede descargar la versión actual de la hoja de cálculo de la misma ventana. Con el fin de crear una nueva tabla de decisiones debe iniciar el "Rule Wizard" - el asistente de reglas-, el cual contiene una opción para este procedimiento y luego puede cargar el archivo .xls.
4.3.9.
tablas de decisión dirigidas (basadas en la web) Copiar enlaceEnlace copiado en el portapapeles!
- Se puede hacer doble clic en celdas individuales y aparece un editor correspondiente la tipo de datos subyacente. Se pueden seleccionar grupos de celdas en la misma columna haciendo clic en la primera y arrastrando el cursos o haciendo clic en la primera y haciendo clic sobre la extención del rango requerido presionando la tecla shift.
- Opcionalmente se pueden utilizar las teclas para manejar el cursor y navegar en la tabla. El presionar la tecla enter hará que aparezca el editor correspondiente. El rango se puede seleccionar presionando la tecla shift y extendiendo el rango con las teclas que mueven el cursor.
Figura 4.8. Tabla de decisiones
4.3.9.1. Componentes principales Copiar enlaceEnlace copiado en el portapapeles!
- La sección superior permite definir columnas de la tabla representando atributos de reglas, meta-datos, condiciones y acciones.
- La sección inferior contiene la tabla en sí en donde filas individuales definen reglas separadas.
Figura 4.9. Componentes principales
4.3.9.2. Configuración de columnas Copiar enlaceEnlace copiado en el portapapeles!
- LiteralEl valor en la celda se comparará con el campo utilizando el operador.
- FormulaLa expresioó en la celda se evaluará y luego se comparará con el campo.
- PredicadoNo se necesita ningún campo, la expresión se evaluará como verdadera o falsa.
Figura 4.10. Configuración de columnas
4.3.9.2.1. Columnas de funcionalidades Copiar enlaceEnlace copiado en el portapapeles!
4.3.9.2.2. Columnas de atributos Copiar enlaceEnlace copiado en el portapapeles!
when $c : Cheese( name == "Cheddar" ) then ... end
when
$c : Cheese( name == "Cheddar" )
then
...
end
when not Cheese( name == "Cheddar" ) then ... end
when
not Cheese( name == "Cheddar" )
then
...
end
4.3.9.2.3. Columnas de meta-datos Copiar enlaceEnlace copiado en el portapapeles!
4.3.9.2.4. Columnas de condiciones Copiar enlaceEnlace copiado en el portapapeles!
4.3.9.2.5. Columnas de acción Copiar enlaceEnlace copiado en el portapapeles!
4.3.9.3. Definición de reglas Copiar enlaceEnlace copiado en el portapapeles!
Figura 4.11. Definición de reglas
4.3.9.4. Fusión de celdas Copiar enlaceEnlace copiado en el portapapeles!
Figura 4.12. Fusión de celdas
4.3.9.5. Agrupamiento de celdas Copiar enlaceEnlace copiado en el portapapeles!
Figura 4.13. Agrupamiento de celdas
4.3.9.6. Operaciones Otherwise Copiar enlaceEnlace copiado en el portapapeles!
== o desigualdad != pueden tomar ventaja del valor especial de la celda de la tabla de decisiones otherwise. Este valor especial permite definir una regla que coincida con todos los valores no definidos explícitamente en todas las otras reglas definidas en la tabla. Esto se ilustra mejor con un ejemplo:
4.3.10. Plantillas de reglas Copiar enlaceEnlace copiado en el portapapeles!
Procedimiento 4.3. Creación de plantillas de reglas
Creación del activo de plantilllas de reglas
Del menú Knowledge Bases seleccione Create New y luego seleccione New Rule Template.Definición del activo
Introduzca un nombre, una categoría y una descripción para la plantilla.Definición de la plantilla
Use el editor dirigido para construir la regla. Template keys son reservas de espacio dentro de la restricción del campo y las secciones de acción. Se pueden seguir utilizando los valores literales, las fórmulas y expresiones tal como en el editor dirigido estándar.
Ejemplo 4.3. Plantilla de ejemplo
4.3.10.1. Definición de datos de la plantilla Copiar enlaceEnlace copiado en el portapapeles!
Nota
Figura 4.14. Plantilla de la cuadrícula de datos
4.3.10.1.1. Fusión de celdas Copiar enlaceEnlace copiado en el portapapeles!
Figura 4.15. Fusión de celdas
4.3.10.1.2. Agrupamiento de celdas Copiar enlaceEnlace copiado en el portapapeles!
Figura 4.16. Agrupamiento de celdas
4.3.10.2. DRL generado Copiar enlaceEnlace copiado en el portapapeles!
Figura 4.17. DRL generado
4.3.11. Flujo de reglas Copiar enlaceEnlace copiado en el portapapeles!
4.3.12. Reglas técnicas (DRL) Copiar enlaceEnlace copiado en el portapapeles!
Figura 4.18. Regla técnica DRL
4.3.13. Funciones Copiar enlaceEnlace copiado en el portapapeles!
Figura 4.19. Función
4.3.14. Enumeraciones de datos (Configuraciones de la lista desplegable) Copiar enlaceEnlace copiado en el portapapeles!
'Board.type' : [ 'Short', 'Long', 'M=Mini', 'Boogie'] 'Person.age' : [ '20', '25', '30', '35' ]
'Board.type' : [ 'Short', 'Long', 'M=Mini', 'Boogie']
'Person.age' : [ '20', '25', '30', '35' ]
java.util.List (de cadenas) que esté en la ruta de clase del BRMS. En lugar de especificar una lista de valores en el BRMS mismo, el códeigo puede retornar la lista de cadenas, (como siempre puede utilizar el signo "=" dentro de las cadenas si quiere utilizar una valore de presentación diferente al valor de la regla). Por ejemplo puede cambiar la línea Person.age así:
'Person.age' : (new com.yourco.DataHelper()).getListOfAges()
'Person.age' : (new com.yourco.DataHelper()).getListOfAges()
DataHelper, la cual tiene un método getListOfAges(), el cual retorna una lista de cadenas (y se encuentra en la ruta de clase). Por supuesto que puede mezclar estas enumeraciones "dinámicas" con listas fijas. Por ejemplo, podría cargarlas desde una base de datos usando JDBC. Las enumeraciones de datos se cargan la primera vez que utilice el editor dirigido en una sesión. Si tiene alguna sesión abierta del editor dirigido será necesario que la cierre y vuelva a abrir la regla para poder ver el cambio. Para verificar que la enumeración se ha cargado, vaya a la pantalla de configuración del paquete. Puede "guardar y validar" el paquete; esto lo chequeará y brindará cualquier comentario sobre los errores.
4.3.15. Conceptos avanzados de enumeración Copiar enlaceEnlace copiado en el portapapeles!
engineType" y "fuelType." Quiere tener opciones para "engineType" de "Petrol" o "Diesel." Obviamente la opción del combustible debe ser dependiente del tipo de máquina (para gasolina tenemos ULP y PULP y para Diesel tenemos BIO y NORMAL). Podemos expresar esta dependencia en una enumeración así:
'Vehicle.engineType' : ['Petrol', 'Diesel'] 'Vehicle.fuelType[engineType=Petrol]' : ['ULP', 'PULP' ] 'Vehicle.fuelType[engineType=Diesel]' : ['BIO', 'NORMAL' ]
'Vehicle.engineType' : ['Petrol', 'Diesel']
'Vehicle.fuelType[engineType=Petrol]' : ['ULP', 'PULP' ]
'Vehicle.fuelType[engineType=Diesel]' : ['BIO', 'NORMAL' ]
engineType se determina la "lista seleccionada" para el fuelType.
Fact.field que vimos anteriormente). El valor es una java.util.List de cadenas.
=(new SampleDataSource2()).loadData()
=(new SampleDataSource2()).loadData()
'Fact.field[dependentField1, dependentField2]' : '(new com.yourco.DataHelper()).getListOfAges("@{dependentField1}", "@{dependentField2}")'
'Fact.field[dependentField1, dependentField2]' : '(new com.yourco.DataHelper()).getListOfAges("@{dependentField1}", "@{dependentField2}")'
depenentField1" y "dependentField2" son nombres de campos en el tipo "Fact". Se utilizan para calcular la lista de valores que se van a ver en una lista desplegable como valores para el "campo".
4.4. Administración del estatus Copiar enlaceEnlace copiado en el portapapeles!
Nota
Figura 4.20. Estatus de los activos
4.5. Administración de paquetes Copiar enlaceEnlace copiado en el portapapeles!
Aviso
Figura 4.21. El explorador de paquetes
- Activos empresariales: este muestra una lista de todos los tipos de "reglas empresariales", incluyendo tablas de decisiones, reglas empresariales, etc.
- Activos técnicos: esta es una lista de cosas que se consideran como técnicas (tal como reglas DRL, enumeraciones de datos y flujos de reglas).
- Funciones: en BRMS también puede tener funciones definidas, (estos es opcional).
- DSL: del inglés Domain Specific Languages - lenguajes específicos de dominios - también se pueden almacenar como activos. Si existen (generalmente solo habrá uno) entonces se utilizarán junto con los GUIs del editor apropiado.
- Modelo: un paquete requiere por lo menos un modelo. Este es para las reglas.
Figura 4.22. Creación de nuevos activos
Figura 4.23. Configuración de paquetes
com.something.Hello. Luego agregaría import com.something.Hello en su configuración de paquete y guardaría el cambio.
Figura 4.24. Construcción de paquetes
4.5.1. Importación de paquetes drl Copiar enlaceEnlace copiado en el portapapeles!
.drl. BRMS tratará de comprender ese drl y creará automáticamente un paquete por usted. Las reglas en este se almacenarán como activos individuales (aunque todavía serán contenido de texto drl). Note que para contruir el paquete necesitará cargar un modelo apropiado (como un .jar) frente al cual validar. Este es un paso separado.
4.6. Administración de versiones Copiar enlaceEnlace copiado en el portapapeles!
Subversion. Sin embargo, los paquetes de activos tienen versiones "a demanda" realizando una toma de pantalla. Esta toma de pantalla es la que se utiliza para la implementación. La siguiente sección aborda la administración de la implementación y las tomas de pantalla con más detalles.
Figura 4.25. Versiones de activos
4.7. Administración de implementación Copiar enlaceEnlace copiado en el portapapeles!
LATEST" (si es "LATEST," entonces será la última versión construída del paquete principal y no una toma de pantalla). Puede utilizarlas en el agente o puede pegarlas en su navegador y las descargará como archivos.
Figura 4.26. Tomas de pantallas de implementaciones
4.8. Navegación del repositorio y ubicación de reglas Copiar enlaceEnlace copiado en el portapapeles!
Figura 4.27. Vista de categoría
Figura 4.28. Vista de paquete
Capítulo 5.
El modelo de hechos (el modelo de objetos) Copiar enlaceEnlace copiado en el portapapeles!
- Cargue un archivo
JARque contenga las clases Java que la aplicación y las reglas utilicen. - Declare un modelo dentro de BRMS que se pueda exportar como una KnowledgeBase y se utilice dentro de su código Java.
5.1. El área global Copiar enlaceEnlace copiado en el portapapeles!
Nota
5.2. Modelo JAR Copiar enlaceEnlace copiado en el portapapeles!
Procedimiento 5.1. Creación de un modelo Jar
Abra el menú New model archive (jar)
Del menú Knowledge Bases seleccione Create New y luego seleccione Upload POJO Model JAR.Creación de un activo modelo Jar
Introduzca el nombre del modelo Jar, la categoría y una descripción. Seleccione en que paquete crear el modelo o especifique que se debe agregar al Global Area. Haga clic en OK cuando todos los detalles se han introducido.Cargue la JAR en el activo
Cargue la JAR que contiene el modelo definido como paquetes y clases Java y en un archivo Java JAR normal.
5.3. Modelo declarativo Copiar enlaceEnlace copiado en el portapapeles!
- Refuerza que el modelo pertenece a la base de conocimiento, note la aplicación.
- El modelo puede tener un ciclo de vida separado de las aplicaciones.
- Los tipos Java se pueden enriquecer con anotaciones especificas de reglas.
- Los archivos JAR se deben mantener sincronizados entre las reglas y las aplicaciones que las utilizan, sin embargo, no es necesario mantener sincronizado un modelo declarativo.
- Una definición autónoma de todo el modelo de hechos que se utiliza dentro de sus reglas.
- Una definición de hechos complementaria para soportar un modelo Java POJO.
Procedimiento 5.2. Creación de un modelo declarativo
Abra el menú New Declarative Model
Del menú Knowledge Bases seleccione Create New y luego seleccione New Declarative Model.Creación de un nuevo modelo declarativo
Introduzca un nombre para el nuevo modelo. Seleccione el paquete en donde crear el modelo o especifique que se debe agregar al Global Area. Haga clic en OK cuando se hayan introducido todos los detalles.Defina el modelo
Haga clic en Add new fact type e introduzca el nombre del hecho en el campo name del menú emergente.Agregar campos de hechos
Cree campos de hechos seleccionando el botón Add field e introduciendo la información en el menú emergente.Agregar anotaciones
Cree anotaciones de hechos seleccionando el botón Add annotation. Los campos Name y Value de las anotaciones son obligatorios pero el campo Key es opcional. Si no se especifica un valor Key entonces se asigna un valor predeterminadovalue.
5.3.1. Consumo de un modelo declarativo de Java Copiar enlaceEnlace copiado en el portapapeles!
Ejemplo 5.1. Manejo de tipos de hechos declarados por medio de la API
Nota
org.drools.examples en el ejemplo anterior).
Capítulo 6.
grupos de trabajo Copiar enlaceEnlace copiado en el portapapeles!
Nota
Procedimiento 6.1. Creación de un nuevo grupo de trabajo
Abra la ventana New WorkingSet
Del menú Knowledge Bases seleccione Create New y luego seleccione New WorkingSet.Creación de un nuevo grupo de trabajo
Introduzca un nombre y una descripción para el grupo de trabajo. Seleccione el paquete en donde crear el modelo o especifique que se debe agregar al Global Area. Haga clic en OK cuando se hayan introducido todos los detalles.Agregar tipos de hechos al grupo de trabajo
Agregue los tipos de hechos al grupo de trabajo moviéndolos de la lista en la izquierda a la lista de la derecha. Los tipos de hechos en la derecha estarán disponibles para el grupo de trabajo.Agregar restricciones a los tipos de hechos en el grupo de trabajo
Seleccione el Fact type del menú desplegable, seleccione el valor Field y agregue la restricción requerida.
6.1. Verificación de restricciones de campos Copiar enlaceEnlace copiado en el portapapeles!
- Validación a demanda.
- Validación en tiempo real.
Nota
Capítulo 7. La perspectiva del usuario empresarial Copiar enlaceEnlace copiado en el portapapeles!
Capítulo 8. Integración de reglas con sus aplicaciones Copiar enlaceEnlace copiado en el portapapeles!
8.1. El agente de conocimiento Copiar enlaceEnlace copiado en el portapapeles!
Importante
README_DEPENDENCIES.txt que se incluye en jboss-brms-engine.zip contiene detalles específicos para las dependencias de cada componente.
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.
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();
change-set.xml.
ResourceFactory.getResourceChangeNotifierService().start(); ResourceFactory.getResourceChangeScannerService().start();
ResourceFactory.getResourceChangeNotifierService().start();
ResourceFactory.getResourceChangeScannerService().start();
Figura 8.1. Implementación de tomas de pantalla
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.
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!
8.3. WebDAV Copiar enlaceEnlace copiado en el portapapeles!
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.
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/
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!
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!
.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.
Capítulo 9. Buzón de entrada y comentarios Copiar enlaceEnlace copiado en el portapapeles!
Importante
9.1. Comentarios Copiar enlaceEnlace copiado en el portapapeles!
Figura 9.1. Comentarios
9.2. Buzón de entrada Copiar enlaceEnlace copiado en el portapapeles!
Figura 9.2. Buzón de entrada
- Cambios entrantes
- Aquí se listan los cambios que un usuario haya realizado en un objeto.
- Abierto recientemente
- Aquí se listan los últimos 100 objetos que el usuario ha abierto para tener acceso rápido.
- Modificado recientemente
- Aquí se listan los últimos 100 objetos que el usuario ha modificado para facilitar el acceso rápido.
Capítulo 10. Integración de JBoss Developer Studio Copiar enlaceEnlace copiado en el portapapeles!
Importante
Importante
10.1. Sinopsis de las funcionalidades Copiar enlaceEnlace copiado en el portapapeles!
Figura 10.1. Perspectivas de "exploración del repositorio Guvnor"
10.2. Asistente de conexión Guvnor Copiar enlaceEnlace copiado en el portapapeles!
Figura 10.2. Asistente de conexión
Figura 10.3. Asistente de conexión
Figura 10.4. Asistente de conexión
http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/webdav
Figura 10.5. Inicio de sesión
10.3. Explorador del repositorio Guvnor Copiar enlaceEnlace copiado en el portapapeles!
Figura 10.6. Explorador
Figura 10.7. Propiedades
Figura 10.8. Contenido de archivos
Figura 10.9. Contenido de archivos
10.4. Copias locales de archivos Guvnor Copiar enlaceEnlace copiado en el portapapeles!
Figura 10.10. Navegador
Figura 10.11. Propiedades
10.5. Acciones para recursos locales Guvnor Copiar enlaceEnlace copiado en el portapapeles!
- Actualización
- Agregar
- Guardar cambios
- Mostrar historial
- Comparar con la versión
- Cambiar a la versión
- Borrar
- Desconectar
Figura 10.12. Agregar acción
Figura 10.13. Agregar acción
mortages como el destino. El hacer clic en “Finish” agrega los archivos seleccionados al repositorio Guvnor y crea una asociación entre los archivos locales y los del repositorio Guvnor. El asistente no le permitirá sobreescribir archivos existentes del repositorio Guvnor al agregar nuevos archivos.
Figura 10.14. Comparación
Figura 10.15. Comparación
Figura 10.16. Versiones
Figura 10.17. Historial
Figura 10.18. Historial
10.6. Importación de recursos del repositorio Guvnor Copiar enlaceEnlace copiado en el portapapeles!
Figura 10.19. Importación
Figura 10.20. Importación
Figura 10.21. Importación
Figura 10.22. Copiar
10.7. Preferencias plug-in de Guvnor Copiar enlaceEnlace copiado en el portapapeles!
Figura 10.23. Preferencias
Capítulo 11. Configuración de clientes para la firma de paquetes de reglas Copiar enlaceEnlace copiado en el portapapeles!
Importante
keytool para crear una llave privada y un certificado digital público correspondiente. Los paquetes firmados con una llave privada sólo se pueden verificar con el certificado que coincida. La llave privada se almacena en un archivo llamado keystore y el servidor lo utiliza para firmar automáticamente cada paquete. El certificado público se hace disponible para cada aplicación cliente en un almacén de llaves conocido como almacén de confianza. El certificado en el almacén de confianza se utiliza para verificar la autenticidad de los paquetes firmados. Los paquetes de reglas que están corruptos o que se han modificado durante la descarga serán rechanzados por el cliente ya que la firma ya no coincidirá con el certificado.
System.setProperty. La clase org.drools.core.util.KeyStoreHelper contiene varias constantes que representan estas propiedades.
- Un servidor JBoss Enterprise BRMS Platform ya instalado y configurado correctamente para la firma de paquetes de reglas.
- La URL para el almacén de confianza que contiene el certificado digital que el servidor JBoss Enterprise BRMS Platform utiliza.
- La contraseña para el almacén de confianza si hay una establecida.
Procedimiento 11.1. Configuración de clientes para la firma de paquetes de reglas
Habilitar la firma
Configure la propiedaddrools.serialization.signcomotrue.System.setProperty( KeyStoreHelper.PROP_SIGN, "true" );
System.setProperty( KeyStoreHelper.PROP_SIGN, "true" );Copy to Clipboard Copied! Toggle word wrap Toggle overflow Configure la URL TrustStore
Configure la propiedaddrools.serialization.public.keyStoreURLcon la URL en donde se encuentra el TrustStore. Si el TrustStore se encuentra en la ruta de clase del cliente entonces esto se puede lograr usando el métodogetClass().getResource().Ejemplo 11.1. Cuando el TrustStore se encuentra en la ruta de clase del cliente
URL trustStoreURL = getClass().getResource( "BRMSTrustStore.keystore" ); System.setProperty( KeyStoreHelper.PROP_PUB_KS_URL, trustStoreURL.toExternalForm() );
URL trustStoreURL = getClass().getResource( "BRMSTrustStore.keystore" ); System.setProperty( KeyStoreHelper.PROP_PUB_KS_URL, trustStoreURL.toExternalForm() );Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ejemplo 11.2. Cuando el TrustStore se encuentra en un servidor web
URL trustStoreURL = new URL("http://brms.intranet/resources/BRMSTrustStore.keystore" ); System.setProperty( KeyStoreHelper.PROP_PUB_KS_URL, trustStoreURL.toExternalForm() );URL trustStoreURL = new URL("http://brms.intranet/resources/BRMSTrustStore.keystore" ); System.setProperty( KeyStoreHelper.PROP_PUB_KS_URL, trustStoreURL.toExternalForm() );Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ejemplo 11.3. Cuando el TrustStore se encuentra en el sistema local de archivos
URL trustStoreURL = new URL("file:///mnt/fileserve/rules-server/BRMSTrustStore.keystore" ); System.setProperty( KeyStoreHelper.PROP_PUB_KS_URL, trustStoreURL.toExternalForm() );URL trustStoreURL = new URL("file:///mnt/fileserve/rules-server/BRMSTrustStore.keystore" ); System.setProperty( KeyStoreHelper.PROP_PUB_KS_URL, trustStoreURL.toExternalForm() );Copy to Clipboard Copied! Toggle word wrap Toggle overflow OPCIONAL: Establezca la contraseña del almacén de claves
Configure la propiedaddrools.serialization.public.keyStorePwdcon la contraseña para el almacén de confianza. Esto sólo se necesita si se requiere una contraseña para acceder el almacén de confianza.System.setProperty( KeyStoreHelper.PROP_PUB_KS_PWD, "sekretPasswordHere" );
System.setProperty( KeyStoreHelper.PROP_PUB_KS_PWD, "sekretPasswordHere" );Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- Consulte el manual del administrador BRMS para ver las instrucciones sobre cómo configurar el servidor para la firma de paquetes de reglas, http://docs.redhat.com/docs/en-US/JBoss_Enterprise_BRMS_Platform/5/html/BRMS_Administrator_Guide.
- Consulte http://en.wikipedia.org/wiki/Public-key_cryptography para obtener mayor información sobre la criptografía de claves públicas.
Apéndice A. Historial de revisiones Copiar enlaceEnlace copiado en el portapapeles!
| Historial de revisiones | |||||||
|---|---|---|---|---|---|---|---|
| Revisión 5.2.0-2.400 | 2013-10-31 | ||||||
| |||||||
| Revisión 5.2.0-2 | 2012-07-18 | ||||||
| |||||||
| Revisión 5.2.0-0 | August 4 2011 | ||||||
| |||||||
| Revisión 5.1.0-0 | Mon December 13 2010 | , | |||||
| |||||||
| Revisión 5.0.2-0 | Wed May 5 2010 | ||||||
| |||||||
| Revisión 5.0.1-0 | Fri Oct 3 2009 | , | |||||
| |||||||
| Revisión 5.0.0-1 | Thu 16 Jul 2009 | ||||||
| |||||||
| Revisión 5.0.0-0 | Mon 18 May 2009 | ||||||
| |||||||