ISynchronousNotifyingChangeApplier2::ApplyChanges
Executa detecção e manipulação de conflitos, aplicação de alterações e gerencia o log de conflitos de um lote de alterações.
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] A política a ser usada para resolver conflitos de simultaneidade.
- collisionPolicy
[in] A política a ser usada para resolver conflitos de restrição de colisão.
- pSourceChanges
[in] O lote de alterações do provedor de origem.
- pUnkDataRetriever
[in] Um objeto que pode ser usado para recuperar dados de item a partir da réplica de origem.
- pDestinationVersions
[in] Uma lista de alterações que contém as versões dos itens que são armazenados na réplica de destino. Esses itens correspondem aos itens em pSourceChanges.
- pDestinationKnowledge
[in] O conhecimento da réplica de destino.
- pDestinationForgottenKnowledge
[in] O conhecimento esquecido da réplica de destino.
- pChangeApplierTarget
[in] O objeto que será chamado para salvar alterações e conflitos.
- pConflictLogAccess
[in] O log de conflitos no qual são armazenados conflitos adiados e temporários.
- pSessionState
[in] Informações de estado sobre a sessão atual.
- pCallback
[in] Retornos de chamada que receberão notificações sobre eventos de aplicação de alterações.
Valor de retorno
S_OK
E_INVALIDARG quando resolutionPolicy ou collisionPolicy não for um 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
Comentários
Normalmente, esse método é chamado por um provedor a partir de seu método IKnowledgeSyncProvider::ProcessChangeBatch.
Esse método detecta conflitos de simultaneidade que ocorrem entre as alterações enviadas em pSourceChanges e os itens correspondentes na réplica de destino. Ele resolve qualquer conflito de simultaneidade de acordo com a política especificada por resolutionPolicy. Quando conflitos de restrição de colisão são relatados pelo provedor de destino, esse método os resolve de acordo com a política especificada por collisionPolicy. Se nenhuma política de resolução de conflitos estiver definida, esse método notificará o aplicativo de um conflito, e o aplicativo especificará uma ação de resolução de conflitos. Se necessário, esse método chama métodos em pChangeApplierTarget para salvar alterações na réplica de destino e para salvar conflitos não resolvidos.
Se pDestinationVersions for NULL, Sync Framework chamará IASynchronousNotifyingChangeApplierTarget::GetDestinationVersion em pChangeApplierTarget para cada item em pSourceChanges.
O aplicador de alterações ajuda a gerenciar o log de conflitos especificado por pConflictLogAccess, resolvendo conflitos no log e removendo conflitos obsoletos do log. O aplicador de alterações também pode usar o log de conflitos para armazenar conflitos temporários que ocorrem em consequência dos conflitos de restrição de mesclagem. Qualquer conflito temporário adicionado ao log será removido antes do término da sessão de sincronização.
Consulte também
Referência
Interface ISynchronousNotifyingChangeApplier2