次の方法で共有


チュートリアル: SharePoint Designer の再利用可能なワークフローの Visual Studio へのインポート

このチュートリアルでは、SharePoint Designer 2010 で作成した再利用可能なワークフローを Visual Studio SharePoint ワークフロー プロジェクトにインポートする方法について説明します。

SharePoint Designer で作成したワークフロー (宣言型のワークフロー) は、コードではなく XML ステートメントで構成されます。SharePoint Designer 2010 には、再利用可能なワークフローが導入されています。これは、汎用性のある宣言型のワークフローであり、SharePoint サイトの各種リストで使用できます。

Visual Studio 2012で、シーケンシャルおよびステート マシン ワークフローなど) で作成したワークフローを コード ワークフローと呼ばれます。コード ワークフローは XML ファイルとコード モジュールで構成され、ユーザーがワークフローの動作をカスタマイズできます。

Visual Studio で SharePoint Designer 2010 で作成した再利用可能なワークフローをインポートし、SharePoint サイトで使用するためのコード ワークフローに変換することができます。

このチュートリアルでは、次のタスクを実行します。

  • 単純な再利用可能なワークフローを SharePoint Designer で作成する。

  • SharePoint Designer の再利用可能なワークフローを .wsp ファイルと SharePoint にエクスポートする。

  • 再利用可能なワークフローのインポート プロジェクトを使用して、Visual Studio に .wsp ファイルをインポートする。

  • コードを追加してワークフローを変更する。

  • インポートしたワークフローを SharePoint サイトで使用する。

[!メモ]

お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。

必須コンポーネント

このチュートリアルを実行するには、次のコンポーネントが必要です。

  • サポート対象エディションの Microsoft Windows および SharePoint。詳細については、「SharePoint ソリューションの開発要件」を参照してください。

  • Visual Studio

  • Microsoft Office SharePoint Designer 2010。

対象の SharePoint サブサイトの作成

まず、SharePoint のサブサイトを新たに 2 つ作成します。1 つは、SharePoint Designer で作成した再利用可能なワークフローをホストするためのサブサイトで、もう 1 つは変換後のワークフローをホストするためのサブサイトです。

SharePoint のサブサイトを作成するには

  1. SharePoint Designer 2010 では、メニュー バーで、[ファイル][新しい空白の Web サイト] を選択します。

  2. [新しい空白の Web サイト] のダイアログ ボックスで、ワークフローを作成する参照し、または http://SystemName/使用し、の値を次に [OK] のボタンを選択します。SharePoint サイトにします。

    ホーム ページが表示されます。

  3. [サブサイト] のセクションでは、[新規作成] のボタンをクリックします。

  4. [新規作成] のダイアログ ボックスで、[SharePoint テンプレート] を左ペインの一覧から選択し、右ペインの一覧から [チーム サイト] を選択します。

  5. [Specify the location of the Web site] ボックスに URL の単語 [subsite] を SPD1 で置き換えて、[OK] のボタンをクリックします。

    これで SharePoint Designer に新しいサブサイトが表示されます。SharePoint Designer のこのインスタンスを閉じ、1 つ目のインスタンス (最上位のサイト) に戻ります。

  6. 手順 3. から手順 5. を繰り返して、2 つ目のサブサイトを作成します。今回は、URL の "subsite" の部分を「SPD2」に置き換えます。

SharePoint Designer の再利用可能なワークフローの作成

SharePoint には、この例に使用できる再利用可能なワークフローが付属していないため、独自に 1 つ作成します。この単純なワークフローでは、特定のタイトルのタスク リストにユーザーが新しいタスクを入力すると、そのユーザーがタスクに対して割り当てられます。

