Calendário do Exchange: o ConversationId é um bom identificador de eventos mestre para as ocorrências FindItem?
Coleto os compromissos em um calendário do Exchange com um SOAPFindItem
ligar. Isso retorna eventos únicos e ocorrências (personalizadas) de eventos recorrentes.
Ao processar estes eu usoGetItem
recuperar o ID do evento principal para cada ocorrência (ItemType
=citOccurrence
) Depois disso, posso determinar se ainda preciso armazenar o evento principal internamente (e recuperar todos os seus detalhes) ou se já o fiz.
Porém, com muitas ocorrências do mesmo evento recorrente (especialmente com eventos intermináveis) em um período mais longo.FindItem
período, isso significa ter que fazer muitoGetItem
chamadas 'get master' para o servidor (com a primeira resultando em 'você deve armazenar o master' e todas as outras em 'você já possui esse master').
Analisei as propriedades retornadas comBaseShape
AllProperties
e parece queConversationId
poderia ser uma propriedade que eu possa usar para identificar ocorrências do mesmo evento mestre. Dados de amostra para eventos de teste:
<t:ItemId Id="AAMk[snip]AAEA==" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMZ/"/>
<t:Subject>Occurrence</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQANxmlGQ/3ahArhg+mv+UJSo="/>
<t:ItemId Id="AAMk[snip]AAEA==" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMZ/"/>
<t:Subject>Modified occurrence</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQANxmlGQ/3ahArhg+mv+UJSo="/>
<t:ItemId Id="AAMk[snip]RrAAA=" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMaA"/>
<t:Subject>New single event</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQAMRNQtffkIdFvs73IVVJObM="/>
<t:ItemId Id="AAMk[snip]AAEA==" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMZ/"/>
<t:Subject>Occurrence</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQANxmlGQ/3ahArhg+mv+UJSo="/>
<t:ItemId Id="AAMk[snip]RtAAA=" ChangeKey="DwAAABYAAABs2/j8u1jEQJde5BzoAC+PAAC5aMaG"/>
<t:Subject>Meeting</t:Subject>
<t:ConversationId Id="AAQkADgyMTc3ZTI4LTU1ZmItNGI5Yy04YzVjLTk2MjFiZjY5ODkyYgAQAOZVB7gVSTJCtmZMMcXVBfQ="/>
Pergunta, questão:ÉConversationId
uma propriedade confiável para usar para isso?
Notas:
Ao ler ao redor, tenho a impressão de que é usado principalmente para mensagens, não para compromissos.
Há uma pergunta semelhante aqui mas isso não responde definitivamente ao meu.
Além disso,existem alguns problemas ao recuperar o ConversationId no Exchange 2007, maseles parecem solucionáveis.
(Editado para adicionar) Um teste rápido mostra queConversationID
, UID
, e até mesmoInstanceIndex
são todos candidatos. Qual é o 'definitivo'?