次の方法で共有


サンドボックス ソリューションで宣言型ワークフローを作成および展開する

ここでは、宣言型ワークフロー ("コードなし" のワークフローと呼ばれることもあります) をサンドボックス ソリューションに展開する方法について説明します。

最終更新日: 2011年4月13日

適用対象: SharePoint Foundation 2010

SharePoint Online で使用可能

宣言型ワークフローは Microsoft SharePoint Designer で作成され、コンパイル済みの C# または Microsoft Visual Basic コードではなく 1 つ以上の XOML ファイルとして保存されます。その後、Web サイトの [サイト リソース] ライブラリに SharePoint ソリューション パッケージ (.wsp file) として保存されます。このファイルは、すべてのサイト コレクションにサンドボックス ソリューションとしてダウンロードし、インストールできます。実行時、XOML マークアップはコードに変換され、コンパイルおよび実行されます。宣言型ワークフローに関する考慮事項を次に示します。

  • シーケンシャル ワークフローのみを SharePoint Designer で作成できます。ステート マシンのワークフローは作成できません。

  • リスト ワークフローまたはサイト ワークフローではなく再利用可能なワークフローのみを、サンドボックス ソリューションとして SharePoint Designer に保存できます。

  • SharePoint Designer が SharePoint Server 2010 ファームの Web サイトで動作していたときに作成された宣言型ワークフローは SharePoint Foundation ファームのサイト コレクションには展開できません。

  • グローバルに再利用可能ワークフローとして発行されたワークフローは、サンドボックス ソリューションとして直接 SharePoint Designer に保存できません。ただし、これをグローバルでないワークフローとしてコピーし、サンドボックス ソリューションとして保存することはできます。詳細については、以降のセクションを参照してください。

  • [サイト リソース] ライブラリからダウンロードした宣言型ワークフローは Microsoft Visual Studio にインポートし、サンドボックス ソリューションとしてインストールされる前に変更できます。ただし、このプロセスには相違点がいくつかあります。詳細については、以降のセクションを参照してください。

SharePoint Designer で宣言型ワークフローを作成するには

  1. 開発環境で、ワークフローで存在することが想定されているすべてのエンティティ (リスト、コンテンツ タイプなど) が含まれる Web サイトがあることを確認します。

  2. ブラウザーで Web サイトに移動し、[サイトの操作] メニューで [SharePoint Designer で編集] を選択します。SharePoint Designer が起動します。

  3. ナビゲーション ウィンドウで [ワークフロー] をクリックします。

  4. リボンで [再利用可能なワークフロー] をクリックします。表示されたダイアログ ボックスで、そのワークフローに適切な名前と説明を指定し、[OK] をクリックします。

  5. 現在のサイトでのみ使用されるワークフローと同じように、ワークフローを作成します。このワークフローは他のサイト コレクションに展開できるサンドボックス ソリューションとしてパッケージ化しますが、これがワークフローの作成方法に影響を及ぼすことはありません。

  6. 推奨: ワークフローが完了したら、それを保存し、リボンの [発行] ([グローバルに発行] ではありません) をクリックします。Web サイトでワークフローをテストし、必要に応じて再編集します。

ワークフローを SharePoint ソリューションとしてパッケージ化するには

  1. ワークフローが完了したら、SharePoint Designer でそのワークフローの [ワークフローの設定] ビューを開きます (編集モードの場合は、リボンで [ワークフローの設定] をクリックします)。

  2. リボンで [テンプレートとして保存] をクリックします。ワークフローが SharePoint ソリューション パッケージ (.wsp ファイル) として Web サイトの [サイト リソース] ライブラリに保存されます。

    注意

    SharePoint Designer でグローバルに発行されたワークフローをパッケージ化するとき、[テンプレートとして保存] ボタンは無効になっています。ワークフローをパッケージ化するには、そのワークフローを最初にコピーする必要があります。

    1. SharePoint Designer のナビゲーション ウィンドウの [グローバルに再利用可能なワークフロー] ノードでワークフローを右クリックし、[コピーと変更] を選択します。

    2. 表示されたダイアログ ボックスでそのワークフローに適切な名前を指定し、[OK] をクリックします。

    3. リボンで [保存] をクリックします。新しいワークフローが、テンプレートとして保存できるグローバルでないワークフローとして自動的に作成されます。

