There are a series of input values in the model, which are specified by the modeler (in a sense of default values). Depending on privilege, the user may or may not change these default values.
How can this be implemented?
a) The straightforward approach would be the (currently non existent) property flag „Protect cell from input“ which could be set to an expression like „select (ProtectCells:: , $RoleName = @Role)“ assuming we have a Permission-Matrix „ProtectCells“, which has the same categories as the input cell, plus a Role-category containing all Roles, and as values a boolean which says if this input is editable or not.
b) A workaround using filtering has been suggested in the Dimension discussion yesterday. It is based on the idea that we only show editable cells to the user, and having three layers in the input matrix: default, user input, and final input value, which includes the permission logic.
As filtering always applies to entire rows / columns, this can not be nicely done in a matrix, but must be moved to a canvas. Also here, layout has it’s challenges. But this approach seems modeler-friendly, as it is clean.
This approach is also cloud save, as different users are editing the same cells, and there will overwrites each values, but calculation will always be consistent with current values.
c) Instead of using a Permission matrix, all logic can be moved to Security Permissions. As these apply only to an entire matrix, there must be a separate input matrix per user role, which is editable. Then, inputs from all roles must be gathered into the final input matrix.
Attention! As different users are working on different input cells, and we use the $RoleName in combing the inputs, this solution is not Qloud-save.
Do you see other solutions than b) and c) ? Who is having a strong use case for this to suggest to Quantrix Product Management that the flag „Protect Cell from input“ is needed?
P.S.: Simple Example Implementation of solution B) and solution C).