// Partial posting allows developers to post a subset of changes made in a version.
// One sample use case is an electric utility that uses a version to design the facilities in
// a new housing subdivision. At some point in the process, one block of new houses have been
// completed, while the rest of the subdivision remains unbuilt. Partial posting allows the user
// to post the completed work, while leaving not yet constructed features in the version to be
// posted later. Partial posting requires a branch-versioned feature service using ArcGIS
// Enterprise 10.9 and higher
// Specify a set of features that were constructed
QueryFilter constructedFilter = new QueryFilter()
{
WhereClause = "ConstructedStatus = 'True'"
};
// This selection represents the inserts and updates to the support
// structure feature class that we wish to post
using (Selection constructedSupportStructures = supportStructureFeatureClass.Select(constructedFilter, SelectionType.ObjectID, SelectionOption.Normal))
{
// Specifying which feature deletions you wish to post is slightly trickier, since you cannot issue
// a query to fetch a set of deleted features Instead, a list of ObjectIDs must be used
using (Selection deletedSupportStructures = supportStructureFeatureClass.Select(
null, SelectionType.ObjectID, SelectionOption.Empty))
{
deletedSupportStructures.Add(deletedSupportStructureObjectIDs); //deletedSupportStructureObjectIDs is
//defined as List<long>
//Perform the reconcile with partial post
//At 2.x -
//ReconcileDescription reconcileDescription = new ReconcileDescription();
//reconcileDescription.ConflictDetectionType = ConflictDetectionType.ByColumn;
//reconcileDescription.ConflictResolutionMethod = ConflictResolutionMethod.Continue;
//reconcileDescription.ConflictResolutionType = ConflictResolutionType.FavorEditVersion;
//reconcileDescription.PartialPostSelections = new List<Selection>() { constructedSupportStructures, deletedSupportStructures };
//reconcileDescription.WithPost = true;
//ReconcileResult reconcileResult = designVersion.Reconcile(reconcileDescription);
ReconcileOptions reconcileOptions = new ReconcileOptions();//reconcile against Default
reconcileOptions.ConflictDetectionType = ConflictDetectionType.ByColumn;
reconcileOptions.ConflictResolutionMethod = ConflictResolutionMethod.Continue;
reconcileOptions.ConflictResolutionType = ConflictResolutionType.FavorEditVersion;
PostOptions postOptions = new PostOptions();//post against Default
postOptions.PartialPostSelections = new List<Selection>() {
constructedSupportStructures, deletedSupportStructures };
postOptions.ServiceSynchronizationType = ServiceSynchronizationType.Synchronous;
ReconcileResult reconcileResult = designVersion.Reconcile(reconcileOptions, postOptions);
//TODO process result(s)
}
}