チュートリアル : SharePoint ワークフロー ソリューションの作成とデバッグ

更新 : 2007 年 11 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • SharePoint ワークフロー

Microsoft Office のバージョン

  • SharePoint Server 2007

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

このチュートリアルでは、基本的なシーケンシャル ワークフロー テンプレートを作成する方法について説明します。ワークフローでは、ドキュメント ライブラリのプロパティをチェックして、ドキュメントの校閲が終了しているかどうかを確認します。ドキュメントの校閲が終了している場合、ワークフローは完了します。

このチュートリアルでは、次のタスクについて説明します。

  • SharePoint 2007 シーケンシャル ワークフロー プロジェクトの作成

  • ワークフロー スケジュールの作成

  • アクティビティのイベントの処理

Bb386168.alert_note(ja-jp,VS.90).gifメモ :

使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。

Visual Studio Tools for Office を使用して SharePoint ワークフロー テンプレートを作成する方法の詳細については、「SharePoint ワークフロー ソリューション」を参照してください。

前提条件

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

  • Visual Studio Tools for Office (Visual Studio 2008 Professional および Visual Studio Team System のオプションの要素)

  • Microsoft SharePoint Server 2007

  • タイトルが Document Center、URL が https://localhost/Docs である SharePoint Server Web サイト (1 台のコンピュータにスタンドアロン インストールとして Microsoft Office SharePoint Server 2007 をインストールすると、SharePoint 製品とテクノロジ構成ウィザードを完了したときにこの Web サイトが自動的に作成されます)

  • Microsoft Office Word 2007 または Microsoft Office Word 2003

ここに挙げた Visual Studio のバージョンでは、Visual Studio Tools for Office が既定でインストールされます。インストールされているかどうかを確認する方法については、「Visual Studio Tools for Office のインストール」を参照してください。

SharePoint ドキュメント ライブラリへのプロパティの追加

Documents ライブラリにあるドキュメントの校閲のステータスを追跡することを目的に、ワークフローの参加要素はドキュメントの Document Status、Assignee、およびReview Comments プロパティを設定します。これらのプロパティは、ドキュメント ライブラリで定義します。

SharePoint ドキュメント ライブラリにプロパティを追加するには

  1. Internet Explorer で既定の SharePoint Server 2007 Web サイトを開きます。

    Bb386168.alert_note(ja-jp,VS.90).gifメモ :

    SharePoint の既定のサイトは、https://localhost です。SharePoint 以外の Web サイトに https://localhost をマップすると、このチュートリアルで説明する手順でワークフロー テンプレートをテストすることはできません。

  2. [Document Center] タブをクリックします。

  3. ナビゲーション ペインで、[Documents] をクリックします。

  4. [Documents] ページで、[設定] をクリックし、[ドキュメント ライブラリの設定] をクリックします。

  5. [Documents のカスタマイズ] ページの [列] で、[列の作成] をクリックします。

  6. 列に Document Status という名前を指定し、[選択肢 (メニューから選択)] を選択して、次の 3 つのオプションを指定します。次に、[OK] をクリックします。

    • Review Needed

    • Review Complete

    • Changes Requested

  7. AssigneeReview Comments という名前でさらに 2 つの列を作成します。[Assignee] 列はテキストを 1 行だけ表示するように設定し、[Review Comments] 列は複数行のテキストを表示するように設定します。

チェックアウトせずにドキュメントを編集できるようにする

チェックアウトせずにドキュメントを編集できると、ワークフロー テンプレートのテストが容易になります。

チェックアウトせずにドキュメントを編集できるようにするには

  1. [ドキュメントのカスタマイズ] ページの [全般設定] で、[バージョン設定] をクリックします。

  2. [ドキュメントを編集する前に必ずチェックアウトする] で、[いいえ] を選択し、[OK] をクリックします。

  3. Internet Explorer を終了します。

SharePoint シーケンシャル ワークフロー プロジェクトの作成

シーケンシャル ワークフローは、最後のアクティビティが完了するまで順序どおりに実行する一連の手順で構成されるワークフローを表します。

