Manejar los privilegios a través de reglas

<< Click to Display Table of Contents >>

Navigation:  Bizagi Studio > Definición de Seguridad > Seguridad del caso >

Manejar los privilegios a través de reglas

Introducción

Usted puede restringir el acceso a casos y asignar usuarios privilegiados dinámicamente a través de expresiones en Bizagi (reglas de negocio ejecutadas durante los procesos).

Esta sección describe cómo conceder o anular el acceso a usuarios específicos tomando provecho de la funcionalidad de Seguridad del caso.

 

Bizagi proporciona un conjunto de funciones que permiten adicionar o remover usuarios de la lista de usuarios privilegiados de los casos abiertos por medio de una Expresión.

Las funciones le permiten:

Adicionar un usuario

Adicionar una lista de usuarios

Remover un usuario

Remover una lista usuarios

 

 

Funciones de Seguridad de Casos

Las siguientes API están disponibles desde las reglas, con el objetivo de permitir o restringir accesos:

 

CHelper.GrantCaseAccess(int idCase, int idUser): agrega el usuario a la lista de usuarios privilegiados.

CHelper.GrantCaseAccessToUsers (int idCase, Arry Users): Agrega varios usuarios a la lista de privilegiados.

CHelper.RevokeCaseAccess(int idCase, int idUser): Elimina un usuario de la lista de privilegiados.

CHelper.RevokeCaseAccessToUsers (int idCase, Array Users): Elimina varios usuarios de la lista de privilegiados.

 

Las funciones utilizan dos parámetros: el identificador único del caso y el identificador de los usuarios. Cuando una función recibe sólo un usuario, el identificador único del caso deberá ser ingresado; cuando se reciben múltiples usuarios, se requiere una arreglo de identificador de usuarios. Los identificadores son enteros que se crean automáticamente en Bizagi en cada registro. Por lo tanto, cada caso tiene su identificador único, al igual que cada usuario. NUNCA Y POR NINGÚN MOTIVO se debe escribir en una expresión el identificador del usuario dejándolo fijo. Bizagi proporciona una serie de métodos que permiten consultarlos para conseguir los identificadores (IDs). Por ejemplo, el método CHelper.getUsersForRole retorna un arreglo con los IDs de los usuarios que pertenecen a un rol determinado.

 

Para acceder al identificador de los casos se recomiendan estas funciones:

 

Me.Case.Id: Retorna el ID del caso del caso actual.

CHelper.getSiblingProcessesId (Me, iWfClassId): Devuelve un arreglo de ID de casos, de Subprocesos creados desde el mismo caso padre.

CHelper.getSubProcessesId (Me): Devuelve un arreglo de casos, de Subprocesos del caso padre actual.

 

Ejemplo de seguridad de Caso usando expresiones

En un proceso de Solicitud de Compras se desea restringir la información de forma que sólo puedan acceder a los casos creados el usuario creador y su jefe. De acuerdo a lo explicado anteriormente, los usuarios que sean asignados durante el proceso del caso  tendrán acceso.

 

El usuario creador, por definición, automáticamente será adicionado a la lista de usuarios con privilegios. Sin embargo, el jefe del usuario debe ser agregado por medio de una regla para que también pueda tener acceso al caso desde la primera actividad. Para lograr lo anterior se debe configurar el proceso para que tenga seguridad de caso Privado, y luego agregar una expresión que incluya al jefe del creador como usuario privilegiado.

 

1. En la vista de Experto, ingrese a las propiedades del Proceso dando clic sobre su versión.

 

CaseSecurity4

 

2. Seleccione la opción Privado (Private) en el menú de Seguridad del caso (Case security) para restringir el acceso de los casos y dé clic en OK.

 

CaseSecurity8

 

3. En el paso número 4 (cuatro) del Asistente de Procesos, diríjase a Acciones de la Actividad para crear una expresión Al entrar en la actividad de registro. La regla debe agregar a la lista de usuarios privilegiados al jefe del usuario que crea la solicitud.

 

CaseSecurity9

 

CaseSecurity10

 

//Obtain the direct supervisor

Boss=Me.Case.WorkingCredential.UserProperties['idbossuser'];

//Grant Access to the supervisor

CHelper.GrantCaseAccess(Me.Case.Id,Boss);

 

Ahora probemos si la expresión funciona. Suponga que tenemos tres usuarios:

 

Usuario Creador (CreatorUser): Será el usuario que crea el caso.

