OpenRules

En este turorial se va a hacer una primera aproximación a OpenRules relacionado con sistemas de permisos

OpenRules

Llevo desde septiembre del año pasado estudiando un Executive MBA en el
Instituto de Empresa y hoy, después de meses sin parar de estudiar decenas de
cosas distintas alejadas de la programación, no he podido resistir la tentación
de tirar código … o eso creía.

En nuestra herramienta
TNTConcept
, hemos implantado un sistema de permisos (con Spring y Acegi)
donde, en una primera versión hemos encapsulado la lista de accesos (ACLs) en
una clase java. No nos costará mucha sacarlos a otros formatos pero, si nos
remontamos a los principios, la lista de permisos la definimos en una hoja de
cálculo. ¿Por qué no usar sin más esa hoja de cálculo?.

En Autentia, estamos cacharreando todo el tiempo (sino unos otros) y tratando
de concentrar el conocimiento en nuestra herramienta (de la que obtendremos
tanto buenas como malas conclusiones) y hoy le toca a OpenRules.

Descarga e instalación

Primero vamos al Web de la empresa
http://openrules.com/
. Como curiosidad, el software que use esta herramienta
tiene que llevar el PowerBy.

Vemos las opciones de descarga

Vemos el fichero decomprimido

Elegimos el primer ejemplo y lo ejecutamos

Lastima .. pero necesitamos instalar ANT

Instalación de Ant

Nos vamos a su Web y lo descargamos:
http://ant.apache.org/. En
www.adictosaltrabajo.com hay varios
tutoriales de ANT (Introducción a ANT,
Desarrollo gráfico ANT
, Subir el contenido de una carpeta por ftp
mediante un script de Ant
)

Para que funcione, tenemos que modificar las variables de
entorno path y classpath

Volvemos a ejecutar el ejemplo y ya funciona …

Interpretación del ejemplo

Analizamos un poco el ejemplo HelloRules

En un primer excel se define el comportamiento del programa como
un main normal Java

En otra lengüeta tiene los datos y reglas separados (no es
necesario pero parece sensato … aunque un poco molesto a la hora de cambiar de
ficehros)

Vamos a la hoja de datos donde se define la estructura de
objetos: App con sus atributos (uno de ellos a su vez otro objeto: Customer).

Las tablas de más abajo sólo se utilizan como validaciones excel
(hay que saber un pelín manejar la herramienta: Definir nombre, validación,
agrupar, etc. aunque se coge el truco enseguida)

En la siguiente lengüeta se inicializan los datos.

En la hoja de reglas, se definen dos: La primera defineGreeting
tenemos dos condiciones y una asignación y nos sirve para rellenar el campo
app.greeting cuando hay una coincidencia.

Nuestro ejemplo

Usando la misma estructura y sin leer la documentación,
intuitivamente se puede intentar una chapucilla.

app va a representar los datos que nos pasarían por programa:
Usuario y la función que quiere ejecutar

El sistema nos dirá si podemos o no.

Primero obtenemos el rol del usuario y el permiso asignado a ese
rol

Method void main(String[] args) 
Permisos app = apps[0];

calculaRol(app);

calculaPermisos(app);

app.resultado = app.nombre + «, » + app.funcion + » » + app.permiso
+ «!»;

System.out.println(«*** Estos son los permisos ***»);

System.out.println(app.resultado);

Simplificamos la estructura de datos

 
BUSINESS GLOSSARY
TERM TYPE TERM NAME
   
Datatype Permisos
String nombre
String funcion
String rol
String permiso
String resultado
 
Nombres Perfiles
Roberto Administrador
Juan Usuario
Pedro Cliente
Luis Administrativo
Angel  
Gema  
 
Permisos Funciones
Listado Cuentas
Detalle Clientes
Modificación  
 

 

 

 

       
Data Permisos apps
nombre funcion rol permiso resultado
Nombre Funcion rol permiso Resultado
Roberto Clientes nulo nulo nulo
Gema Listado nulo nulo nulo
       
   
Rules void calculaRol(Permisos
app)
C1   A1
app.nombre.equals(nombre);   app.rol = rol; 
String nombre   String rol
Nombre   Set rol
Roberto   Cliente
Gema   Staff
Pedro   Usuario
Carlos   Usuario
Antonio   Usuario
Juan   Admin
   
   
Rules void calculaPermisos(Permisos
app)
C1 C2 A1
app.rol.equals(nombre); app.funcion.equals(funcion); app.permiso = permiso; 
String nombre String funcion String permiso
Nombre Funcion Set Permiso
Admin Clientes Autorizado
Staff Clientes Autorizado
Usuario Clientes Cliente
Cliente Clientes Denegado
   

Al ejecutar, lo hemos conseguido

Bueno, espero que se os estén ocurriendo tantos usos como a mí
… es cuestión de dedicarle unas horitas más …

Este tipo de programación puede parecer complejo pero una vez
definidas las tablas, sólo hay que añadir elementos de un modo trivial. Es una
herramienta más que debería tener en mente un arquitecto de software pero no lo
olvidéis … una cosa es conocerlo y otra tratar de enchufarla, a partir de
ahora, en todos lo proyectos …

 

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Creador y propietario de AdictosAlTrabajo.com, Director General de Autentia S.L., Profesor asociado en IE Business School, inversor en StartUps y mentor de emprendedores. Ingeniero Técnico de Telecomunicaciones y Executive MBA por IE Business School 2007. Twitter: Follow @rcanalesmora Autor de los Libros: Planifica tu éxito: de aprendiz a empresario, Informática profesional, las reglas no escritas para triunfar en la empresa, Conceptos ágiles aplicados a distintas áreas de una empresa y Conversaciones con CEOs y CIOs sobre Transformación Digital y Metodologías Ágiles. ¡Descárgalos gratis aquí! Puedes consultar mi CV y alguna de mis primeras aplicaciones (de los 90) aquí.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

02/03/2026

José Antonio Sánchez Segovia

Zephyr es un RTOS open source respaldado por la Linux Foundation que permite desarrollar dispositivos embebidos conectados, eficientes y escalables, facilitando el paso de prototipo a producto final con una arquitectura mantenible.

23/02/2026

Enrique Casado Díez

LoRa y LoRaWAN son tecnologías clave en el ecosistema IoT cuando se requiere largo alcance y bajo consumo energético. En este artículo analizamos su funcionamiento, Spreading Factor, link budget, arquitectura de red, frecuencias y clases de dispositivos, con un caso práctico real.

19/02/2026

Juan José Díaz Antuña

Copilot Chat es la forma más sencilla y segura de empezar a usar IA en Microsoft 365. En este artículo vemos cómo funciona, cómo activarlo y en qué se diferencia de Microsoft 365 Copilot, Copilot Studio y los Agentes Inteligentes, con ejemplos prácticos y una comparativa clara.