SharePoint シーケンシャル ワークフロー プロジェクトを作成するには

  1. Visual Studio を起動します。

  2. [新しいプロジェクト] ダイアログ ボックスを開き、使用する言語の [Office] ノードを展開して、[2007] ノードをクリックします。

  3. [テンプレート] ペインで、[SharePoint 2007 シーケンシャル ワークフロー] をクリックします。

  4. [名前] ボックスに「MySharePointWorkflow」と入力します。IDE が Visual C# の開発設定または一般的な開発設定を使用するよう設定されている場合は、場所とソリューション名を入力します。

  5. [OK] をクリックします。

    新しい Office SharePoint ワークフロー ウィザードが表示されます。

  6. [ワークフローの名前、およびデバッグ対象のサイトを指定してください] ページで、[次へ] をクリックし、既定のワークフローの名前とサイトをそのまま使用します。

  7. [デバッグ時に使用するリストを選択してください] ページで、[次へ] をクリックし、既定のドキュメント ライブラリ、タスク リスト、履歴リストをそのまま使用して、ドキュメント ライブラリにワークフロー テンプレートを自動的に関連付けるように設定します。

  8. [ワークフローの開始方法についての条件を指定できます] ページで、[完了] をクリックし、既定の選択を受け入れます。

ワークフロー スケジュールの作成

ワークフロー テンプレートには、1 つ以上のワークフロー スケジュールが含まれます。ワークフロー スケジュールには、実行するアクションを表すアクティビティが記載されます。スケジュール上のアクティビティの調整には、ワークフロー デザイナを使用します。Documents リスト内のドキュメントの校閲のステータスを監視するため、HandleExternalEventActivityMicrosoft.SharePoint.WorkflowActions.OnWorkflowItemChanged という 2 つのアクティビティを追加します。

ワークフロー スケジュールを作成するには

  1. ソリューション エクスプローラで、Workflow1.cs または Workflow1.vb をダブルクリックし、デザイナでワークフロー スケジュールを開きます。

  2. デザイナで、OnWorkflowActivated1 アクティビティをクリックして選択します。

  3. [プロパティ] ウィンドウで、[Invoked] プロパティの横に「onWorkflowActivated」と入力し、Enter キーを押します。

    コード エディタが開き、onWorkflowActivated という名前のイベント ハンドラ メソッドが Workflow1 コード ファイルに追加されます。

  4. デザイナでワークフロー スケジュールを開き直します。

  5. [表示] メニューの [ツールボックス] をクリックします。

  6. ツールボックス[Windows Workflow v3.0] タブから、onWorkflowActivated1 アクティビティの下にある While アクティビティをドラッグします。

  7. WhileActivity1 アクティビティをクリックして選択します。

  8. [プロパティ] ウィンドウで、[Condition] を Code Condition に設定します。

  9. [Condition] プロパティを展開し、子の [Condition] プロパティの横に「isWorkflowPending」と入力して、Enter キーを押します。

    コード エディタが開き、isWorkflowPending という名前のメソッドが Workflow1 コード ファイルに追加されます。

  10. デザイナでワークフロー スケジュールを開き直します。

  11. ツールボックス[SharePoint ワークフロー] タブから、whileActivity1 アクティビティの下にある OnWorkflowItemChanged アクティビティをドラッグします。

  12. onWorkflowItemChanged1 アクティビティをクリックして選択します。

  13. [プロパティ] ウィンドウで、次の表に示すようにプロパティを設定します。

    プロパティ

    CorrelationToken

    workflowToken

    Invoked

    onWorkflowItemChanged

アクティビティのイベントの処理

最後の手順で、各アクティビティからドキュメントのステータスをチェックします。ドキュメントの校閲が終了している場合、ワークフローは完了します。

