OpenRules

0
11636

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 …

 

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

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

Por favor ingrese su nombre aquí

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

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad