SharePoint Designer で作成したワークフローを別サイトにコピーする
通常のリスト(またはライブラリ)に SharePoint Designer で作成したワークフローを加えたコンテンツの場合、通常の方法では、そのコンテンツを他サイトに移動、もしくはコピーすることは出来ません。
リストやサイトのテンプレート化では、ワークフローを含むことが出来ませんし、そもそも、SharePoint Designer のワークフローは、内部にリスト情報を GUID で持っているため、GUID の違うリストでは動きません。
このエントリでは、サイトに作成したリストとワークフローを、別のサイトにコピーする方法をご紹介します。
特定のリストとワークフローをセットでエクスポート/インポートするには、SharePoint Designer の機能である「個人webパッケージ」を利用するのが最も手軽です。
Designer でサイトを開き、[ファイル]→[エクスポート]→[個人webパッケージ] を実行します。
Web パッケージのエクスポートダイアログが表示されます。
この画面で、パッケージ化したいコンテンツを[追加]するだけです。
ただし、注意点として、リスト/ライブラリ単位で追加した場合、ライブラリは登録されている全てのファイルもパッケージに含まれますが、リストの場合、アイテムはパッケージに含まれません。
つまり、リストアイテムをコピーする目的では「個人webパッケージ」パッケージは利用できません。
また、ライブラリで、ファイルを含まずに設計情報だけをパッケージ化したい場合は、配下の Form を指定します。
子要素が追加されると、その要素が必要とする親要素は自動的に追加されます。
追加した要素の中から、選択的に[削除]することも可能です。
これを応用すれば、特定のビュー設計のみをエクスポートすることも出来ます。
必要なリストとワークフローを追加したら、[OK] をクリック。
保存先を指定すると、エクスポートが開始されます。
出力ファイルの拡張子は .fwp です。
保存に成功したら、次はインポートです。
Designer でインポート先のサイトを開きます。
[ファイル]→[インポート]→[個人用webパッケージ]を実行します。
出力した .fpw ファイルを指定して [開く]。
[インポート] をクリックするとインポートが始まります。
なお、もしインポート先のサイトに既に同じ URL のコンテンツが存在した場合、インポートを開始してすぐに次のダイアログが表示されます。
[OK] すると、既存コンテンツの URL が自動的に変更されます。
URL は Designer を使えば後から変更できますので、あまり神経質になる必要はないでしょう。
インポート(展開)に成功したら、インポートしたリストをワークフローを確認します。
これでコンテンツのインポートは完了です。
しかし、この段階では、ワークフローはリストとの紐付け、および列指定、ワークフロー参照(つまり設計全般)が壊れてしまっているため、動作しません。またリストもワークフローを認識していません。
以下の手順で、ワークフローの設定ファイルを編集する必要があります。
手順自体は、前回のエントリ「SharePoint Designner で作成したワークフローをサイト内の別リストにコピーする」と同様ですので、詳細は省略します。
1.リストの GUID を取得する。
2.エクスポート元のリストの GUID を取得する。
3.ワークフローの構成ファイル hogehoge.xoml.wfconfig.xml を編集して、元リストの GUID を新しいリストの GUID に置換。
4.同様に、hogehoge.xoml を編集して GUID を置換。
5.ワークフローを編集して [完了] する
ただし、この方法では、前述のとおり、リストアイテムはコピーできません。
また、ファイルについても「新規作成」扱いになるため、更新日時や更新者は全てインポートを実行した時刻、ユーザになってしまいます。
同様に、セキュリティ設定も引き継がれません。
あくまで、設計のコピー機能、という位置づけですね。
なお、stsadm.exe によるサイト単位のエクスポート/インポートなら、これらの情報を保持できます。
しかし、stsadm.exe を利用した場合でも、ワークフローの設定が「壊れて」しまうのは同じですので、上記と同様、設定ファイルの編集が必要になります。
SharePoint Designner で作成したワークフローをサイト内の別リストにコピーする
login