Last modified on 18 July 2024, at 09:54

Exclusive Access Content (Client)

Revision as of 09:54, 18 July 2024 by CWI (Talk | contribs) (Branch download and check out)

For certain content, it is necessary to prevent multiple users from editing the same content at the same time. This is exactly what this feature is about, namely to allow one user to gain exclusive access to some content so that it remains locked to other users until that access is released.

Exclusive access state

For content that is exclusive access related, you should see some indicator (icon or icon with text) in the content page or content item view. It's possible to have the following states:

  • Disabled (Exclusive access unavailable) - Impossible to check out or release the content for exclusive access. This doesn't necessarily affect the lock status of the content, though;
  • Not checked out - The object is locked but can be checked out, and it gets unlocked once the check out is accepted by the server;
  • Checked out by me - The object is unlocked only to the current user because they have exclusive access to it;
  • Checked out by others - The object is locked and can not be checked out, because another user has exclusive access to it.
IC Hint square.pngThe exclusive access aspect of a content object only contributes in the overall locking status (combined with other factors, e.g. User Rights using logic or). In other words, an object can still be locked when you have exclusive access to it.

Exclusive access and MRO

An object can be exclusive access related and, in the mean time, an MRO object.

  • When an exclusive access object is locked because e.g. it's not yet checked out, normally its child objects are not locked because of it, i.e. child objects do not inherit the exclusive access state from the parent object;
  • However, if such an exclusive access object also happens to be an MRO task owner or work package, its locking state will be inherited by all its direct and indirect MRO child objects.


Check out and release

Two basic options are provided regarding exclusive access.

  • Check out - Checks out the content so that you can exclusively edit it;
  • Release - Gives back the exclusive access to the content so other users can request it.

Applied conditions

The check out and release options are only possible under the following conditions.

  • The app is in Online sync mode;
  • The content is exclusive access related and it's not disabled;
  • There are no local changes on the content to be checked out or released; (It shouldn't be possible before checking out anyway.)
  • (Only for check out) The content is not yet checked out by anyone;
  • (Only for release) The content is already checked out by the current user. Here, the current user must be known and it's not enough to just be successfully logged in. The login must have a unique identifier, see login details.
IC Attention.pngFulfilling these conditions does not necessarily guarantee the success of a check out or release. Eventually the server decides whether exclusive access can be granted or not. Example reasons of failure can be multiple users requested exclusive access in parallel and only the first one gains it, or server side customizings can add more condition checks.


Branch download and check out

When downloading a branch, there is now a second option to check out all downloaded content afterwards. Note that the previously mentioned conditions still apply, those that do not fulfill them will simply be skipped. For information on to customize it in Xaml check out this article about the BranchDownloadCommand.

XAML customizing

CheckOutContentCommand and ReleaseContentCommand are available on a ContentViewModel. Both accept different types of parameters.

  • No parameter: The context object is assumed;
  • A single instance of an object or ContentViewModel: That object or the context object of that ContentViewModel is to be checked out or released;
  • A collection of objects or ContentViewModels: The given objects are to be checked out or released. This case is demonstrated in the example below, in which the current level of child objects are to be checked out.
<Button...
   Command="{Binding CheckOutContentCommand}"
   CommandParameter="{Binding Children.Items}">
</Button>
IC Hint square.pngIt's possible to supply a filtered collection of objects as the parameter for these commands.

Details of exclusive access related information of the context object are available in ContentViewModel.ExclusiveAccessInfo, and can be inspected using the developer mode.


See also