La solución simple para acceder a la restricción cuando la cantidad de usuarios es pequeña es Access Control Matrix. Aquí las filas son los usuarios y las columnas son diferentes tipos de activos.
En mi caso, tengo un documento que debo servir que tiene atributos diferentes. Así que mis columnas serán atributos diferentes. Así que ahora es simple matriz 2-D.
Pero tengo requisitos que también dependen de la información contenida en el documento. Así que digamos que tengo dos tipos de documentos, uno con el atributo X y otro sin el atributo X.
Por lo que tengo, esto aumentará la dimensión de mi matriz a 3-D, donde en el eje Z tendré dos entradas, "X Attr Doc", "Sin X Attr Doc".
Mis requisitos son tales que también depende de la información que estoy proporcionando.
La única solución que he encontrado hasta ahora es tener una matriz bidimensional y en cada celda de la matriz tenemos una regla específica.
Aquí, los ClientID son usuarios diferentes, y Public, Core, Private, Default son diferentes categorías (conjunto de atributos) a las que se les otorga acceso o no.
Puede ver en una celda, el acceso se otorga solo si se cumple cierta condición que depende del documento.
Además, quiero que en el futuro esta tabla sea configurable, por ejemplo, cada vez que un nuevo cliente se registre, podemos agregar una nueva fila. O podemos tener una nueva columna si tenemos una nueva categoría que debemos servir.
¿Hay alguna solución mejor? Si no es así, ¿puede alguien sugerir la manera más eficiente de implementar el rendimiento en Java? Estaba pensando en el lenguaje de expresión como SPEL, pero no tengo idea.