require(["esri/versionManagement/VersionManagementService"], (VersionManagementService) => { /* code goes here */ });
import VersionManagementService from "@arcgis/core/versionManagement/VersionManagementService.js";
esri/versionManagement/VersionManagementService
This class contains metadata about the version management service. The class can be constructed via a url to a version management service. The VersionManagementService grants users to plethora of functionality. The VersionManagementService contains methods for creating a new version, deleting a version, altering a version, changing a version on layers, start/stop reading, start/stop editing, reconciling, posting, and getting version infos. The Version Management Component offers another way to handle versioning using a UI.
// Initialize the VersionManagementService from a url
const versionManagementService = new VersionManagementService({
url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/TestService/VersionManagementServer"
});
// The layers that will be managed under the VersionManagementService
const layer1 = new FeatureLayer({
url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/TestService/FeatureServer/12"
});
const layer2 = new FeatureLayer({
url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/TestService/FeatureServer/13"
});
const layers = [layer1, layer2];
// The VersionManagementService must be loaded before any methods can be called
await versionManagementService.load();
// Change the version of two layers
versionManagementService.changeVersion(
layers,
{ name: "sde.DEFAULT", guid: "{13DEDC17-5867-4DBC-9855-0736C4C57162}"},
{ name: "admin.version", guid: "{422D1B63-D795-4478-A4B1-AD6109377074}"}
);
Constructors
-
Parameterproperties Objectoptional
See the properties for a list of all the properties that may be passed into the constructor.
Example// Create a Version Management Service from a url const versionManagementService = new VersionManagementService({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/TestService/VersionManagementServer" });
Property Overview
Name | Type | Summary | Class |
---|---|---|---|
Describes the version management service's supported capabilities. | VersionManagementService | ||
Contains the value for the default version's name and GUID. | VersionManagementService | ||
Indicates whether the instance has loaded. | VersionManagementService | ||
The Error object returned if an error occurred while loading. | VersionManagementService | ||
Represents the status of a load operation. | VersionManagementService | ||
The name of the version management service. | VersionManagementService | ||
The absolute URL of the REST endpoint for the version management service. | VersionManagementService |
Property Details
-
capabilities
capabilities VersionManagementServiceCapabilities
-
Describes the version management service's supported capabilities.
-
defaultVersionIdentifier
defaultVersionIdentifier VersionIdentifier
-
Contains the value for the default version's name and GUID.
-
loadError
loadError Errorreadonly
-
The Error object returned if an error occurred while loading.
- Default Value:null
-
loadStatus
loadStatus Stringreadonly
-
Represents the status of a load operation.
Value Description not-loaded The object's resources have not loaded. loading The object's resources are currently loading. loaded The object's resources have loaded without errors. failed The object's resources failed to load. See loadError for more details. Possible Values:"not-loaded" |"loading" |"failed" |"loaded"
- Default Value:not-loaded
-
name
name String
-
The name of the version management service.
-
url
url String
-
The absolute URL of the REST endpoint for the version management service. The URL may either point to a resource on ArcGIS Enterprise or ArcGIS Online.
Method Overview
Name | Return Type | Summary | Class |
---|---|---|---|
The alter operation allows you to change the geodatabase version's name, description, owner, and access permissions. | VersionManagementService | ||
| VersionManagementService | ||
| VersionManagementService | ||
Method used to change a layer's version/moment or network's version/moment. | VersionManagementService | ||
Method used to change a layer's version/moment or network's version/moment. | VersionManagementService | ||
Creates a new version given the following parameters. | VersionManagementService | ||
Deletes a version given the following parameters. | VersionManagementService | ||
Returns the current client lock type on a given version. | VersionManagementService | ||
This method will return the versionIdentifier given the guid of the version. | VersionManagementService | ||
This method will return the versionIdentifier given the name of the version. | VersionManagementService | ||
Method used to get extended information about a version. | VersionManagementService | ||
Returns information about a version or versions. | VersionManagementService | ||
Triggers the loading of the version management service instance. | VersionManagementService | ||
The Post operation allows the client to post the changes in their version to the default version. | VersionManagementService | ||
Use the reconcile operation to reconcile a branch version with the default version. | VersionManagementService | ||
This method redos the last edit made while in an edit session. | VersionManagementService | ||
Using the specified session ID an exclusive lock is obtained for the session on the version. | VersionManagementService | ||
Using the specified session ID an exclusive lock is obtained for the session on the version. | VersionManagementService | ||
Using the specified client generated session ID, a shared lock is obtained for the session if the version is not already being edited by another user/session. | VersionManagementService | ||
Using the specified client generated session ID, a shared lock is obtained for the session if the version is not already being edited by another user/session. | VersionManagementService | ||
Using the specified session id, the exclusive lock for the version is downgraded to a shared lock. | VersionManagementService | ||
Using the specified session id, the exclusive lock for the version is downgraded to a shared lock. | VersionManagementService | ||
The shared lock is released on the version. | VersionManagementService | ||
The shared lock is released on the version. | VersionManagementService | ||
This method undos the last edit made while in an edit session. | VersionManagementService |
Method Details
-
The alter operation allows you to change the geodatabase version's name, description, owner, and access permissions.
License
- This method requires the feature service and version management service to be published with ArcGIS Enterprise version 11.2 or higher.
- Organization members must be assigned a license for the ArcGIS Advanced Editing user type extension to use this method.
ParametersSpecificationversionIdentifier VersionIdentifierIdentifier for a version.
props ObjectContains properties that will be altered.
SpecificationownerName StringoptionalThe new owner name of the version.
versionName StringoptionalThe new name for the version.
description StringoptionalThe new description for the version.
access StringoptionalThe new access permissions of the version.
Possible Values:"hidden"|"private"|"protected"|"public"
ReturnsExample// Make sure the VersionManagementService is loaded await versionManagementService.load(); const result = await versionManagementService.alterVersion( { name: "newVersion", guid: "{49C6AC87-CDA8-46D4-A79B-449105981209}" }, { versionName: "versionName", ownerName: "newOwner", description: "newDescription", access: "public" } );
-
canRedo
canRedo(versionIdentifier){Boolean}
-
canRedo
may be used to verify that a redo operation is possible.ParameterversionIdentifier VersionIdentifierIdentifier for a version.
ReturnsType Description Boolean - Indicates whether a redo operation is possible.
-
canUndo
canUndo(versionIdentifier){Boolean}
-
canUndo
may be used to verify that an undo operation is possible.ParameterversionIdentifier VersionIdentifierIdentifier for a version.
ReturnsType Description Boolean - Indicates whether an undo operation is possible.
-
Method used to change a layer's version/moment or network's version/moment. Method allows changing version from named version to named version, or from default version to a moment and vice versa.
ParametersInput used to change version on layers or network.
fromVersion Date|VersionIdentifierCurrent Version or Date moment.
toVersion Date|VersionIdentifierIncoming Version or Date.
ReturnsExample// Initialize the VersionManagementService from a url const versionManagementService = new VersionManagementService({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/TestService/VersionManagementServer" }); const layer1 = new FeatureLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Wildfire/FeatureServer/12" }); const layer2 = new FeatureLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Wildfire/FeatureServer/13" }); const layers = [layer1, layer2]; // Make sure the VersionManagementService is loaded await versionManagementService.load(); await versionManagementService.changeVersion( layers, { name: "sde.DEFAULT", guid: "{13DEDC17-5867-4DBC-9855-0736C4C57162}"}, { name: "admin.version", guid: "{422D1B63-D795-4478-A4B1-AD6109377074}"} );
-
changeVersionWithResult
changeVersionWithResult(input, fromVersion, toVersion){Promise<Map<VersionAdapter, ServiceResult>>}
Since: ArcGIS Maps SDK for JavaScript 4.30VersionManagementService since 4.28, changeVersionWithResult added at 4.30. -
Method used to change a layer's version/moment or network's version/moment. Method allows changing version from named version to named version, or from default version to a moment and vice versa.
ParametersInput used to change version on layers.
fromVersion Date|VersionIdentifierCurrent Version or Date moment.
toVersion Date|VersionIdentifierIncoming Version or Date.
ReturnsType Description Promise<Map<VersionAdapter, ServiceResult>> - When resolved, returns a map of version adapter to result.
Examplerequire(["esri/versionManagement/versionAdapters/utils" , "esri/versionManagement/VersionManagementService", "esri/layers/FeatureLayer"], function (utils, VersionManagementService, FeatureLayer) { // Initialize the VersionManagementService from a url const versionManagementService = new VersionManagementService({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/TestService/VersionManagementServer" }); const layer1 = new FeatureLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Wildfire/FeatureServer/12" }); const layer2 = new FeatureLayer({ url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Wildfire/FeatureServer/13" }); const adapters = utils.createVersionAdapters([layer1, layer2]); // Make sure the VersionManagementService is loaded await versionManagementService.load(); await versionManagementService.changeVersionWithResult( adapters, { name: "sde.DEFAULT", guid: "{13DEDC17-5867-4DBC-9855-0736C4C57162}"}, { name: "admin.version", guid: "{422D1B63-D795-4478-A4B1-AD6109377074}"} ); });
-
createVersion
createVersion(props){Promise<VersionInfoExtendedJSON>}
-
Creates a new version given the following parameters.
ReturnsType Description Promise<VersionInfoExtendedJSON> - Contains information about newly created version.
Example// Make sure the VersionManagementService is loaded await versionManagementService.load(); // Create a version by passing the new version name, description, and access type set to 'public'. const version = await versionManagementService.createVersion({ versionName: "versionName", description: "description", access: "public" });
-
Deletes a version given the following parameters.
License
- This method requires the feature service and version management service to be published with ArcGIS Enterprise version 11.2 or higher.
- Organization members must be assigned a license for the ArcGIS Advanced Editing user type extension to use this method.
ParameterversionIdentifier VersionIdentifierIdentifier for a version.
ReturnsExample// Make sure the VersionManagementService is loaded await versionManagementService.load(); versionManagementService.deleteVersion({ name: "versionName", guid: "{422D1B63-D795-4478-A4B1-AD6109377075}" });
-
getLockType
getLockType(versionIdentifier){String}
-
Returns the current client lock type on a given version.
ParameterversionIdentifier VersionIdentifierIdentifier for a version.
ReturnsType Description String - Specifies the lock type on the version. Returns either
"edit"
,"none"
, or"read"
.
ExampleversionManagementService.getLockType({ name: "newVersion", guid: "{49C6AC87-CDA8-46D4-A79B-449105981209}" });
- Specifies the lock type on the version. Returns either
-
getVersionIdentifierFromGuid
getVersionIdentifierFromGuid(guid){VersionIdentifier}
-
This method will return the versionIdentifier given the guid of the version.
Parameterguid StringGUID of version.
ReturnsType Description VersionIdentifier - Returns VersionIdentifier.
-
getVersionIdentifierFromName
getVersionIdentifierFromName(name){VersionIdentifier}
-
This method will return the versionIdentifier given the name of the version.
Parametername StringName of version.
ReturnsType Description VersionIdentifier - Returns VersionIdentifier.
-
getVersionInfoExtended
getVersionInfoExtended(versionIdentifier){Promise<VersionInfoExtendedJSON>}
-
Method used to get extended information about a version.
ParameterversionIdentifier VersionIdentifierIdentifier for a version.
ReturnsType Description Promise<VersionInfoExtendedJSON> - Contains extended info about given version.
Example// Make sure the VersionManagementService is loaded await versionManagementService.load(); const version = await versionManagementService.getVersionInfoExtended({ guid: "{422D1B63-D795-4478-A4B1-AD6109377075}", name: "versionName" });
-
getVersionInfos
getVersionInfos(props){Promise<VersionInfoJSON[]>}
-
Returns information about a version or versions. If no parameters are passed, all versions will be returned.
ParametersSpecificationReturnsType Description Promise<VersionInfoJSON[]> - Contains info of versions.
Example// Make sure the VersionManagementService is loaded await versionManagementService.load(); const versions = await versionManagementService.getVersionInfos({ ownerFilter: "publisher1", includeHidden: true });
-
load
load(){Promise}
-
Triggers the loading of the version management service instance.
Fully loads the Version Management Service definition.
Returns
-
post
post(versionIdentifier){Promise<PostResult>}
-
The Post operation allows the client to post the changes in their version to the default version. A reconcile operation must be performed prior to post.
License
- This method requires the feature service and version management service to be published with ArcGIS Enterprise version 11.2 or higher.
- Organization members must be assigned a license for the ArcGIS Advanced Editing user type extension to use this method.
ParameterversionIdentifier VersionIdentifierIdentifier for a version.
ReturnsType Description Promise<PostResult> - Returns the result of the post.
Example// Make sure the VersionManagementService is loaded await versionManagementService.load(); const postResult = await versionManagementService.post({ guid: "{422D1B63-D795-4478-A4B1-AD6109377075}", name: "versionName" });
-
reconcile
reconcile(versionIdentifier, props){Promise<ReconcileResult>}
-
Use the reconcile operation to reconcile a branch version with the default version. The reconcile operation requires that you are the only user currently editing the version and remain so throughout the reconcile process until you save or post your edits. You must have full permissions to all the feature classes that have been modified in the version being edited. This operation detects differences between the branch version and the default version and flags these differences as conflicts.
License
- This method requires the feature service and version management service to be published with ArcGIS Enterprise version 11.2 or higher.
- Organization members must be assigned a license for the ArcGIS Advanced Editing user type extension to use this method.
ParametersSpecificationversionIdentifier VersionIdentifierIdentifier for a version.
props ObjectProperties used for a reconcile.
SpecificationabortIfConflicts BooleanSpecifies whether the reconcile should be aborted if conflicts are found. The default is false
conflictDetection StringSpecifies the conditions required for conflicts to occur are defined by object (row) or attribute (column).
Possible Values:"by-attribute"|"by-object"
withPost BooleanSpecifies if post will occur after calling reconcile. Causes post to occur immediately after reconcile, false by default.
ReturnsType Description Promise<ReconcileResult> - Returns the result of the reconcile.
Example// Make sure the VersionManagementService is loaded await versionManagementService.load(); const reconcileResult = await versionManagementService.reconcile({ guid: "{422D1B63-D795-4478-A4B1-AD6109377075}", name: "versionName" }, { abortIfConflicts: true, conflictDetection: "by-object", withPost: false });
-
This method redos the last edit made while in an edit session.
ParameterversionIdentifier VersionIdentifierIdentifier for a version.
-
Using the specified session ID an exclusive lock is obtained for the session on the version. The exclusive lock can only be obtained if no other shared or exclusive locks are present and the session currently holds a shared lock. The exclusive lock ensures read and write isolation for the session holding the lock. The exclusive lock is downgraded to a shared lock by using the stopEditing operation.
ParameterversionIdentifier VersionIdentifierIdentifier for a version.
ReturnsExample// Make sure the VersionManagementService is loaded await versionManagementService.load(); versionManagementService.startEditing({ name: "newVersion", guid: "{49C6AC87-CDA8-46D4-A79B-449105981209}" });
-
startEditingWithResult
startEditingWithResult(versionIdentifier){Promise<ServiceResult>}
Since: ArcGIS Maps SDK for JavaScript 4.30VersionManagementService since 4.28, startEditingWithResult added at 4.30. -
Using the specified session ID an exclusive lock is obtained for the session on the version. The exclusive lock can only be obtained if no other shared or exclusive locks are present and the session currently holds a shared lock. The exclusive lock ensures read and write isolation for the session holding the lock. The exclusive lock is downgraded to a shared lock by using the stopEditing operation.
ParameterversionIdentifier VersionIdentifierIdentifier for a version.
ReturnsType Description Promise<ServiceResult> - Specifies if start editing was successful.
Example// Make sure the VersionManagementService is loaded await versionManagementService.load(); versionManagementService.startEditingWithResult({ name: "newVersion", guid: "{49C6AC87-CDA8-46D4-A79B-449105981209}" });
-
Using the specified client generated session ID, a shared lock is obtained for the session if the version is not already being edited by another user/session.
ParameterversionIdentifier VersionIdentifierIdentifier for a version.
ReturnsExample// Make sure the VersionManagementService is loaded await versionManagementService.load(); versionManagementService.startReading({ name: "newVersion", guid: "{49C6AC87-CDA8-46D4-A79B-449105981209}" });
-
startReadingWithResult
startReadingWithResult(versionIdentifier){Promise<ServiceResult>}
Since: ArcGIS Maps SDK for JavaScript 4.30VersionManagementService since 4.28, startReadingWithResult added at 4.30. -
Using the specified client generated session ID, a shared lock is obtained for the session if the version is not already being edited by another user/session.
ParameterversionIdentifier VersionIdentifierIdentifier for a version.
ReturnsType Description Promise<ServiceResult> - Specifies if start reading was successful.
Example// Make sure the VersionManagementService is loaded await versionManagementService.load(); versionManagementService.startReadingWithResult({ name: "newVersion", guid: "{49C6AC87-CDA8-46D4-A79B-449105981209}" });
-
Using the specified session id, the exclusive lock for the version is downgraded to a shared lock. The saveEdits parameter specifies if the edits for the session should be saved (true) or discarded (false).
ParametersversionIdentifier VersionIdentifierIdentifier for a version.
saveEdits BooleanIf set to true edits will be saved, if false edits will not be saved.
ReturnsExample// Make sure the VersionManagementService is loaded await versionManagementService.load(); versionManagementService.stopEditing({ name: "newVersion", guid: "{49C6AC87-CDA8-46D4-A79B-449105981209}", saveEdits: true });
-
stopEditingWithResult
stopEditingWithResult(versionIdentifier, saveEdits){Promise<ServiceResult>}
Since: ArcGIS Maps SDK for JavaScript 4.30VersionManagementService since 4.28, stopEditingWithResult added at 4.30. -
Using the specified session id, the exclusive lock for the version is downgraded to a shared lock. The saveEdits parameter specifies if the edits for the session should be saved (true) or discarded (false).
ParametersversionIdentifier VersionIdentifierIdentifier for a version.
saveEdits BooleanIf set to true edits will be saved, if false edits will not be saved.
ReturnsType Description Promise<ServiceResult> - Specifies if stop editing was successful.
Example// Make sure the VersionManagementService is loaded await versionManagementService.load(); versionManagementService.stopEditingWithResult({ name: "newVersion", guid: "{49C6AC87-CDA8-46D4-A79B-449105981209}", saveEdits: true });
-
The shared lock is released on the version.
ParameterversionIdentifier VersionIdentifierIdentifier for a version.
ReturnsExample// Make sure the VersionManagementService is loaded await versionManagementService.load(); versionManagementService.stopReading({ name: "newVersion", guid: "{49C6AC87-CDA8-46D4-A79B-449105981209}" });
-
stopReadingWithResult
stopReadingWithResult(versionIdentifier){Promise<ServiceResult>}
Since: ArcGIS Maps SDK for JavaScript 4.30VersionManagementService since 4.28, stopReadingWithResult added at 4.30. -
The shared lock is released on the version.
ParameterversionIdentifier VersionIdentifierIdentifier for a version.
ReturnsType Description Promise<ServiceResult> - Specifies if stop reading was successful.
Example// Make sure the VersionManagementService is loaded await versionManagementService.load(); versionManagementService.stopReadingWithResult({ name: "newVersion", guid: "{49C6AC87-CDA8-46D4-A79B-449105981209}" });
-
This method undos the last edit made while in an edit session.
ParameterversionIdentifier VersionIdentifierIdentifier for a version.
Type Definitions
-
PostResult
PostResult Object
-
This contains information about the post result.
-
ReconcileResult
ReconcileResult Object
-
This contains information about the reconcile result.
-
ServiceResult
ServiceResult Object
Since: ArcGIS Maps SDK for JavaScript 4.30VersionManagementService since 4.28, ServiceResult added at 4.30. -
The response returned after performing an operation using the VersionManagementService.
-
VersionAdapter
VersionAdapter Object
Since: ArcGIS Maps SDK for JavaScript 4.30VersionManagementService since 4.28, VersionAdapter added at 4.30. -
Contains information on versionable items such as type, current gdbVersion, current historic moment, and the featureService url of the versionable item.
- Properties
-
versionableItem FeatureLayer|Network|SubtypeGroupLayer
Contains items with the
gdbVersion
property.type StringThe type of versionable item.
Possible Values:"feature"|"subtype-group"|"network"
gdbVersion StringThe current gdbVersion of a versionable item.
historicMoment DateThe current moment of a versionable item.
featureServiceUrl StringA read only property that contains the FeatureService url of a versionable item.
-
VersionIdentifier
VersionIdentifier Object
Since: ArcGIS Maps SDK for JavaScript 4.30VersionManagementService since 4.30, VersionIdentifier added at 4.30. -
Holds the name and guid of a version.
-
VersionIdentifier
VersionIdentifier Object
-
Holds the name and guid of a version.
-
VersionInfoExtendedJSON
VersionInfoExtendedJSON Object
-
This contains extended information about a given version.
- Properties
-
versionIdentifier Object
The identifier of a version.
description StringDescription of the version.
access StringThe access type permissions of the version.
Possible Values:"hidden"|"private"|"protected"|"public"
versionId StringThe id of the version that was edited.
creationDate NumberThe date the version was created on.
modifiedDate NumberThe date when the version was last modified or changed.
reconcileDate NumberThe date when the version was last reconciled with the parent version or the default version.
evaluationDate NumberThe date when the version was last evaluated for conflicts or discrepancies during the reconciliation process.
previousAncestorDate NumberThe date of the most recent ancestor version, if applicable.
commonAncestorDate NumberThe date of the common ancestor version, which is the shared ancestor between two or more versions during the reconciliation process.
isBeingEdited BooleanSpecifies if the version is currently being edited.
isBeingRead BooleanSpecifies if the version is currently being read.
hasConflicts BooleanSpecifies if the version is has conflicts.
hasUninspectedConflicts BooleanSpecifies if the version has UninspectedConflicts.
isLocked BooleanSpecifies if the version currently has a lock.
lockOwner StringSpecifies which user is the current lock owner.
lockDate NumberSpecifies the date at which the version was locked.
-
VersionInfoJSON
VersionInfoJSON Object
-
This contains basic information about a given version.
- Properties
-
versionIdentifier Object
The identifier of a version.
description StringDescription of the version.
access StringAccess type accepts values of private, public, hidden, and protected.
versionId StringThe id of the version that was edited.
creationDate NumberThe date the version was created on.
modifiedDate NumberThe date when the version was last modified or changed.
reconcileDate NumberThe date when the version was last reconciled with the parent version or the default version.
evaluationDate NumberThe date when the version was last evaluated for conflicts or discrepancies during the reconciliation process.
previousAncestorDate NumberThe date of the most recent ancestor version, if applicable.
commonAncestorDate NumberThe date of the common ancestor version, which is the shared ancestor between two or more versions during the reconciliation process.
-
VersionManagementServiceCapabilities
VersionManagementServiceCapabilities Object
-
Describes the version management service's supported capabilities.
- Properties
-
supportsConflictDetectionByAttribute Boolean
Indicates whether the service supports conflict detection based on attribute values during editing operations.
supportsPartialPost BooleanIndicates whether the service supports partial posting, allowing users to post only a subset of edits instead of the entire set.
supportsDifferencesFromMoment BooleanIndicates whether the service supports retrieving differences in data from a specific moment in time.
supportsDifferencesWithLayers BooleanIndicates whether the service supports retrieving differences in data between different layers or feature classes.
supportsAsyncReconcile BooleanIndicates whether the service supports asynchronous reconcile operations, allowing users to reconcile conflicting edits asynchronously.
supportsAsyncPost BooleanIndicates whether the service supports asynchronous posting of edits, allowing users to post edits asynchronously.
supportsAsyncDifferences BooleanIndicates whether the service supports asynchronous retrieval of differences in data, allowing users to retrieve differences asynchronously.