The View Management module permits us to fine-tune the sharing rules of filters on each module and a view itself.
The record has two "modes", one for the settings of a filter and another for the default permissions of the module. This dual mode is defined by the value of the "Default Setting" checkbox.
To set the permission for a view, we uncheck the "Default Setting" checkbox which puts the record in View permission mode. Then we can select the User, Group, or Role for which we want to set the permissions. Finally, we set the CRUD-A permissions and the Default status. We can make this the mandatory setting for the selected User/Group/Role.
If the "Default Setting" is checked then you must select the module for which you want to set the permissions and mark the permission set you want. This will define the default permissions on all views for the selected modules if no other record with specific settings is found.
So, for any view, we can select that view in the initial picklist and then select the user and set the Retrieve, Update, Delete, and Approve permissions that user will have over the filter.
With the "Default Setting" set to true, we can define the Create, Retrieve, Update, Delete, and Approve permissions that all users will have over in the module.
When a new filter is created on a module, the application will automatically create a cbCVManagement record with these settings:
This will permit you to create a workflow that detects the "Set Public" checkbox and send an email to any user who needs to Approve the filter for other users.
When a filter is updated, the shared fields are updated.
The escalation process followed to decide if a view is accessible or not is
The set as private checkbox in filters is a quick way to set a filter as private. This can be achieved by defining specific records in the View Permission module as described above but this makes it easier to override the default "permissive" sharing options of the application.
Watch a quick explanation of the View Permission module showing how it works with some examples.
From a developer's point of view, the module gives a set of services:
The getAllViews service can be retrieved via the getAllViewsByModule web service method.