1

C# で Managed EWS API を使用して、電子メール/カレンダー クライアントを実装しています。更新を処理するために、プル通知を使用しています。定期的なシリーズの「削除」イベントを適切に処理する方法を見つけようとしています。このイベントは、シリーズをごみ箱フォルダーに移動すると表示されるため、技術的には移動イベントです。

定期的なシリーズを扱う場合、取得するイベントは常に定期的なマスター用です。マスター ID と繰り返し情報を使用して、関心のある個々の発生をすべて同期することにより、「追加」ケースを正常に実装しましたが、削除/削除ケースを把握できませんでした。

これまでに 2 つの主なアプローチを調査しました。

1) 変更キーの再利用を試みます。定期的なシリーズでは、すべてのインスタンスの変更キーは同じです。そこで、変更キーが一致する予定をキャッシュで検索してみました。ただし、このシナリオでは変更キーは一致しません。イベントを取得するまでに、シリーズはごみ箱フォルダーに移動され、新しい変更キーがあるためです。

2) 移動/削除イベントの定期的なマスターを使用して、キャッシュにある予定にバインドし、これらの発生の一意の ID に基づいて削除を試みます。これは #1 と同じ理由で機能しません。イベントを取得するまでに、シリーズは既に移動されており、すべてのイベントに新しい ID が割り当てられています。そのため、ルックアップの新しい ID はどれも、私が持っている古い ID と一致しません。

完全を期すために、イベントで OldItemId を使用しましたが、予想どおり、この ID でバインドを実行することはできません。そのアイテムはサーバーに存在しなくなったためです。

要するに、定期的なシリーズのゴミ箱への移動イベントを実際の元の定期的なシリーズにリンクする方法を見つけることができませんでした。これは不可能ですか、それとも何か不足していますか?

ここで、定期的な予定のマスター ID のプロアクティブなキャッシュをテストします。つまり、同期する予定ごとに、それがシリーズの一部であるかどうかをテストし、そのシリーズの繰り返しマスターの ID を読み込みます。次に、削除/移動イベントを取得すると、イベントの OldItemId をキャッシュされた定期的なマスター状態にリンクし、関連するすべてのオカレンスを削除できるはずです。

4

1 に答える 1

1

そのため、私が調査していた最後の解決策は、私が使用したものになりました。予定を同期するとき、それらがシリーズの一部であるかどうかを確認し、定期的なマスターを検索してその状態をキャッシュします。その後、イベントの削除/移動が表示されたら、マスター予定 ID のマップを検索して、そのアクションが一連の予定であるかどうかを確認できます。

この余分な状態追跡をすべて行うことを避けたいと思っていましたが、削除イベントから、それなしで同期した個々の発生へのリンクを作成する方法を見つけることができませんでした。

于 2013-06-06T07:37:22.390 に答える