SharePoint 2007/2010 で一括削除操作を実行しようとしています。
List.asmx -> UpdateListItems を使用して次を実行すると、動作が混在します。
`<Batch OnError="Return" PreCalc="TRUE">
<Method ID="87c970a3000c4e789a9c49ed43768865" Cmd="Delete">
<Field Name="ID">18</Field>
<Field Name="FileRef">
http://vs-dev-sp2010/list1/DocLib/New
Document-2.docx</Field>
</Method>
<Method ID="46e335183be64367a34c178772a86d92" Cmd="Delete">
<Field Name="ID">6</Field>
<Field Name="FileRef">
http://vs-dev-sp2010/ list1/DocLib /New
Document.docx</Field>
</Method>
</Batch>`
最初のアイテムに対する操作は成功し (削除されます)、2 番目のアイテムは失敗します (別のユーザーにチェックアウトされます)。これにより、トランザクションのロールバックが非常に困難 (不可能?) になります。削除されたアイテムは、バージョン履歴、作成者、および作成日時を一緒に墓場に持っていくからです。SharePoint ではごみ箱を「無効にする」ことができるため、削除されたアイテムが完全になくなる可能性があります。SharePoint が失敗した操作をロールバックし、バッチ全体に対して成功または失敗のいずれかを返すことを期待していました。ただし、私が観察している動作は、トランザクションが部分的に成功することです。
また、上記のアイテムがコンテナー (フォルダー) にある場合、バッチ全体が失敗することも観察しています (これは私が期待していた動作です)。
ファイルのチェックアウトはバッチ化できないため (バッチには数千のファイルが存在する可能性があるため)、悲観的な同時実行を強制することはできません。チェックアウトをバッチ処理できたとしても、チェックアウト操作自体がカスタム ワークフローをトリガーする可能性があります。
SharePoint でのバッチ削除操作のアトミックな動作を強制するプロパティを知っている人はいますか?送信している要求に欠陥があるか、アイテムをバッチ削除するためのより良い解決策がありますか?