アクティビティのイベントを処理するには

  1. ソリューション エクスプローラWorkflow1.cs または Workflow1.vb を右クリックし、[コードの表示] をクリックします。

  2. Workflow1 クラスの先頭に、次のフィールドを追加します。アクティビティ内のこのフィールドを使用して、ワークフローを完了させるかどうかを判断します。

    Dim workflowPending As Boolean = True
    
    Boolean workflowPending = true;
    
  3. Workflow1 クラスに次のメソッドを追加します。このメソッドは、Documents リストの Document Status プロパティの値をチェックして、ドキュメントの校閲が終了しているかどうかを確認します。Document Status プロパティが Review Complete に設定されている場合、checkStatus メソッドは workflowPending フィールドに false を設定し、ワークフロー完了の準備が整っていることを示します。

    Private Sub checkStatus()
        If CStr(workflowProperties.Item("Document Status")) = "Review Complete" Then
            workflowPending = False
        End If
    End Sub 
    
    private void checkStatus()
    {
        if ((string)workflowProperties.Item["Document Status"] == "Review Complete")
        workflowPending = false;
    }
    
  4. onWorkflowActivated メソッドと onWorkflowItemChanged メソッドに次のコードを追加して、checkStatus メソッドを呼び出します。ワークフローが開始すると、onWorkflowActivated メソッドは checkStatus メソッドを呼び出して、ドキュメントの校閲が既に行われているかどうかを確認します。まだ校閲が行われていない場合は、ワークフローは続行します。ドキュメントが保存されると、onWorkflowItemChanged メソッドはもう一度 checkStatus メソッドを呼び出して、ドキュメントの校閲が行われたかどうかを確認します。workflowPending フィールドが true に設定されている間は、ワークフローは処理を続行します。

    Private Sub onWorkflowActivated(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ExternalDataEventArgs)
        checkStatus()
    End Sub
    
    Private Sub onWorkflowItemChanged(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ExternalDataEventArgs)
        checkStatus()
    End Sub
    
    private void onWorkflowActivated(object sender, ExternalDataEventArgs e)
    {
        checkStatus();
    }
    
    private void onWorkflowItemChanged(object sender, ExternalDataEventArgs e)
    {
        checkStatus();
    }
    
  5. isWorkflowPending メソッドに次のコードを追加して、workflowPending プロパティのステータスをチェックします。ドキュメントが保存されるたびに、whileActivity1 アクティビティは isWorkflowPending メソッドを呼び出します。このメソッドは、ConditionalEventArgs オブジェクトの Result プロパティを調べて、WhileActivity1 アクティビティを続行すべきか完了すべきかを判断します。プロパティが true に設定されていると、アクティビティは続行します。それ以外の場合は、アクティビティが完了し、ワークフローも完了します。

    Private Sub isWorkflowPending(ByVal sender As System.Object, ByVal e As System.Workflow.Activities.ConditionalEventArgs)
        e.Result = workflowPending
    End Sub
    
    private void isWorkflowPending(object sender, ConditionalEventArgs e)
    {
        e.Result = workflowPending;
    }
    

SharePoint ワークフロー テンプレートのテスト

デバッガを起動すると、Visual Studio Tools for Office によって SharePoint Server 2007 に対してワークフロー テンプレートが配置され、ワークフロー テンプレートは Documents リストに関連付けられます。ワークフローをテストするため、Documents リスト内のドキュメントからワークフロー テンプレートのインスタンスを起動します。

SharePoint ワークフロー テンプレートをテストするには

  1. ソリューション エクスプローラで Workflow1.cs または Workflow1.vb を右クリックし、[コードの表示] をクリックします。

  2. onWorkflowActivated メソッドの横にブレークポイントを設定します。

  3. F5 キーを押します。

    既定の SharePoint サイトの [Documents] ページが開きます。

  4. [Documents] ページで、[新規] をクリックし、新しいドキュメントを作成します。

  5. 既定の場所にドキュメントを保存します。

    ドキュメントが Documents リストに追加され、ワークフローが開始します。

  6. Visual Studio で、onWorkflowActivated メソッドの横に指定したブレークポイントでデバッガが停止することを確認します。

  7. F5 キーを押して処理を続行します。

  8. ドキュメントを閉じます。

  9. 既定の SharePoint Web サイトの [Documents] ページに戻ります。

  10. [Documents] ページで、MySharePointWorkflow 列の下にある値が In Progress に設定されていることを確認します。これは、ワークフローが処理中であり、ドキュメントが校閲待ちの状態であることを示します。

  11. [Documents] ページで、ドキュメントをポイントし、下向きの矢印をクリックして、[プロパティの編集] をクリックします。

  12. [Document Status][Review Complete] に設定し、[OK] をクリックします。

  13. 既定の SharePoint Web サイトの [Documents] ページに戻ります。

  14. [Documents] ページで、MySharePointWorkflow 列の下にある値が Completed に設定されていることを確認します。これは、ワークフローが完了し、ドキュメントが校閲済みであることを示します。

次の手順

ワークフロー テンプレートの作成方法の詳細については、以下のトピックを参照してください。

参照

処理手順

方法 : SharePoint ソリューションをデバッグするときにヘルパー ファイルを含める

SharePoint シーケンシャル ワークフローのサンプル

概念

SharePoint ワークフロー ソリューション

SharePoint ワークフロー ソリューションのデバッグ

参照

SharePoint ワークフロー プロジェクト テンプレート