チュートリアル: SharePoint Designer の再利用可能なワークフローの Visual Studio へのインポート
このチュートリアルでは、SharePoint Designer 2010 で作成した再利用可能なワークフローを Visual Studio SharePoint ワークフロー プロジェクトにインポートする方法について説明します。
SharePoint Designer で作成したワークフロー (宣言型のワークフロー) は、コードではなく XML ステートメントで構成されます。 SharePoint Designer 2010 には、再利用可能なワークフローが導入されています。これは、汎用性のある宣言型のワークフローであり、SharePoint サイトの各種リストで使用できます。
Visual Studio 2010 で作成したワークフロー (シーケンシャル ワークフロー、ステート マシン ワークフローなど) をコード ワークフローといいます。 コード ワークフローは XML ファイルとコード モジュールで構成され、ユーザーがワークフローの動作をカスタマイズできます。
Visual Studio 2010 では、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 2010.
Microsoft Office SharePoint Designer 2010。
対象の SharePoint サブサイトの作成
まず、SharePoint のサブサイトを新たに 2 つ作成します。1 つは、SharePoint Designer で作成した再利用可能なワークフローをホストするためのサブサイトで、もう 1 つは変換後のワークフローをホストするためのサブサイトです。
SharePoint のサブサイトを作成するには
SharePoint Designer 2010 で、[ファイル] メニューの [サイトを開く] をクリックします。
[サイトを開く] ダイアログ ボックスで、ワークフローの作成先となる SharePoint サイトに移動するか、既定値の http://<システム名>/ を使用し、[開く] をクリックします。
ホーム ページが表示されます。
[サブサイト] セクションの [新規作成] をクリックします。
[新規作成] ダイアログ ボックスの左ペインで [SharePoint テンプレート] を選択し、右ペインで [チーム サイト] を選択します。
[Web サイトの場所を指定してください] ボックスで、URL の "subsite" の部分を「SPD1」に置き換えて、[OK] をクリックします。
これで SharePoint Designer に新しいサブサイトが表示されます。 SharePoint Designer のこのインスタンスを閉じ、1 つ目のインスタンス (最上位のサイト) に戻ります。
手順 3. から手順 5. を繰り返して、2 つ目のサブサイトを作成します。今回は、URL の "subsite" の部分を「SPD2」に置き換えます。
SharePoint Designer の再利用可能なワークフローの作成
SharePoint には、この例に使用できる再利用可能なワークフローが付属していないため、独自に 1 つ作成します。 この単純なワークフローでは、特定のタイトルのタスク リストにユーザーが新しいタスクを入力すると、そのユーザーがタスクに対して割り当てられます。
SharePoint Designer の再利用可能なワークフローを作成するには
[サブサイト] セクションの [SPD1] サイトをクリックして変更します。
リボンの [再利用可能なワークフロー] をクリックします。
再利用可能なワークフローの作成ウィザードが表示されます。
[名前] ボックスに「SPD Task Workflow」と入力します。
[コンテンツ タイプ] ボックスの [タスク] をクリックし、[OK] をクリックします。
SharePoint Designer ワークフロー デザイナーでワークフローが開きます。
ステップ 1 が選択されていることを確認し、リボンの [条件] ボタンをクリックし、条件の一覧から [現在の項目フィールドが値と等しいとき] を選択します。
この操作で "If field equal value" という新しい条件が追加されます。
[フィールドが値と等しいとき] 条件の [フィールド] リンクをクリックします。
値の一覧から [タイトル] を選択します。
[フィールドが値と等しいとき] 条件の [値] リンクをクリックします。
ボックスに「New task」と入力します。
条件ステートメントに、"現在の Item:Title が New task と等しいとき" と表示されます。
条件ステートメントの下の行をクリックし、リボンの [アクション] ボタンをクリックして、アクションの一覧から [現在のアイテムにフィールドを設定する] を選択します。
[フィールドを値に設定する] アクションの [フィールド] リンクをクリックし、[担当者] を選択します。
[フィールドを値に設定する] アクションの [値] リンクをクリックし、既存のユーザーおよびグループの一覧から [項目を作成したユーザー] を選択します。次に、[追加] をクリックして [OK] をクリックします。
これで、アクション ステートメントには、"担当者を Current Item:CreatedBy に設定する" と表示されます。
再利用可能なワークフローの保存と配置
Visual Studio でインポートできるのは .wsp ファイルだけなので、Visual Studio にインポートする前に、再利用可能なワークフローを .wsp ファイルとして保存し、SharePoint に配置する必要があります。
重要
次の手順を実行中にランタイム エラーが発生した場合は、SharePoint サイトへのアクセス権があるシステムで次の手順を実行してください。
再利用可能なワークフローを保存して配置するには
SharePoint Designer の最上部にある [保存] ボタンをクリックしてこれまでの作業を保存し、[発行] をクリックして SPD1 SharePoint サイトにワークフローを配置します。
ナビゲーション ペインで、[ワークフロー] をクリックします。
[再利用可能なワークフロー] で [SPD Task Workflow] をクリックします。
リボンで [テンプレートとして保存] をクリックして、ワークフローを .wsp ファイルとして保存します。
SPD1 SharePoint サイトをブラウザーで開き、.wsp ファイルを SharePoint で表示します。
クイック起動バーの [ライブラリ] をクリックします。
[ドキュメント ライブラリ] セクションの [サイト資産] をクリックします。
SPD Task Workflow ファイルが他のサイト資産と共に一覧に表示されます。
一覧でその名前をクリックすると、[ファイルのダウンロード] ダイアログ ボックスが表示されます。
[ファイルのダウンロード] ダイアログ ボックスの [保存] ボタンをクリックして、.wsp ファイルをシステムに保存します。
Visual Studio への .wsp ファイルのインポート
再利用可能なワークフローのインポート プロジェクトを使用して、Visual Studio に .wsp ファイルをインポートします。 宣言型の再利用可能なワークフローは、このプロジェクトによってコード ワークフローに変換されます。 ワークフローの変換後は、コードを使用してその動作を変更できます。
ワークフローを .wsp ファイルからインポートして変更するには
Visual Studio で、[ファイル] メニューの [新規作成] をポイントし、[新しいプロジェクト] ダイアログ ボックスを表示して、[新しいプロジェクト] をクリックします。
[Visual C#] または [Visual Basic] の [SharePoint] ノードを展開して、[2010] をクリックします。
[テンプレート] ペインで、[再利用可能なワークフローのインポート] をクリックし、プロジェクト名を WorkflowImportProject1 のままにして、[OK] をクリックします。
SharePoint カスタマイズ ウィザードが表示されます。
[デバッグのサイトとセキュリティ レベルの指定] ページで、先ほど作成した 2 つ目の SharePoint サブサイトの URL (http://<システム名>/SPD2) を入力します。
[この SharePoint ソリューションの信頼レベル] セクションは、[ファーム ソリューションとして配置する] が選択されたままにします。
サンドボックス ソリューションとファーム ソリューションの違いの詳細については、「サンドボックス ソリューションの考慮事項」を参照してください。
[新しいプロジェクト ソースの指定] ページで、先ほど .wsp ファイルを保存したシステム上の場所に移動し、[次へ] をクリックします。
注意
このページで [完了] をクリックすると、.wsp ファイル内の使用できるすべての項目がインポートされます。
この操作で、インポートに再利用可能なワークフローの一覧が表示されます。
[インポートする項目の選択] ボックスで、[SPD Task Workflow] ワークフローを選択し、[完了] をクリックします。
インポート操作が完了すると、SPD_Workflow_TestFT という名前のワークフローを含んだ WorkflowImportProject1 という名前のプロジェクトが作成されます。 このフォルダーには、Elements.xml という名前のワークフローの定義ファイル、およびワークフロー デザイナー ファイル (.xoml) が格納されています。 デザイナーには、規則ファイル (.rules) と、プロジェクトのプログラミング言語に応じた分離コード ファイル (.cs または .vb) の 2 つのファイルが含まれています。
ワークフロー プロジェクト項目 [WorkflowImportProject] をスタートアップ プロジェクトとして設定します。
この設定で、プロジェクトをデバッグすると一覧が表示されるようになります。
[再利用可能なワークフローのインポート] では、インポートされるワークフローの関連プロパティ値がインポートされないため、入力する必要があります。 この操作を行うには、次の手順を実行します。
ソリューション エクスプローラーで [SPD_Workflow_TestFT] ワークフロー プロジェクト項目をクリックします。
[ターゲット リスト] プロパティまたは省略記号ボタンがあるその他のプロパティの横にある省略記号 () ボタンをクリックします。
SharePoint カスタマイズ ウィザードの不足している値を入力します。 完了したら、[完了] をクリックします。
.xoml ファイルを右クリックし、[デザイナーの表示] を選択すると、インポートしたワークフローがワークフロー デザイナーに表示されます。
ツールボックスの [Windows Workflow v3.0] セクションから、[コード] アクティビティをデザイナーにドラッグし、[SequenceActivity1] アクティビティの下にドロップします。
これで、CodeActivity1 という名前のアクティビティがワークフロー デザイナーに追加されます。 このアクティビティでは、ユーザーによってワークフローが開始されたときに [お知らせ] ボックスにお知らせを作成するコード アクションを追加します。
[CodeActivity1] をダブルクリックし、イベント ハンドラーを生成してコードを表示します。
既存の using ステートメントまたは Imports ステートメントの下に次を追加します。
Imports Microsoft.SharePoint Imports System
using Microsoft.SharePoint; using System;
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 サイトに配置し、さらに、そのワークフローをタスク一覧に関連付けて、変更された変換済みのワークフローを表示し、テストします。
プロジェクトを配置してワークフローを関連付けるには
Visual Studio で F5 キーを押して、変換済みのワークフロー プロジェクトを実行し、配置します。
クイック起動バーの [タスク] をクリックしてタスク一覧を表示します。
[リスト ツール] リボンの [項目] をクリックし、[新しいアイテム] ボタンをクリックします。
[タスク - 新しい項目] ダイアログ ボックスの [タイトル] ボックスに「New task」と入力し、[Save] をクリックします。
[リスト ツール] リボン ボタンの [リスト] をクリックして [リストの設定] ページを表示し、[リストの設定] をクリックします。
[権限と管理] セクションの [ワークフロー設定] リンクをクリックします。
[ワークフローの追加] ページが表示されます。
[ワークフロー] リストの [WorkflowImportProject1 - SPD Workflow Test] を選択します。
[名前] ボックスに「SPD Workflow Test」と入力し、[OK] をクリックします。
クイック起動バーの [タスク] をクリックします。
[New task] の横にあるドロップダウン矢印をクリックし、[ワークフロー] を選択します。
[新しいワークフローの開始] セクションで [SPD Workflow Test] のリンクをクリックし、[開始] をクリックしてワークフローを開始します。
注意
ワークフロー設定ウィザードを実行し、ワークフローを自動的に関連付けるように設定にすることによって、リストにワークフローを自動的に関連付けることもできます。
ワークフローによって 2 つのアクションが実行されます。担当者の名前がタスクの [担当者] 列に表示され、お知らせが [お知らせ] ボックスに表示されます。
参照
概念
Web パーツまたはアプリケーション ページの再利用できるコントロールの作成