チュートリアル: 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 のサブサイトを作成するには
SharePoint Designer 2010 では、メニュー バーで、[ファイル]、[新しい空白の Web サイト] を選択します。
[新しい空白の Web サイト] のダイアログ ボックスで、ワークフローを作成する参照し、または http://SystemName/使用し、の値を次に [OK] のボタンを選択します。SharePoint サイトにします。
ホーム ページが表示されます。
[サブサイト] のセクションでは、[新規作成] のボタンをクリックします。
[新規作成] のダイアログ ボックスで、[SharePoint テンプレート] を左ペインの一覧から選択し、右ペインの一覧から [チーム サイト] を選択します。
[Specify the location of the Web site] ボックスに URL の単語 [subsite] を SPD1 で置き換えて、[OK] のボタンをクリックします。
これで SharePoint Designer に新しいサブサイトが表示されます。SharePoint Designer のこのインスタンスを閉じ、1 つ目のインスタンス (最上位のサイト) に戻ります。
手順 3. から手順 5. を繰り返して、2 つ目のサブサイトを作成します。今回は、URL の "subsite" の部分を「SPD2」に置き換えます。
SharePoint Designer の再利用可能なワークフローの作成
SharePoint には、この例に使用できる再利用可能なワークフローが付属していないため、独自に 1 つ作成します。この単純なワークフローでは、特定のタイトルのタスク リストにユーザーが新しいタスクを入力すると、そのユーザーがタスクに対して割り当てられます。
SharePoint Designer の再利用可能なワークフローを作成するには
[サブサイト] のセクションで、サイズを変更するには [SPD1] サイトを選択します。
で、[再利用可能なワークフロー] リボンのボタンをクリックします。
再利用可能なワークフローの作成ウィザードが表示されます。
[名前] ボックスに" SPD のタスクのワークフローを入力します。
[コンテンツの種類] の一覧で、[タスク] を選択し、[OK] のボタンをクリックします。
SharePoint Designer ワークフロー デザイナーでワークフローが開きます。
次に、ワークフロー デザイナーで、手順 1 を、リボンのをクリックします [条件] のボタンをクリックします。
条件の一覧で、[現在のアイテム フィールドと値が等しいかどうか] を選択します。
この手順は [If field equals value] という条件を追加します。
[If field equals value] では、フィールド のリンクを選択します。
値の一覧で、[タイトル] を選択します。
[If field equals value] では、[value] のリンクを選択します。
ボックスに「New task」と入力します。
条件ステートメントに、"現在の Item:Title が New task と等しいとき" と表示されます。
次に、行を条件付きステートメントの、リボンのを選択し、[アクション] のボタンをクリックします。
アクションの一覧で、[現在のアイテムにフィールドを設定する] を選択します。
次に [Set field to value] の動作では、フィールド のリンクは、一覧で、を選択します [担当者] を選択します。
次に [Set field to value] の動作では、既存のユーザーの一覧の [value] のリンクを選択すると、グループは [User who created the item] を選択します。
[追加] のボタンを選択し、[OK] のボタンをクリックします。
これで、アクション ステートメントには、"担当者を Current Item:CreatedBy に設定する" と表示されます。
再利用可能なワークフローの保存と配置
Visual Studio でインポートできるのは .wsp ファイルだけなので、Visual Studio にインポートする前に、再利用可能なワークフローを .wsp ファイルとして保存し、SharePoint に配置する必要があります。
重要 |
---|
次の手順を実行する途中でランタイム エラーが発生する場合は、SharePoint サイトへのアクセス権があるシステム上で実行してください。 |
再利用可能なワークフローを保存して配置するには
SharePoint デザイナーの上部で、進行状況を保存するには [保存] のボタンを選択し、を [SPD1] SharePoint サイトにワークフローを配置するには [発行] のボタンをクリックします。
ナビゲーション ペインで、[ワークフロー] のオブジェクトを選択します。
[再利用可能なワークフロー] の下に、[SPD Task Workflow] を選択します。
リボンに、ワークフローを保存するには [テンプレートとして保存] のボタンを、.wsp ファイルを選択します。
SPD1 SharePoint サイトをブラウザーで開き、.wsp ファイルを SharePoint で表示します。
クイック起動バーで、[ライブラリ] のリンクを選択します。
[ドキュメント ライブラリ] のセクションでは、[サイトのリソース ファイル] のリンクを選択します。
SPD Task Workflow ファイルが他のサイト資産と共に一覧に表示されます。
ファイルの一覧で、そのファイルの名前を選択します。
[ファイルのダウンロード] のダイアログ ボックスで、ローカル システムで .wsp ファイルを保存するには [保存] のボタンをクリックします。
Visual Studio への .wsp ファイルのインポート
再利用可能なワークフローのインポート プロジェクトを使用して、Visual Studio に .wsp ファイルをインポートします。宣言型の再利用可能なワークフローは、このプロジェクトによってコード ワークフローに変換されます。ワークフローの変換後は、コードを使用してその動作を変更できます。
ワークフローを .wsp ファイルからインポートして変更するには
Visual Studioでは、メニュー バーで、[ファイル]、[新規作成]、プロジェクトを選択します。
[新しいプロジェクト] のダイアログ ボックスで、SharePoint ノードを [Visual C#] か [Visual Basic] の下に配置し、[2010] のノードを選択します。
[テンプレート] のペインで、[再利用可能な 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 つのファイルが含まれています。
[ソリューション エクスプローラー] では、[Other Imported Files] のフォルダーを削除します。
Elements.xml ファイルで、InstantiationURL="_layouts/IniErkflIP.sspx"を削除します。
次に [ソリューション エクスプローラー] では、[WorkflowImportProject1] を、メニュー バーで、スタートアップ プロジェクトとして [WorkflowImportProject1] を配置することも、プロジェクト、[スタートアップ プロジェクトに設定] を選択します。
この設定で、プロジェクトをデバッグすると一覧が表示されるようになります。
[再利用可能な SharePoint 2010 ワークフローのインポート] テンプレートがインポートしたワークフローの関連付けのプロパティ値がインポートされないため、入力する必要があります。この操作を行うには、次の手順を実行します。
[ソリューション エクスプローラー] では、SPD_Workflow_TestFT のノードを選択します。
[ターゲット リスト] のプロパティなど、リストのプロパティの 1 種類の横にある省略記号ボタン () をクリックします。
SharePoint カスタマイズ ウィザードの不足している値を入力し、[完了] のボタンをクリックします。
次に、.xoml ファイルを、メニュー バーのをクリックし、インポートしたワークフローがワークフロー デザイナーに表示するには [ビュー]、[デザイナー] を選択します。
[ツールボックス] の [Windows Workflow v3.0] のノードで、次の手順のいずれかを実行します: 1
[コード] アクティビティのショートカット メニューを開き、[コピー] を選択します。ワークフロー デザイナーで、行のショートカット メニューを [SequenceActivity1] のアクティビティの下で開き、[貼り付け] を選択します。
[ツールボックス] からワークフロー デザイナーに [コード] のアクティビティをドラッグし、アクティビティの行に [SequenceActivity1] の下に接続します。
これで、CodeActivity1 という名前のアクティビティがワークフロー デザイナーに追加されます。このアクティビティでは、ユーザーによってワークフローが開始されたときに [お知らせ] ボックスにお知らせを作成するコード アクションを追加します。
次のいずれかの操作を実行します。
[CodeActivity1] をダブルクリックし、イベント ハンドラーを生成してコードを表示します。
[CodeActivity1] の [プロパティ] のペインで、codeActivity_ExecuteCodeに [ExecuteCode] のプロパティの値を設定します。
既存の 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 キーを選択します。
クイック起動バーで、タスク一覧を表示するには [タスク] のリンクを選択します。
[リスト ツール] のタブで、[項目] のボタンを選択し、[新しいアイテム] のボタンをクリックします。
[Tasks - New Item] のダイアログ ボックスが表示されます。
[タイトル] ボックスに、新しいタスクを入力し、を [保存] のボタンをクリックします。
[リスト ツール] のタブで、[一覧] のボタンを選択し、[リストの設定] のボタンをクリックします。
[リストの設定] のページが表示されます。
[権限と管理] のセクションでは、[ワークフロー設定] のリンクを選択します。
[ワークフロー設定] のページが表示されます。
[ワークフローの追加] のリンクを選択します。
[ワークフロー] の一覧で、[WorkflowImportProject1 - SPD Workflow Test] を選択します。
[名前] ボックスに" SPD Workflow Test "と入力し、[OK] のボタンをクリックします。
クイック起動バーで、[タスク] の一覧を選択します。
次の横にある矢印を [新しいタスク] ので、一覧のを選択し、[ワークフロー] を選択します。
[新しいワークフローの開始] のセクションでは、[SPD Workflow Test] のリンクを選択し、ワークフローを開始する [開始] のボタンをクリックします。
[!メモ]
ワークフロー設定ウィザードを実行し、ワークフローを自動的に関連付けるように設定にすることによって、リストにワークフローを自動的に関連付けることもできます。
ワークフローによって 2 つのアクションが実行されます。担当者の名前がタスクの [担当者] 列に表示され、お知らせが [お知らせ] ボックスに表示されます。
参照
概念
既存の SharePoint サイトからのアイテムのインポート