SharePoint Designer の再利用可能なワークフローを作成するには

  1. [サブサイト] のセクションで、サイズを変更するには [SPD1] サイトを選択します。

  2. で、[再利用可能なワークフロー] リボンのボタンをクリックします。

    再利用可能なワークフローの作成ウィザードが表示されます。

  3. [名前] ボックスに" SPD のタスクのワークフローを入力します。

  4. [コンテンツの種類] の一覧で、[タスク] を選択し、[OK] のボタンをクリックします。

    SharePoint Designer ワークフロー デザイナーでワークフローが開きます。

  5. 次に、ワークフロー デザイナーで、手順 1 を、リボンのをクリックします [条件] のボタンをクリックします。

  6. 条件の一覧で、[現在のアイテム フィールドと値が等しいかどうか] を選択します。

    この手順は [If field equals value] という条件を追加します。

  7. [If field equals value] では、フィールド のリンクを選択します。

  8. 値の一覧で、[タイトル] を選択します。

  9. [If field equals value] では、[value] のリンクを選択します。

  10. ボックスに「New task」と入力します。

    条件ステートメントに、"現在の Item:Title が New task と等しいとき" と表示されます。

  11. 次に、行を条件付きステートメントの、リボンのを選択し、[アクション] のボタンをクリックします。

  12. アクションの一覧で、[現在のアイテムにフィールドを設定する] を選択します。

  13. 次に [Set field to value] の動作では、フィールド のリンクは、一覧で、を選択します [担当者] を選択します。

  14. 次に [Set field to value] の動作では、既存のユーザーの一覧の [value] のリンクを選択すると、グループは [User who created the item] を選択します。

  15. [追加] のボタンを選択し、[OK] のボタンをクリックします。

    これで、アクション ステートメントには、"担当者を Current Item:CreatedBy に設定する" と表示されます。

再利用可能なワークフローの保存と配置

Visual Studio でインポートできるのは .wsp ファイルだけなので、Visual Studio にインポートする前に、再利用可能なワークフローを .wsp ファイルとして保存し、SharePoint に配置する必要があります。

重要 : 重要

次の手順を実行する途中でランタイム エラーが発生する場合は、SharePoint サイトへのアクセス権があるシステム上で実行してください。

再利用可能なワークフローを保存して配置するには

  1. SharePoint デザイナーの上部で、進行状況を保存するには [保存] のボタンを選択し、を [SPD1] SharePoint サイトにワークフローを配置するには [発行] のボタンをクリックします。

  2. ナビゲーション ペインで、[ワークフロー] のオブジェクトを選択します。

  3. [再利用可能なワークフロー] の下に、[SPD Task Workflow] を選択します。

  4. リボンに、ワークフローを保存するには [テンプレートとして保存] のボタンを、.wsp ファイルを選択します。

  5. SPD1 SharePoint サイトをブラウザーで開き、.wsp ファイルを SharePoint で表示します。

  6. クイック起動バーで、[ライブラリ] のリンクを選択します。

  7. [ドキュメント ライブラリ] のセクションでは、[サイトのリソース ファイル] のリンクを選択します。

    SPD Task Workflow ファイルが他のサイト資産と共に一覧に表示されます。

  8. ファイルの一覧で、そのファイルの名前を選択します。

  9. [ファイルのダウンロード] のダイアログ ボックスで、ローカル システムで .wsp ファイルを保存するには [保存] のボタンをクリックします。

Visual Studio への .wsp ファイルのインポート

再利用可能なワークフローのインポート プロジェクトを使用して、Visual Studio に .wsp ファイルをインポートします。宣言型の再利用可能なワークフローは、このプロジェクトによってコード ワークフローに変換されます。ワークフローの変換後は、コードを使用してその動作を変更できます。