Jefe (Boss): El supervisor del creador del caso.

Usuario Restringido (RestrictedUser): El usuario al cual se debe restringir el acceso.

 

CaseSecurity11

 

Ingrese con el usuario Creador del caso (CreatorUser) y cree un nuevo caso de Solicitud de Compras.

 

CaseSecurity12

 

El Usuario creador se incluirá automáticamente como usuario privilegiado y por lo tanto podrá consultar el caso en cualquier momento. Ingrese el número de caso en el campo de búsqueda. Para este ejemplo será 1905.

 

 

CaseSecurity13

 

Si da clic en el Número de Caso usted podrá ver su información.

 

 

CaseSecurity27

 

De forma similar, el usuario jefe (Boss), a quien se concedieron permisos previamente como supervisor del Creador del caso, también tendrá acceso.

 

CaseSecurity14

 

Si ingresamos con el usuario restringido (RestrictedUSer), no podremos acceder al caso. Cuando realicemos la búsqueda, aparecerá como si el caso no existiera.

 

CaseSecurity28

 

 

Agregar un usuario privilegiado usando una expresión

En un proceso de Solicitud de Compras se desea restringir la información de forma que sólo puedan acceder a los casos creados los usuarios privilegiados (creador y asignados) y adicionalmente el Vicepresidente Comercial, quien no tiene asignaciones en dichos casos.

 

Por lo anterior, es necesario añadir al usuario vicepresidente a los usuarios privilegiados utilizando una expresión. Para ello, creamos una tabla paramétrica en donde guardaremos el Usuario Vicepresidente Comercial, de forma que podamos acceder fácilmente al identificador del usuario y que éste pueda ser administrado en caso de que cambie. Esta entidad paramétrica esta asociada con el Proceso de Solicitud de Compras.

 

CaseSecurity18

 

En el paso número 4 del Asistente de procesos, diríjase a Acciones de la Actividad para crear una expresión al entrar en la actividad de registro.

 

CaseSecurity19

 

 

La expresión agrega a la lista de usuarios privilegiados al Vicepresidente. Se encuentra el registro del Vicepresidente en la tabla paramétrica creada, y se guarda su ID en una variable. Luego, esta variable es registrada en la función que adiciona a los usuarios privilegiados.

 

CaseSecurity20

 

//Obtain VicePresident User

var ViceId=CHelper.getEntityAttrib("Userwithaccess","Usertograntaccess","Code ='CVP'","");

//Grant access to VicePresident

CHelper.GrantCaseAccess(Me.Case.Id,ViceId);

 

 

Agregar múltiples usuarios privilegiados usando una expresión

En un proceso de Solicitud de Compras se desea restringir la información de forma que sólo puedan acceder a los casos creados los usuarios privilegiados (creador y asignados). Adicionalmente, el Vicepresidente Comercial y el Presidente quienes no tienen ninguna asignación en este caso, como usuarios privilegiados. Por lo tanto, es necesario añadirlos a los usuarios privilegiados utilizando una expresión. Para ello, se creará una tabla paramétrica en donde se almacenarán los dos usuarios: Vicepresidente Comercial y Presidente, de forma que sea posible acceder fácilmente a sus identificadores y puedan ser administrados en caso de que cambien.

 

 

CaseSecurity21

 

En el paso número 4 del Asistente de procesos, vaya a Acciones de la Actividad para crear una expresión al entrar en la actividad de registro.

 

CaseSecurity19

 

 

La siguiente expresión agrega a la lista de usuarios privilegiados al Vicepresidente y al Presidente. Se encuentran todos los registros de la tabla paramétrica y se guardan los identificadores en una variable. Luego, esta variable es registrada en la función que adiciona a los usuarios privilegiados.

 

 

CaseSecurity22

 

 

//Obtain list of all users in the 'Users with access' table

UserstoAdd=CHelper.CEntityManager.GetEntity("Userswithaccess").GetEntityList("","","","");

 

//Go through the list

for (Counter=0; UserstoAdd.Lenght>Counter;Counter++)

{

 

 IdUser=UserstoAdd[Counter].Attributes["Usertograntaccess"].Value;

 

 //Validate there are no duplicities

 if(!MyArray.Contains(IdUser))

 {

     //Store users

         MyArray.Add(IdUser);

 }

//Grant Access to users

CHelper.GrantCaseAccessToUsers(Me.Case.Id,MyArray);

}