ISynchronousNotifyingChangeApplier2::ApplyChanges

Realiza la detección de conflictos, el control de conflictos y la aplicación de cambios, y administra el registro de conflictos correspondiente a un lote de cambios.

Sintaxis

HRESULT ApplyChanges(
  CONFLICT_RESOLUTION_POLICY resolutionPolicy,
  COLLISION_CONFLICT_RESOLUTION_POLICY collisionPolicy,
  ISyncChangeBatch * pSourceChanges,
  IUnknown * pUnkDataRetriever,
  IEnumSyncChanges * pDestinationVersions,
  ISyncKnowledge * pDestinationKnowledge,
  IForgottenKnowledge * pDestinationForgottenKnowledge,
  ISynchronousNotifyingChangeApplierTarget * pChangeApplierTarget,
  IConflictLogAccess * pConflictLogAccess,
  ISyncSessionState * pSessionState,
  ISyncCallback * pCallback);

Parámetros

  • resolutionPolicy
    [in] Directiva que se usa para resolver conflictos de simultaneidad.

  • collisionPolicy
    [in] Directiva que se usa para resolver conflictos de restricción de colisión.

  • pSourceChanges
    [in] Lote de cambios del proveedor de origen.

  • pUnkDataRetriever
    [in] Objeto que se puede usar para recuperar datos de elemento de la réplica de origen.

  • pDestinationVersions
    [in] Lista de cambios que contiene las versiones de los elementos que se encuentran almacenados en la réplica de destino. Estos elementos corresponden a los elementos de pSourceChanges.

  • pDestinationKnowledge
    [in] Conocimiento de la réplica de destino.

  • pDestinationForgottenKnowledge
    [in] Conocimiento olvidado de la réplica de destino.

  • pChangeApplierTarget
    [in] Objeto al que se llamará para guardar los cambios y los conflictos.

  • pConflictLogAccess
    [in] Registro de conflictos donde se almacenan los conflictos diferidos y temporales.

  • pSessionState
    [in] Información de estado sobre la sesión actual.

  • pCallback
    [in] Devoluciones de llamada que recibirán notificaciones sobre eventos de aplicación de cambios.

Valor devuelto

  • S_OK

  • E_INVALIDARG si resolutionPolicy o collisionPolicy no es un valor válido.

  • E_OUTOFMEMORY

  • E_POINTER

  • SYNC_E_BATCH_NEEDS_KNOWLEDGE

  • SYNC_E_OBJECT_NEEDS_STATE

  • SYNC_E_CHANGE_COUNT_MISMATCH

  • SYNC_E_CHANGE_NEEDS_KNOWLEDGE

  • SYNC_E_ITEM_HAS_NO_CHANGE_UNITS

  • SYNC_E_ITEM_MUST_EXIST

  • SYNC_E_CHANGE_NOT_IN_KNOWLEDGE

  • SYNC_E_CHANGE_UNIT_COUNT_MISMATCH

  • SYNC_E_KNOWLEDGE_DECREASED

  • SYNC_E_NOT_EXPECTED_CHANGE

Notas

Normalmente, un proveedor llama a este método desde su método IKnowledgeSyncProvider::ProcessChangeBatch.

Este método detecta los conflictos de simultaneidad que se producen entre los cambios que se envían en pSourceChanges y los elementos correspondientes de la réplica de destino. Resuelve los conflictos de simultaneidad según la directiva especificada por resolutionPolicy. Cuando el proveedor de destino notifica conflictos de restricción de colisión, este método los resuelve según la directiva especificada por collisionPolicy. Si no hay establecida ninguna directiva de resolución de conflictos, este método notifica a la aplicación un conflicto y la aplicación especifica una acción de resolución de conflictos. Si es necesario, este método llama después a los métodos de pChangeApplierTarget para guardar los cambios en la réplica de destino y los conflictos no resueltos.

Si pDestinationVersions es NULL, Sync Framework llama a IASynchronousNotifyingChangeApplierTarget::GetDestinationVersion en pChangeApplierTarget para cada elemento en pSourceChanges.

El aplicador de cambios ayuda a administrar el registro de conflictos especificado por pConflictLogAccess, resolviendo los conflictos del registro y quitando los conflictos obsoletos del registro. El aplicador de cambios también puede utilizar el registro de conflictos para almacenar los conflictos temporales que se producen como consecuencia de la combinación de conflictos de restricción. Cualquier conflicto temporal agregado al registro se quitará antes de que finalice la sesión de sincronización.

Vea también

Otros recursos

Interfaz ISynchronousNotifyingChangeApplier2

Controlar los conflictos