Specific release
The specific release takes even more (dependent) objects into account in the release process, depending on the release parameters defined.
- Ensure accessibility (parent chain): Starting at the selected object, all new (never released), higher-level nodes are also released (see Ensuring accessibility (parent chain)). This option makes sense, for example, if a new page within a new folder was created in the page store and both are to be released together. In contrast to recursive release, other new pages below the folder would not be released. While the combination of this option with the "recursive release" option remains limited to the current store (see Parent chain and recursive release), it also has an effect on the parent chain of the dependent objects and, thus, on other stores in combination with the "Dependent release" option (see Parent chain and dependent release).
- Recursive release: Depending on the object selected, all subordinate nodes are also released. This selection makes sense, for example, if within a folder in the page store many pages were changed and now all changes are to be released together. This option remains limited to the current store area (see Recursive release).
- Only release new dependent objects: Starting from the selected object, all objects that are dependent on the selected object (for example, a media file used in an image input component) and that have not yet been released (newly created objects) are also released. If this release option is combined with other options (for example, the release of the parent chain), the dependent release also has an effect on other objects and stores included in the release process.
- Release new and changed dependent objects: Starting from the selected object, all objects that are dependent on the selected object (for example, a media file used in an image input component) are also released. Objects that have never been released (newly created objects) and objects that have been reedited after being successfully released (changed objects) are taken into account in the process. If this release option is combined with other options (for example, the release of the parent chain), the dependent release also has an effect on other objects and stores included in the release process.
Specific release of an object is carried out using the following API method:
AccessUtil.release(IDProvider releaseStartNode, boolean checkOnly, boolean ensureAccessibility, boolean recursive,
IDProvider.DependentReleaseType dependentType)
Transition parameters:
releaseStartNode: Start nodes for the release
checkOnly: If the value true is passed, the specific release is just tested. The objects to be released are not transferred to the release state. Instead, the defined release options are run in order to discover errors before the real release, for instance.
ensureAccessibility: If the value true is passed, the complete parent chain of the object to be released is determined and all objects that have never been released before are also released. If the option releaseParentPath=false is set, the parent chain is not released; the elements to be released are, however, added to the release child list of the parent node. The following applies here:
- With changed parent nodes: The object to be released can be accessed in release state. The parent element, however, is not released.
- With new parent nodes: Because the parent node was never released, the object to be released in the release state cannot be reached. That can lead to invalid references in the release state (see Ensuring accessibility (parent chain) and Parent chain and recursive release).
recursive: If the value true is passed, all child elements of the object to be released are recursively determined and likewise released. If the value false is passed, the child elements are not taken into account during release (see Recursive release, Dependent release with recursive release and Parent chain and recursive release).
dependentType: Objects dependent on the object to be released are determined and also released using this parameter. If, for example, a media file is referenced on a page, this media file can also be released directly during specific release of the page. The following dependencies can be taken into account (see Recursive release, Dependent release with recursive release and Parent chain and recursive release):
- DEPENDENT_RELEASE_NEW_AND_CHANGED: New and modified dependent objects are taken into account.
- DEPENDENT_RELEASE_NEW_ONLY: Only newly created (not yet released objects) are taken into account
- NO_DEPENDENT_RELEASE: Dependent objects are not taken into account and have to be released separately if necessary (default setting).
The different release options can be combined with each other in any way to realize a comprehensive release within a short time. However, the release of all objects involved in the release process is may be undesirable in certain circumstances and therefore should be carried out with caution.
The server-side release will therefore be explained in the following chapters based on some examples.
Return parameters:
ServerActionhandle<? extends ReleaseProgress,Boolean >
The server-side release returns a ServerActionHandle, which contains all information about the release process.