チュートリアル: SharePoint Designer の再利用可能なワークフローをインポートする
このチュートリアルでは、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 へのエクスポート。
再利用可能なワークフローのインポート プロジェクトを使用した .wsp ファイルの Visual Studio へのインポート。
コードの追加によるワークフローの変更。
SharePoint サイトでのインポートしたワークフローの使用。
Note
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
サポート対象エディションの Microsoft Windows および SharePoint。
Visual Studio.
Microsoft Office SharePoint Designer 2010。
ターゲット SharePoint サブサイトを作成する
まず、2 つの新しい SharePoint サブサイトを作成します。1 つは SharePoint Designer からの再利用可能なワークフローをホストするもので、もう 1 つは変換されたワークフローをホストするものです。
SharePoint サブサイトを作成するには
SharePoint Designer 2010 のメニュー バーで、[ファイル] > [新しい空白の Web サイト] の順に選択します。
[新しい空白の Web サイト] ダイアログ ボックスで、ワークフローを作成する SharePoint サイトを参照するか、http://SystemName/ の値を使用して、[OK] をクリックします。
[ホーム] ページが表示されます。
[サブサイト] セクションで、[新規作成] をクリックします。
[新規作成] ダイアログ ボックスの左ペインの一覧から [SharePoint テンプレート] を選択し、右ペインの一覧から [チーム サイト] を選択します。
[Web サイトの場所を指定する] ボックスで、URL 内の「subsite」の単語を「SPD1」に置き換え、[OK] をクリックします。
これにより、SharePoint Designer への新しいサブサイトが開きます。 SharePoint Designer のインスタンスを閉じ、最初のインスタンスに戻ります (最上位サイト)。
手順 3 ~ 5 を繰り返して 2 番目のサブサイトを作成し、今度は URL の中の「subsite」の単語を「SPD2」に置き換えます。
SharePoint Designer の再利用可能なワークフローを作成する
SharePoint には、この例で使用できる再利用可能なワークフローが含まれていないので、これを作成します。 この単純なワークフローでは、ユーザーがタスク一覧に特定のタイトルを持つ新しいタスクを入力すると、そのタスクがそのユーザーに割り当てられます。
SharePoint Designer の再利用可能なワークフローを作成するには
[サブサイト] セクションで、[SPD1] サイトを選択して変更します。
リボンの [再利用可能なワークフロー] をクリックします。
再利用可能なワークフローの作成ウィザードが表示されます。
[名前] ボックスに「SPD Task Workflow」(SPD タスク ワークフロー) と入力します。
[コンテンツの種類] ボックスの一覧で [タスク] を選択し、[OK] をクリックします。
SharePoint Designer のワークフロー デザイナーでワークフローが開きます。
ワークフロー デザイナーで、手順 1 を選択し、リボンの [条件] をクリックします。
条件の一覧で、[現在の項目フィールドと値が等しいかどうか] を選択します。
この手順により、[フィールドと値が等しい場合] という条件が追加されます。
[フィールドと値が等しい場合] 条件で、[フィールド] リンクを選択します。
値の一覧で [タイトル] を選択します。
[フィールドと値が等しい場合] 条件で、[値] リンクを選択します。
ボックスに「New task」(新しいタスク) と入力します。
これで条件ステートメントには、「If Current Item:Title equals New task」(現在の項目: タイトルが新しいタスクに等しい場合) と表示されます。
条件ステートメントの下の行を選択し、続いてリボンで [アクション] をクリックします。
アクションの一覧で、[現在のアイテムにフィールドを設定する] を選択します。
[フィールドを値に設定する] アクションで、[フィールド] リンクを選択し、一覧から [割り当て先] を選択します。
[フィールドを値に設定する] アクションで、[値] リンクを選択し、既存のユーザーおよびグループの一覧で、[項目を作成したユーザー] を選択します。
[追加] をクリックしてから、[OK] をクリックします。
これでアクション ステートメントには、「Set Assigned To Current Item:CreatedBy」([割り当て先] を [現在の項目: CreatedBy] に設定します) と表示されます。
再利用可能なワークフローを保存および配置する
Visual Studio でインポートできるのは .wsp ファイルだけなので、再利用可能なワークフローを .wsp ファイルとして保存し、Visual Studio にインポートする前に SharePoint にそれを配置する必要があります。
重要
次の手順を実行する際にランタイムエラーが発生した場合は、SharePoint サイトにアクセスできるシステムでこの手順を実行する必要があります。
再利用可能なワークフローを保存し配置するには
SharePoint Designer の上部には、[保存] をクリックしして進行状況を保存し、[発行] をクリックして SPD1 SharePoint サイトにワークフローを配置します。
ナビゲーション ペインで、[ワークフロー] オブジェクトを選択します。
[再利用可能なワークフロー] の下で [SPD タスク ワークフロー] を選択します。
リボンで [テンプレートとして保存] をクリックして .wsp ファイルとしてワークフローを保存します。
ブラウザーで SPD1 SharePoint サイトを開き、SharePoint で .wsp ファイルを表示します。
クイック起動バーで [ライブラリ] リンクを選択します。
[ドキュメント ライブラリ] セクションで [サイトのリソース ファイル] リンクを選択します。
[SPD タスク ワークフロー] ファイルは、他のサイト アセットと共に一覧表示されます。
ファイルの一覧で、そのファイルの名前を選択します
[ファイルのダウンロード] ダイアログ ボックスで、[保存] をクリックして、ローカル システムに .wsp ファイルを保存します。
Visual Studio に .wsp ファイルをインポートする
再利用可能なワークフローのインポート プロジェクトを使用して、.wsp ファイルを Visual Studio にインポートします。 このプロジェクトでは、再利用可能な宣言型ワークフローからコード ワークフローにワークフローを変換します。 ワークフローが変換された後、コードを使用してその動作を変更します。
.wsp ファイルからワークフローをインポートしてそれを変更するには
Visual Studio のメニュー バーから [ファイル]>[新規作成]>[プロジェクト] の順に選択します。
[新しいプロジェクト] ダイアログ ボックスで、[Visual C#] または [Visual Basic] のどちらかの下にある [SharePoint] ノードを展開し、[2010] ノードをクリックします。
[テンプレート] ペインで、[再利用可能な SharePoint 2010 ワークフローのインポート] テンプレートを選択し、プロジェクトの名前を WorkflowImportProject1 のままにして、[OK] をクリックします。
SharePoint カスタマイズ ウィザードが表示されます。
[デバッグのサイトとセキュリティ レベルの指定] ページで、以前に作成した 2 番目の SharePoint サブサイトの URL (http://<システム名>/SPD2) を入力します。
[この SharePoint ソリューションの信頼レベル] セクションで、[ファーム ソリューションとして配置する] オプション ボタンをクリックし、[次へ] をクリックします。
サンドボックス ソリューションとファーム ソリューションの詳細については、「サンドボックス ソリューションの考慮事項」を参照してください。
[新しいプロジェクト ソースの指定] ページで、以前に .wsp ファイルを保存したシステム上の場所を参照し、そのファイルを開き、[次へ] をクリックします。
Note
[完了] をクリックして、.wsp ファイルの利用可能な項目をすべてインポートします。
これにより、インポートに使用できる再利用可能なワークフローの一覧が表示されます。
[インポートする項目の選択] ボックスで、[SPD タスク ワークフロー] ワークフローを選択し、[完了] をクリックします。
インポート操作が終了した後、SPD_Workflow_TestFT という名前のワークフローを含む WorkflowImportProject1 という名前のプロジェクトが作成されます。 このフォルダーでは、ワークフローの定義ファイル Elements.xml とワークフロー デザイナー ファイル (.xoml) です。 デザイナーには、ルール ファイル (.rules) と分離コード ファイル (プロジェクトのプログラミング言語に応じて .cs か .vb のどちらか) の 2 つのファイルが含まれます。
ソリューション エクスプローラーで、[その他のインポートされたファイル] フォルダーを削除します。
Elements.xml ファイルで
InstantiationURL="_layouts/IniErkflIP.sspx"
を削除します。ソリューション エクスプローラーで、[WorkflowImportProject1] を選択し、メニューバーで [プロジェクト] > [スタートアップ プロジェクトに設定] の順に選択して、[WorkflowImportProject1] をスタートアップ アイテムとして設定します。
これにより、プロジェクトをデバッグするとすぐに一覧が表示されます。
[再利用可能な SharePoint 2010 ワークフローのインポート] テンプレートでは、インポートしたワークフローの関連プロパティ値をインポートしないので、これらを入力する必要があります。 方法は次のとおりです。
ソリューション エクスプローラーで、[SPD_Workflow_TestFT] ノードを選択します。
ターゲット リスト プロパティなど、リスト プロパティの横にある省略記号 () ボタンを選択します。
SharePoint カスタマイズ ウィザードで欠損値を入力し、[完了] をクリックします。
.xoml ファイルを選択し、メニュー バーで、[表示] > [デザイナー] の順に選択して、ワークフロー デザイナーにインポートしたワークフローを表示します。
ツールボックスの [Windows Workflow v3.0] ノードで、次の手順のいずれかを実行します。
コード アクティビティのショートカット メニューを開き、[コピー] を選択します。 ワークフロー デザイナーで、SequenceActivity1 アクティビティの下の行のショートカット メニューを開き、[貼り付け] を選択します。
ツールボックスからワークフロー デザイナーにコード アクティビティをドラッグし、それを SequenceActivity1 アクティビティの下の行に接続します。
これにより、ワークフロー デザイナーに CodeActivity1 という名前のアクティビティが追加されます。 このアクティビティで、ユーザーがワークフローを開始したときにお知らせリストにアナウンスを作成するコード アクションを追加します。
次のいずれかの操作を実行します。
[CodeActivity1] をダブルクリックすると、イベント ハンドラーが生成され、コードが表示されます。
CodeActivity1 の [プロパティ] ウィンドウで、ExecuteCode プロパティの値を codeActivity_ExecuteCode に設定します。
既存の using または Imports のディレクティブの下に次を追加します。
codeActivity1_ExecuteCode
を次に置き換えます。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」(新しいタスク) と入力し、[保存] をクリックします。
[リスト ツール] タブで、[リスト] をクリックし、[リストの設定] をクリックします。
[リストの設定] ページが表示されます。
[権限と管理] セクションで、[ワークフロー設定] リンクを選択します。
[ワークフロー設定] ページが表示されます。
[ワークフローの追加] リンクを選択します。
[ワークフロー] ボックスの一覧で、[WorkflowImportProject1 - SPD ワークフロー テスト] を選択します。
[名前] ボックスに「SPD Workflow Test」(SPD ワークフロー テスト) と入力し、[OK] をクリックします。
クイック起動バーで、[タスク] ボックスの一覧を選択します。
[新しいタスク] の横にある矢印をクリックし、一覧で [ワークフロー] を選択します。
[新しいワークフローの開始] セクションで、[SPD ワークフロー テスト] のリンクを選択し、[開始] をクリックしてワークフローを開始します。
Note
または、ワークフロー設定ウィザードを実行し、自動関連付けするようにワークフローを設定して、ワークフローを一覧に自動的に関連付けることができます。
次の 2 つのアクションがワークフローで実行されることに注意してください。名前はタスクの [割り当て先] 列に表示され、アナウンスはお知らせリストに表示されます。