ドキュメント ライブラリの列に特定の値が設定されている場合、サイト コレクションのドキュメント ライブラリから SharePoint 2010 の別のサイト コレクションのドキュメント ライブラリにドキュメントをプログラムで移動 (アーカイブ) する必要があります。
イベント レシーバーでこのシナリオのコードを記述できますか? 他に方法はありますか?
誰かが関連するコードやリンクを持っている場合は、共有してください。
前もって感謝します!
ドキュメント ライブラリの列に特定の値が設定されている場合、サイト コレクションのドキュメント ライブラリから SharePoint 2010 の別のサイト コレクションのドキュメント ライブラリにドキュメントをプログラムで移動 (アーカイブ) する必要があります。
イベント レシーバーでこのシナリオのコードを記述できますか? 他に方法はありますか?
誰かが関連するコードやリンクを持っている場合は、共有してください。
前もって感謝します!
この記事によると、SharePoint のSPExportクラスを試すことができます。SharePoint アイテムのコピーまたは移動は、SharePoint UI で行う操作のほとんどが、この API を内部的に使用してタスクを達成しているように見えます。また、このアプローチは、一度だけ実行しようとしているか、反復プロセスになるかによって異なります。
おそらくコピー操作を行ってから、元のファイルを削除できます。
あるサイトから別のサイトへのファイルのコピーについて説明している次のリンクをご覧ください。
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfilecollection.aspx
この例では、1 つのサイト コレクションを使用しています。ただし、ソース ドキュメントをバイト配列に変換すると、いつでもターゲット サイト コレクションをインスタンス化し、そのサイト コレクション内のドキュメント ライブラリにバイナリ データを追加できます。
確かに、コピー操作はイベント レシーバー内で機能するはずです。ただし、レシーバー内でファイルを削除しようとするとどうなるかはわかりません (同時実行の問題が発生する可能性があります)。削除が機能しない場合は、1 回限りのタイマー ジョブを起動してファイルを削除することを検討してください (これは別のプロセスで発生します)。