En la gestión de datos, la implementación de una regla dinámica de acceso es esencial para garantizar la seguridad y la eficiencia en el manejo de la información. En el contexto de Hopex, una regla de acceso define los derechos de lectura o escritura de una persona sobre un objeto dado. Esta regla puede aplicarse a varios objetos y se fundamenta en las características tanto del objeto como de la persona, ofreciendo un enfoque personalizado y adaptable. Además, esta regla puede invocarse al crear un objeto y puede asociarse con uno o varios perfiles. Por defecto, la regla se asocia con todos los perfiles, aunque en esta ocasión para hacer una demostración sencilla, haremos una asignación de la Regla a un perfil en particular.
Supondremos que dependiendo del perfil dentro de Hopex, se desea restringir la modificación de los objetos tipo Proceso Organizacional para un determinado estatus del Flujo de Trabajo. Anteriormente se ha demostrado que esto se puede manipular muy simple con la gestión del CRUD, aunque ahora el enfoque será con las Reglas de Acceso de Datos, ya que no sólo puede ser aplicado para un perfil como al administrar el CRUD, también podríamos asignar esto a una persona en específico o inclusive, a cualquier rol dentro de Hopex, lo que podría ahorrar tiempo de configuración.
Ahora el caso de uso es el siguiente, cuando se accede con el Perfil de Responsable de Proceso, se pueden ver todos los procesos organizacionales:
Al entrar en algún proceso organizacional, podemos editar este con total libertad independientemente del estatus de flujo de trabajo en el que se encuentre este proceso:
Ahora, la breve modificación a demostrar será directo en la MetaClase de Proceso Organizacional, una Regla De Acceso que estará definida para el perfil Responsable de Proceso y que evitará su modificación cuando el estatus de este proceso sea Validado:
Para realizar esto, debemos ir a las propiedades de la MetaClase, en su pestaña de Acceso de Datos y añadiremos una nueva regla de acceso.
En este caso estamos creando una nueva regla de acceso de tipo Escritura con una nueva Macro y es precisamente esta macro la que se estará modificando para obtener el resultado deseado, el código de la Macro quedaría de la siguiente manera:
Option Explicit
Sub GetAttributeValue(ByVal mgProcesoOrg, ByVal vMetaAttributeId, ByRef Value)
Value = "1"
Dim estatusProceso
estatusProceso = mgProcesoOrg.GetProp("~9YMdeRRdInwI[Estatus de Proceso Organizacional]")
If estatusProceso = "VAL" then
Value = "0"
end if
End Sub
Esta macro sirve para obtener un valor por defecto antes de la condición If, con Value = "1", por lo tanto, se puede escribir sobre el objeto, pero, añadimos una condición en la que si el estatus del proceso organizacional es igual a "VAL" que es el valor interno para "Validado", entonces regresamos Value = "0", lo que implica que no se podrá modificar el objeto.
Ahora sólo nos resta añadir el perfil objetivo, ya que por defecto, la regla aplica para todos los perfiles a menos que se especifiquen.
Ahora sólo resta validar con el perfil desde la aplicación Web para procesos en el estatus de validado.
En este caso, todavía somos capaces de editar libremente el proceso:
Pero, cuando pasemos la siguiente estatus ocurrirá lo siguiente:
Esto ocurre una vez que el estatus esté en validado como lo hemos previsto y claro, que el perfil con el que estemos ingresando sea Responsable de Proceso, en cambio si otro perfil que tiene la capacidad de visualizar este tipo de objetos lo intenta editar, no ocurrirá el mismo comportamiento. Esta es una medida muy útil para restringir objetos dependiendo de condiciones que se requieran y por condiciones más explícitas gracias al uso de macros. Este mismo ejercicio se puede realizar por medio de CRUD y de forma más sencilla, si quieres explorar un poco de CRUD, te invitamos a revisar el siguiente post: HOPEX CRUD Introducción