ワークフローを .wsp ファイルからインポートして変更するには

  1. Visual Studioでは、メニュー バーで、[ファイル][新規作成]プロジェクトを選択します。

  2. [新しいプロジェクト] のダイアログ ボックスで、SharePoint ノードを [Visual C#][Visual Basic] の下に配置し、[2010] のノードを選択します。

  3. [テンプレート] のペインで、[再利用可能な SharePoint 2010 ワークフローのインポート] テンプレートを選択し、[WorkflowImportProject1] としてプロジェクトの名前をそのままにし、[OK] のボタンをクリックします。

    SharePoint カスタマイズ ウィザードが表示されます。

  4. [デバッグのサイトとセキュリティ レベルの指定] ページで、先ほど作成した 2 つ目の SharePoint サブサイトの URL (http://<システム名>/SPD2) を入力します。

  5. [この SharePoint ソリューションの信頼レベル] のセクションでは、[ファーム ソリューションとして配置する] のオプション ボタンを選択し、[次へ] のボタンをクリックします。

    サンドボックス ソリューションとファーム ソリューションの違いの詳細については、「サンドボックス ソリューションの考慮事項」を参照してください。

  6. [新しいプロジェクト ソースの指定] のページでは、前に .wsp ファイルを保存するシステムの位置に、ファイルを開き、を選択します [次へ] のボタンを参照します。

    [!メモ]

    .wsp ファイルで使用できるすべての項目をインポートするには [完了] のボタンをクリックします。

    この操作で、インポートに再利用可能なワークフローの一覧が表示されます。

  7. [インポートする項目の選択] ボックスに、[SPD Task Workflow] のワークフローを選択し、[完了] のボタンをクリックします。

    インポート操作が完了すると、SPD_Workflow_TestFT という名前のワークフローを含んだ WorkflowImportProject1 という名前のプロジェクトが作成されます。このフォルダーには、Elements.xml という名前のワークフローの定義ファイル、およびワークフロー デザイナー ファイル (.xoml) が格納されています。デザイナーには、規則ファイル (.rules) と、プロジェクトのプログラミング言語に応じた分離コード ファイル (.cs または .vb) の 2 つのファイルが含まれています。

  8. [ソリューション エクスプローラー] では、[Other Imported Files] のフォルダーを削除します。

  9. Elements.xml ファイルで、InstantiationURL="_layouts/IniErkflIP.sspx"を削除します。

  10. 次に [ソリューション エクスプローラー] では、[WorkflowImportProject1] を、メニュー バーで、スタートアップ プロジェクトとして [WorkflowImportProject1] を配置することも、プロジェクト[スタートアップ プロジェクトに設定] を選択します。

    この設定で、プロジェクトをデバッグすると一覧が表示されるようになります。

  11. [再利用可能な SharePoint 2010 ワークフローのインポート] テンプレートがインポートしたワークフローの関連付けのプロパティ値がインポートされないため、入力する必要があります。この操作を行うには、次の手順を実行します。

    1. [ソリューション エクスプローラー] では、SPD_Workflow_TestFT のノードを選択します。

    2. [ターゲット リスト] のプロパティなど、リストのプロパティの 1 種類の横にある省略記号ボタン (ASP.NET モバイル デザイナー楕円) をクリックします。

    3. SharePoint カスタマイズ ウィザードの不足している値を入力し、[完了] のボタンをクリックします。

  12. 次に、.xoml ファイルを、メニュー バーのをクリックし、インポートしたワークフローがワークフロー デザイナーに表示するには [ビュー][デザイナー] を選択します。

  13. [ツールボックス][Windows Workflow v3.0] のノードで、次の手順のいずれかを実行します: 1

    • [コード] アクティビティのショートカット メニューを開き、[コピー] を選択します。ワークフロー デザイナーで、行のショートカット メニューを [SequenceActivity1] のアクティビティの下で開き、[貼り付け] を選択します。

    • [ツールボックス] からワークフロー デザイナーに [コード] のアクティビティをドラッグし、アクティビティの行に [SequenceActivity1] の下に接続します。

    これで、CodeActivity1 という名前のアクティビティがワークフロー デザイナーに追加されます。このアクティビティでは、ユーザーによってワークフローが開始されたときに [お知らせ] ボックスにお知らせを作成するコード アクションを追加します。

  14. 次のいずれかの操作を実行します。

    • [CodeActivity1] をダブルクリックし、イベント ハンドラーを生成してコードを表示します。

    • [CodeActivity1][プロパティ] のペインで、codeActivity_ExecuteCode[ExecuteCode] のプロパティの値を設定します。

  15. 既存の using ステートメントまたは Imports ステートメントの下に次を追加します。

    Imports Microsoft.SharePoint
    Imports System
    
    using Microsoft.SharePoint;
    using System;
    
  16. codeActivity1_ExecuteCode を次の内容に置き換えます。

    Private Sub codeActivity1_ExecuteCode(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            ' Get reference to SharePoint site.
            Dim site As SPSite = New SPSite("http://MyServer")
            Dim web As SPWeb = site.OpenWeb("SPD2/")
            ' Get reference to Announcements list.
            Dim announcementsList As SPList = web.Lists("Announcements")
            ' Add announcement to Announcements list for the Task.
            Dim oListItem As SPListItem = announcementsList.Items.Add
            oListItem("Title") = ("Assigned task on " + DateTime.Now.ToString)
            oListItem.Update()
        Catch err As Exception
            Console.WriteLine(("Error: " + err.ToString))
        End Try
    End Sub
    
    private void codeActivity1_ExecuteCode(object sender, System.EventArgs e)
    {
    
        try
        {
            // Get reference to SharePoint site.
            SPSite site = new SPSite("http://MyServer");
            SPWeb web = site.OpenWeb("SPD2/");
            // Get reference to Announcements list.
            SPList announcementsList = web.Lists["Announcements"];
    
            // Add announcement to Announcements list for the Task.
            SPListItem oListItem = announcementsList.Items.Add();
            oListItem["Title"] = "Assigned task on " + DateTime.Now.ToString();
            oListItem.Update();
        }
    
        catch (Exception err)
        {
            Console.WriteLine("Error: " + err.ToString());
        }        
    }
    

プロジェクトの配置とワークフローの関連付け

次に、WorkflowImportProject1 を実行して SharePoint サイトに配置し、さらに、そのワークフローをタスク一覧に関連付けて、変更された変換済みのワークフローを表示し、テストします。

プロジェクトを配置してワークフローを関連付けるには

  1. Visual Studioでは、変換済みのワークフロー プロジェクトを実行し、配置するには、F5 キーを選択します。

  2. クイック起動バーで、タスク一覧を表示するには [タスク] のリンクを選択します。

  3. [リスト ツール] のタブで、[項目] のボタンを選択し、[新しいアイテム] のボタンをクリックします。

    [Tasks - New Item] のダイアログ ボックスが表示されます。

  4. [タイトル] ボックスに、新しいタスクを入力し、を [保存] のボタンをクリックします。

  5. [リスト ツール] のタブで、[一覧] のボタンを選択し、[リストの設定] のボタンをクリックします。

    [リストの設定] のページが表示されます。

  6. [権限と管理] のセクションでは、[ワークフロー設定] のリンクを選択します。

    [ワークフロー設定] のページが表示されます。

  7. [ワークフローの追加] のリンクを選択します。

  8. [ワークフロー] の一覧で、[WorkflowImportProject1 - SPD Workflow Test] を選択します。

  9. [名前] ボックスに" SPD Workflow Test "と入力し、[OK] のボタンをクリックします。

  10. クイック起動バーで、[タスク] の一覧を選択します。

  11. 次の横にある矢印を [新しいタスク] ので、一覧のを選択し、[ワークフロー] を選択します。

  12. [新しいワークフローの開始] のセクションでは、[SPD Workflow Test] のリンクを選択し、ワークフローを開始する [開始] のボタンをクリックします。

    [!メモ]

    ワークフロー設定ウィザードを実行し、ワークフローを自動的に関連付けるように設定にすることによって、リストにワークフローを自動的に関連付けることもできます。

    ワークフローによって 2 つのアクションが実行されます。担当者の名前がタスクの [担当者] 列に表示され、お知らせが [お知らせ] ボックスに表示されます。

参照

概念

既存の SharePoint サイトからのアイテムのインポート

その他の技術情報

SharePoint ソリューションの開発

Web パーツまたはアプリケーション ページの再利用できるコントロールの作成