Visual Studio でワークフローを変更するには (オプション)

  1. ワークフローのソリューション パッケージを [サイト リソース] ライブラリからダウンロードします。

  2. Visual Studio で、[SharePoint ソリューション パッケージのインポート] テンプレートを使用してプロジェクトを開始します。[再利用可能なワークフローのインポート] テンプレートは使用しないでください。このテンプレートでは宣言型ワークフローがコード化ワークフローに自動的に変換されます。このテンプレートをサンドボックス ソリューションとして展開することはできません。

    注意

    この手順の以降の作業は、「How to: Import and Package a Declarative Workflow in Visual Studio」で説明する手順でも行うことができます。この代替手順の利点は、プロジェクト内のフィーチャーが [サイト] を対象範囲とするように設定されている場合、サイト コレクションのフィーチャー ギャラリーのフィーチャーをアクティブ化すると、サイト コレクション内のすべての Web サイトでそのフィーチャーを使用できるという点です。このとき、フィーチャーが使用されるすべての Web サイトで個別にアクティブ化する必要はありません。一方、代替方法の欠点は、作成されたソリューション パッケージ (.wsp ファイル) を Microsoft SharePoint Server サイト コレクションにしかインストールできない点です。SharePoint Foundation サイト コレクションにはインストールすることができません。以降の手順を実行することで、SharePoint サイト コレクションに展開できるパッケージが作成されますが、フィーチャーは、そのフィーチャーが使用される各 Web サイトで個別にアクティブ化する必要があります。

  3. SharePoint カスタマイズ ウィザードで、デバッグ用のローカル サイトを指定します。これは、ワークフローが作成されたときに SharePoint Designer と一緒に動作していたサイトである必要はありません。

  4. サンドボックス ソリューションを選択し、[次へ] をクリックします。

  5. 次のウィザード ページで、手順 1. でダウンロードしたソリューション パッケージへのパスを入力し、[次へ] をクリックします。

  6. 次のウィザード ページで、すべてのアイテムを選択したままにして (既定)、[完了] をクリックします。プロジェクトを開くと、Visual Studio には、C# も Visual Basic コード ファイルもないことがわかります。代わりに、ワークフローは .xoml ファイルで定義されます。また、Visual Studio がプロジェクトに対してフィーチャーを作成したことも確認できます。

  7. ソリューション エクスプローラーで *.feature ファイルをダブルクリックしてフィーチャー デザイナーを開き、フィーチャーの範囲を [Web] に設定します。

    注意

    その他に [サイト] を範囲として設定できますが、[サイト] を選択した場合、ワークフローのフィーチャーはサイト コレクションのルート Web サイトでしかアクティブ化できません。これにより、ワークフローはサブサイトでは使用できなくなります。[Web] を対象範囲にすると、フィーチャーはサイト コレクションのすべての Web サイト (ルート Web サイトを含む) のフィーチャー ギャラリーで使用できるようになります。フィーチャーは、そのフィーチャーが使用される各 Web サイトで個別にアクティブ化する必要があります。

  8. パッケージ化する要素を追加し、ワークフローと共に展開します (サンドボックス ソリューションに展開できる要素のみを含めるようにしてください)。たとえば、あるカスタム コンテンツ タイプが存在することがワークフローで想定されている場合、ワークフローの展開先サイト コレクションにそのコンテンツ タイプがないときは、そのコンテンツ タイプを Visual Studio プロジェクトに追加することを検討する必要があります。

  9. ソリューション エクスプローラーで *.oxml.wfconfig.xml ファイルを開きます。

  10. Template 要素の Visibility 属性に値 "Public" が設定されていることを確認します。設定されていない場合は、値を "Public" に変更します。

    注意

    SharePoint Designer は、常に特定の Web サイトと動作していなければなりません。その Web サイトを使用して、他のサイトに展開する再利用可能なワークフローを作成する場合でもこれは変わりません。SharePoint Designer でワークフローの開発中に任意の時点で、(前の「SharePoint Designer で宣言型ワークフローを作成するには」の推奨手順 6. に従って操作したように) [発行] をクリックした場合、Template 要素の Visibility 属性は値 "Public" を取得します。ただし、ワークフローを発行せずにテンプレートとして保存した場合、Template 要素の Visibility 属性は値 "DraftPublic" を取得します。この値は、Visual Studio のソリューションを再パッケージ化する前に "Public" に変更する必要があります。

  11. ソリューション エクスプローラーPropertyBags フォルダーの elements.xml ファイルを開きます。

  12. .xoml.config.xml ファイルを指定する Url 属性を持つ PropertyBags 要素までスクロールし、NoCodeVisibility プロパティの値が "Public" であることを確認します。"Public" でない場合は、この値に変更します。

  13. オプションで .xoml ファイルを編集できますが、この場合は次の点について気を付けてください。

    • ソリューション エクスプローラーで .xoml ファイルをダブルクリックすると、ファイルが Visual Studio の ワークフロー デザイナーで開きます。このデザイナーを使用することはできません。SharePoint Designer と Visual Studio のワークフロー デザイナーの間には互換性のない機能があります (ファイルをワークフロー デザイナーで開くと、デザイン画面の要素にエラー記号 (赤い円に囲まれた感嘆符) が表示される場合があります)。.xoml ファイルを開く場合は、このファイルを右クリックし、[プログラムから開く] ダイアログ ボックスで XML エディターまたはテキスト エディターを選択する必要があります。

    • .xoml ファイルを編集するプロセスではエラーが発生しやすいので、このファイルは、SharePoint Designer では行えない変更を加える場合にのみ編集するようにします。

  14. プロジェクトが完了したら、[ビルド] メニューで [展開] をクリックし、ソリューションをテストします。

ワークフローをサイト コレクションに展開するには

  1. ソリューションを配布する準備ができたら、最終的なソリューション パッケージ (.wsp ファイル) をサイト コレクション管理者が利用できるようにします。

    注意

    コンテンツ タイプ、リスト タイプ、リスト インスタンスなど、ソリューションと共に展開されないエンティティが存在することがワークフローで想定されている場合は、サイト コレクション管理者がこれらのエンティティを認識できるようにする必要があります。

  2. サンドボックス ソリューション は、サイト コレクション管理者がインストールおよび展開します。サイト コレクション管理者は、このソリューションをサイト コレクションのソリューション ギャラリーにインストールします。この処理は、2 つの手順で実行されます。

    1. サイト コレクション管理者がソリューション パッケージをギャラリーにアップロードします。

    2. サイト コレクション管理者がパッケージを展開します。これは、サンドボックス ソリューションでは "アクティブ化" と呼ばれます。この手順により、パッケージ内のすべてのフィーチャーが自動的にアクティブ化されます。ソリューションの検証機能がサイト コレクションに登録されている場合は、その機能もアクティブ化 (展開) ステージで実行されます。

    ソリューションが検証を通過し、ファーム管理者によってブロックされていない場合、そのソリューションはサイト コレクションで使用する準備ができています。

関連項目

概念

サンドボックス ソリューションで実装できるコンポーネント

サンドボックス ソリューションに対する制限

サンドボックス ソリューションのアーキテクチャ