Visual Studio を使用した SharePoint ワークフローでのタスクの操作

SharePoint Server 2013 で導入された変更されたワークフロー タスク フレームワーク (および SharePoint Server 2016、SharePoint Server 2019、SharePoint Server サブスクリプション エディションで使用できる) について説明します。 これは、ワークフロー マネージャー (最近は 'SharePoint ワークフロー マネージャー' に置き換えられた) に基づいて構築されています。関連するお知らせを参照してください)。

提供:Andrew ConnellVoitanos

注:

SharePoint 2010 ワークフローは、新しい SharePoint Online テナントに対して 2020 年 8 月 1 日以降廃止され、2020 年 11 月 1 日に既存の SharePoint Online テナントから削除されました。 SharePoint 2010 ワークフローを使用している場合は、Power Automate またはその他のサポートされているソリューションに移行することをお勧めします。 詳細については、「SharePoint 2010 ワークフローの廃止」を参照してください。

この記事にはエンドツーエンドのコード サンプルが付属しており、記事を読みながら参照したり、独自の SharePoint ワークフロー プロジェクトを開始するときに利用したりできます。 ダウンロード可能なコード については、こちらを参照してください

SharePoint の Windows Workflow Foundation に対する最大のメリットの 1 つは、新規追加および改良されたタスク管理フレームワークの実装のホスティング環境として新しいワークフロー マネージャーが組み込まれていることです。

SharePoint 2007 および SharePoint 2010 でのワークフロー タスクの確認

SharePoint Server 2007 と SharePoint Server 2010 の両方で、同様の方法でワークフロー タスクが実装されました。 リスト、コンテンツ タイプ、またはサイト (SharePoint Server 2010 では) にワークフローの関連付けを作成すると、ワークフロー タスクを作成する場所として特定のリストを指定しました。 このリストは、標準の SharePoint Task コンテンツ タイプ (ID = 0x0108) を使用する標準の SharePoint Task リスト (ID = 107) でした。 その後、ユーザーはリストのアイテムにアクセスし、タスクを表示、編集、完了できました。 ワークフローがそのように構成されている場合、ワークフロー インスタンスはリスト内のタスク アイテムの更新を監視しました。

ただし、SharePoint でのタスク フォームの既定のレンダリングは、カスタム ワークフローであっても、あらかじめ決められていました。 最大限の柔軟性を得るには、タスクをサポートするカスタム フォーム ソリューションを作成するときに、ASP.NET Web フォームまたは InfoPath フォームを使用する必要がありました。

SharePoint Server 2013 のタスクの新機能

SharePoint Server 2013 でタスクを作成、管理、処理する方法は、SharePoint アーキテクチャの変更により変更されました。

最大の変更点は、ワークフローが SharePoint の内部で管理および処理されなくなったことです。 SharePoint では、これらの機能は、外部で実行されるワークフロー マネージャーと呼ばれる新しいコンポーネントを利用して行われます。 ワークフロー マネージャーは、Windows Workflow Foundation ランタイムおよび Windows Workflow Foundation で必要なサービスをホストします。 ワークフローが公開されると、または公開されているワークフローの新しいインスタンスが開始されると、SharePoint はワークフロー マネージャーにそれを通知し、ワークフロー マネージャーはワークフロー エピソードを処理します。 ワークフローは、リスト アイテムのプロパティやユーザーのプロパティなどの SharePoint 内の情報へのアクセスが必要になると、OAuth を使用して認証を行い、REST API を使用して Web サービス呼び出しで SharePoint に応答します。

SharePoint プラットフォームのカスタマイズの全体的な傾向も SharePoint で変わりましたが、この変更は SharePoint 2010 でのセキュリティで保護されたソリューションの実装で始まったものです。 SharePoint において行われた変更により、カスタマイズは SharePoint Server からクライアントのブラウザーまたは外部のリソースに移動されました。 このような変更としては、新しい SharePoint アプリ モデル、アプリ ID の割り当てのサポート、OAuth を使用した認証、クライアント側オブジェクト モデル (CSOM) の強化、REST API などがあります。

SharePoint でのワークフロー タスクのアーキテクチャに関する変更

SharePoint でのアーキテクチャの変更は、ワークフロー タスクにどのような影響があるでしょうか。 ワークフロー タスクの場合、カスタム タスク フォームを操作する場合を除き、影響は重要ではありません。 これまでは、InfoPath または ASP.NET の Web フォームを使用してタスク フォームを作成しました。 一方、SharePoint では、既定のリスト アイテム レンダリング フォームをワークフロー タスクに使用します。

タスク フィールドの外観や動作をカスタマイズする必要がある場合があります。 これを行うには、サイト列を含むカスタム タスク コンテンツ タイプを作成します。 サイト列では、SharePoint で新しいクライアント側レンダリング フレームワークを使用できます。これには、ブラウザーでのフィールドの外観と動作方法を定義する JavaScript ファイルを作成する必要があります。

クライアント側のレンダリングの使用方法の詳細については、「 Client-Side レンダリングを使用して SharePoint 用アプリでリスト ビューをカスタマイズする方法」を参照してください。

個々のタスク アイテムは、コンテンツ タイプに基づいています。 重要なのは、SharePoint Server 2013 のコンテンツ タイプにいくつかの変更があります。 SharePoint Server 2007 および SharePoint Server 2010 では、ワークフロー タスクが タスク コンテンツ タイプ (ID = 0x0108) で作成されました。 これは、タスク リストでワークフロー以外のタスクを手動で作成するために使用されるのと同じコンテンツ タイプです。 SharePoint Server 2013 は、新しいコンテンツ タイプ であるワークフロー タスク (SharePoint 2013) ( ID = 0x0108003365C4474CAE8C42BCE396314E88E51F) を導入することでこれを変更します。これは、タスク コンテンツ タイプから継承され、タスクがワークフローにのみ使用されることを示します。

この新しい Workflow Task コンテンツ タイプと従来の Task コンテンツ タイプの違いは、2 つの新しい列があることです。

  • WorkflowInstanceId: タスクを作成したワークフロー インスタンス識別子への参照が含まれます。これは、ワークフロー インスタンスの状態ページなどの場所で使用されます。 状態ページでは、このフィールドを使用して、 WorkflowInstanceId 列に指定された ID が含まれるすべてのリスト アイテムについて、関連付けられているワークフロー タスク リストを照会できます。

  • TaskOutcome: タスク フォームのプレゼンテーションで、ユーザーが異なる完了条件オプションを選択できるようにするために使用される選択フィールドです。 タスク編集フォームでは、フォーム下部の [ 保存] および [ キャンセル] ボタンの隣に、指定されたワークフロー タスクの結果がボタンとして表示されます。 SharePoint のワークフローは、図 1 に示すように、[ 承認済み] と [ 拒否] の 2 つのオプションだけに限定されません。

    図 1. ワークフロー タスクの結果 このスクリーンショットは、SharePoint のワークフローが、[承認済み] と [拒否] の 2 つのオプションのみに限定されていないことを示しています。

コンテンツ タイプは、ワークフロー タスクの一部です。 コンテンツ タイプは、タスク リスト アイテムの構造を示しているだけです。 タスク リスト テンプレートも同じように重要であり、やはり SharePoint で変更されています。

SharePoint より前のワークフロー タスク リストでは、標準タスク リスト (ID = 107) と同じリスト テンプレートが使用されていました。 これは標準の SharePoint タスク リストであり、ワークフロー以外のタスクも格納できました。 SharePoint では方法が異なり、新しいタイプのリストが導入されています。 階層タスク リストと呼ばれるこのリストでは、図 2 のように、タスクのスケジュールを示すタイムライン ビューがページの上部に表示されます。 また、ユーザーはタスクの依存関係を表示することもできます。

図 2. 階層タスク リスト このスクリーンショットは、階層タスクの一覧を示し、ページの上部にあるタイムライン ビューを導入してタスクのスケジュールを示しています。

SharePoint でのワークフロー タスク オプションの作成

SharePoint Designer 2013 と Visual Studio の両方で、ワークフロー作成者はワークフロー タスクを作成する 2 つの方法を提供します。 1 番目の方法では、1 つのタスクを作成して 1 人のユーザーまたは 1 つのグループに割り当てます。 2 番目の方法では、1 つのタスクを作成してそれを複数のユーザーに割り当てます。 Visual Studio を使用してカスタム ワークフローで 1 つのタスクを作成する場合は、 SingleTask アクティビティを使用します。 このアクティビティを使用することにより、[プロパティ] ツール ウィンドウまたはウィザードでプロパティを変更できます (図 3 を参照)。

図 3. 単一タスク ウィザード スクリーンショットは、[プロパティ] ツール ウィンドウまたはウィザードでプロパティを変更する方法を示しています。

SharePoint を使用すると、複数のタスクを連続して実行するか並列で実行するか、タスク完了の条件を指定するかを指定できます。 SharePoint は、すべてのタスクが完了するのを待つ必要がありますか、または特定の結果でそれらのタスクの割合が完了するまで待機する必要がありますか? Visual Studio で複数のタスクを作成するには、図 4 に示すように、ウィザードとプロパティが SingleTask アクティビティに似ている CompositeTask アクティビティを 使用します。

図 4. コンポジット タスク ウィザード このスクリーンショットは、Visual Studio で複数のタスクを作成する方法を示しています。

カスタム ワークフローのタスクを作成して割り当てる方法

次のチュートリアルでは、カスタム ワークフローのタスクを作成して割り当てる方法を示します。 始める前に、SharePoint 開発者向けサイトにアクセスできることを確認してください。

1. 新しい SharePoint アプリ プロジェクトを作成する

  1. 新しい SharePoint アプリ プロジェクトを作成し、プロジェクトを SharePoint ホスト型アドインとして構成します。
  2. 新しい Announcement リスト インスタンスをプロジェクトに追加します。 これは、ワークフローのテストで使用されるアイテムのコンテナーとして使用されます。
  3. [ ソリューション エクスプローラー] のプロジェクト アイコンを右クリックし、[ 追加]、[ 新しいアイテム] の順に選択して、ワークフロー アイテムをプロジェクトに追加します。
  4. [新しい項目の追加] ダイアログ ボックスで、Office/SharePoint カテゴリからワークフロー プロジェクト項目を選択し、"CustomTaskWorkflow" という名前を付けて、[次へ] を選択します。

2. 新しいお知らせアイテムについての情報を収集する

ワークフローでタスクを作成し、ワークフローを開始するアナウンス リスト アイテムを作成したユーザーに割り当てます。 リスト アイテム自体は、ワークフローに情報を提供します。 LookupSPListItemProperties アクティビティを使用します。これは、SharePoint で呼び出す REST Web サービスから動的な値を返します。 次に、この値を AnnouncementItemProperties という名前の新しい変数に格納します。そのデータ型は DynamicValue に変更されます。

  1. リスト アイテムを作成したユーザーの ID を格納するために、 AnnouncementItemAuthorId 変数を作成します (図 5 を参照)。

    図 5. LookupSPListItemProperties アクティビティ スクリーンショットは、AnnouncementItemAuthorId 変数を作成して、リスト アイテムを作成したユーザーの ID を格納する方法を示しています。

  2. LookupSPListItem アクティビティをワークフロー デザイン サーフェイスにドロップし、 ListID プロパティを (current list) に設定します。

  3. ItemId(current item) に設定します。

  4. Result の出力を、前に作成した AnnouncementItemProperties 変数に設定します。

  5. 変数から項目の作成者を取得するには、LookupSPListItem アクティビティの [プロパティの取得] リンクを選択し、GetDynamicValueProperties アクティビティをデザイン画面に追加します。 その Source プロパティを、 LookupSPListItem アクティビティの出力に設定します。

  6. [プロパティ] プロパティの [???] ボタンを選択して、[プロパティ] ダイアログ ボックスを表示します。

  7. 図 6 に示すように、[プロパティ] ダイアログ ボックスで、エンティティの種類お知らせリストのアイテムに変更します。

  8. [ 作成者] パスを変数 AnnouncementItemAuthorId に割り当てます (図 6 を参照)。

    図 6. [プロパティ] ダイアログ スクリーンショットは、変数 AnnouncementItemAuthorId に Create By パスを割り当てる方法を示しています。

3. タスクを作成して割り当てる

ここでは、タスクを作成し、お知らせアイテムの作成者に割り当てることができます。

  1. ツールボックスで、 SingleTask アクティビティをワークフロー デザイン サーフェイスに追加します。

  2. アクティビティの [構成 ] リンクを選択して 、[タスク オプション] ダイアログ ボックスを開きます。

  3. [ 担当者] プロパティを、作成者 ID の格納に使用されている変数に設定します。

  4. 図 7 に示すように、タスクのタイトルと本体を変更します。

    図 7. [タスクのオプション] ダイアログ スクリーンショットは、タスクのタイトルと本文を変更する方法を示しています。

[タスクのオプション] ダイアログ ボックスには、設定できるオプションが他にもいくつかあります。 たとえば、ボックスを選択するだけで、タスクの完了を待つワークフローを設定できます (図 7 を参照)。 以前のバージョンの SharePoint のワークフローでこれを行うには、難しい回避策が必要でした。

図 8 で設定できる電子メール オプションを確認してください。 他のオプションの中でも、タスクが期限切れになったときに電子メール メッセージを確実に送信し、アラームを送信する頻度を指定できます。

図 8. 電子メール オプションの設定 スクリーンショットは、設定できるメール オプションを示しています。

タスクの結果オプションを設定することもできます。 ワークフロー タスクのコンテンツ タイプ、[結果フィールド]、[既定の結果] を選択できます (図 9 を参照)。

図 9. 結果オプションの設定 スクリーンショットは、ワークフロー タスクのコンテンツ タイプ、結果フィールド、および既定の結果を示しています。

4. タスクのプロパティを確認して修正する

[ タスクのオプション] ダイアログ ボックスで値を確定した後は、 SingleTask アクティビティを選択し、[ プロパティ] プロパティ グリッドを調べます (図 10 を参照)。

図 10. プロパティ ツール ウィンドウ スクリーンショットは、SingleTask アクティビティを選択し、[プロパティ] プロパティ グリッドを調べる方法を示しています。

[ プロパティ] プロパティ グリッドを使用すると、タスクが完了してから先に進むかどうかを指定でき、タスクで生成される電子メール メッセージ (初期割り当て電子メール メッセージ、期限切れ電子メール メッセージ、タスク キャンセル電子メール メッセージなど) を構成できます。

Outcome プロパティによって outcome_0 という名前の変数がタスクに自動的に作成されていることに注意してください。 この変数の内容を表示するには、デザイン サーフェイスに WriteToHistory アクティビティを追加し、結果を書き出すようにメッセージを更新します (図 11 を参照)。

図 11. 結果プロパティの値 スクリーンショットは、デザイン画面に WriteToHistory アクティビティを追加し、メッセージを更新して結果を書き出す方法を示しています。

5. ワークフローをテストする

ワークフローをテストするには次のようにします。

  1. F5 キーを押してビルドして実行するか、Visual Studio の [スタート] ボタンを選択します。 SharePoint のオンプレミス インストールでテストする場合、Visual Studio は ワークフロー マネージャー Test Service Host ユーティリティを起動し、ワークフローを開発者サイトにデプロイします。 しばらくすると、開発者向けサイトが開きます。

  2. [ お知らせ] リストに移動してリスト アイテムを作成した後、カスタム ワークフローを手動で開始します。

  3. ワークフロー インスタンス状態ページに戻り、ワークフローによって作成されたタスクを探します。 タスクを選択してフォームを表示します。 ワークフローで定義された [タスク名] フィールドと [担当者] フィールドに注目してください (図 12 を参照)。

    図 12. タスク フォーム スクリーンショットは、ワークフローで定義された [タスク名] フィールドと [割り当て先] フィールドを示しています。

  4. 最後に、タスクに戻り、フォームを編集し、[ 承認 ] または [ 拒否 ] を選択してタスクを完了します。 タスクの結果が、ワークフロー インスタンスの [ワークフローの履歴] リストに表示されます (図 13 を参照)。

    図 13. [ワークフローの履歴] リスト このスクリーンショットは、タスクの結果がワークフロー インスタンスの [ワークフロー履歴] リストに表示されていることを示しています。

カスタム結果でカスタム タスクの種類を作成する方法

前のチュートリアルでは、簡単なタスクを作成してプロパティを構成する方法を示しました。 ただし、既定のオプションがニーズを満たしていない場合があります。 たとえば、ユーザーにドキュメントのレビューを求めるタスクがあるものとします。 下書きドキュメントをレビューした後、ユーザーは下書きドキュメントを作成者に差し戻して修正を求めるか、ドキュメントを編集者に送る必要があります。 残念ながら、既定のオプション ([ 承認] および [ 却下]) ではレビューのニーズは満たされません。 [作成者に戻す] や [編集者に送る] といったさらに適切なオプションが必要です。

SharePoint Designer 2013 または Visual Studio を使用してワークフローを作成する場合は、カスタム タスクの結果を含むカスタム ワークフロー タスクを作成できます。 これを行うには、特別なコンテンツ タイプとしてカスタム タスクを作成し、必要な結果を定義するカスタム サイト列を追加します。 選択フィールドである OutcomeChoice というフィールド型からカスタム列を派生させることができます。

ただし、この方法には、カスタム タスクの派生元のコンテンツ タイプは Workflow Task (SharePoint) であり、その既定の TaskOutcome サイト列には [ 承認] および [ 却下] オプションが含まれるという問題があります。 ただし、既定の設定を回避するには、カスタム タスク コンテンツ タイプから TaskOutcome 列を削除し、ワークフロー タスクリストに存在しないことを確認します。 そうしないと、複数のオプションが表示されます。 たとえば、"Red Pill" と "Blue Pill" という 2 つのオプションがあるカスタムの結果を考えてみましょう。既定の結果が削除されない場合、タスクを完了したユーザーには、それらの結果オプションが適用されない場合でも、図 14 に示すように、使用可能なすべての結果オプションが表示されます。

図 14. 結果オプション スクリーンショットは、既定の結果が削除されていない場合の動作を示しています。

最善の方法は、作成するタスクの種類ごとに異なるワークフロー タスク リストを作成することです。

SharePoint アプリ プロジェクトを作成する

Visual Studio を使用してカスタム ワークフロー タスクを作成するためのチュートリアルを開始するには、まず、SharePoint Server 2013、SharePoint Server 2016、SharePoint Server 2019、または開発者サイトSharePoint Server サブスクリプション エディションアクセスできるようにする必要があります。

  1. Visual Studio で、SharePoint ホスト型アドインとして構成された新しい SharePoint アプリ プロジェクトを作成します。
  2. 新しい Announcement リスト インスタンスをプロジェクトに追加します。 これは、ワークフローのテストに使用される項目のコンテナーとして使用します。
  3. 次に、[ ソリューション エクスプローラー] のプロジェクト アイコンを右クリックし、[ 追加]、[ 新しいアイテム] の順に選択して、ワークフロー アイテムをプロジェクトに追加します。
  4. [新しい項目の追加] ダイアログ ボックスで、Office/SharePoint カテゴリからワークフロー プロジェクト項目を選択し、"CustomTaskWorkflow" という名前を付けます。[次へ] を選択します。

カスタム結果列を作成する

Announcements リストを作成した後、カスタム タスクを含むカスタム コンテンツ タイプおよびカスタム結果フィールドのサイト列を作成します。

  1. プロジェクトを右クリックし、[ 追加]、[ 新しいアイテム] の順に選択します。
  2. [ サイト列] プロジェクト アイテム テンプレートを選択し、このフィールドの名前を "CustomOutcomeColumn" に設定します。 サイト列のテンプレートではいくつか変更を行う必要があります。
  3. 列のフィールド型を OutcomeChoice に設定します。結果列の場合はこのフィールド型にする必要があります。
  4. [ 必須] 列を削除します。
  5. 次に、 OutcomeChoice フィールド型は選択フィールド型が基になっているので、選択肢をいくつか追加します。

新しいカスタム サイト列のマークアップは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Field
       ID="{7b7edd9e-f5d1-4558-a2c8-e733dcfb0a5e}"
       Name="CustomSiteColumn"
       DisplayName="Better State"
       Type="OutcomeChoice"
       Required="FALSE"
       Group="Custom Site Columns">
       <CHOICES>
         <CHOICE>Florida</CHOICE>
         <CHOICE>Georgia</CHOICE>
       </CHOICES>
       <Default>Florida</Default>
  </Field>
</Elements>

カスタム タスクのコンテンツ タイプを作成する

サイト列を作成した後、カスタム タスク用の特別なコンテンツ タイプを作成します。

  1. 新しいコンテンツ タイプ プロジェクト アイテムを CustomTaskContentType という名前でプロジェクトに追加します。
  2. 基になるコンテンツ タイプの選択を求められたら、 Workflow Task (SharePoint) コンテンツ タイプを選択します。
  3. 次に、使用可能な列のリストにカスタム結果列を追加し、既定の結果列を削除します。コンテンツ タイプのマークアップは次の例のようになります。
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <!-- Parent ContentType: Workflow Task (SharePoint 2013) (0x0108003365C4474CAE8C42BCE396314E88E51F) -->
  <ContentType
      ID="0x0108003365C4474CAE8C42BCE396314E88E51F00D368DFB2B31A447BB184BA1334E5119E"
      Name="CustomContentType"
      Group="Custom Content Types"
      Description="My Content Type"
      Inherits="TRUE" Version="0">
      <FieldRefs>
         <FieldRef
            ID="{7b7edd9e-f5d1-4558-a2c8-e733dcfb0a5e}"
            DisplayName="Better State"
            Required="FALSE"
            Name="CustomSiteColumn" />
            <RemoveFieldRef
               ID="{55B29417-1042-47F0-9DFF-CE8156667F96}"
               Name="TaskOutcome" />
      </FieldRefs>
  </ContentType>
</Elements>

ワークフローを作成する

次に、ワークフローを作成し、カスタム サイト列とコンテンツ タイプをテストできるようにします。

  1. ワークフローをプロジェクトに追加し、リスト ワークフローとして構成します。

  2. 前に作成した [ お知らせ] リストを使用して、このワークフローとの関連付けを作成します。

  3. DynamicValue 型の新しい変数を作成し、"ItemProperties" という名前を付けます。この変数を使用して、ワークフローのプロパティを開始する項目を格納します。

  4. Int32 変数を作成し、名前を "ItemAuthorId" に設定します (図 15 を参照)。

    図 15. ワークフロー変数の作成 スクリーンショットは、Int32 変数を作成し、

リスト アイテムのプロパティを収集する

次に、リスト アイテムのプロパティを収集します。

  1. LookupSPListItem アクティビティをデザイン サーフェイスにドロップし、 ListID プロパティを (current list) に、 ItemId プロパティを (current item) に設定します。

  2. 次に、 ほど作成した ItemPropertiesDynamicValue 変数に結果出力を設定します。

  3. 変数から項目の作成者を取得するには、LookupSPListItem アクティビティの [プロパティの取得] リンクを選択し、デザイン画面に GetDynamicValueProperties アクティビティを追加します。

  4. アイテムの Source プロパティを LookupSPListItem アクティビティの出力に自動的にセットします。

  5. [プロパティ] プロパティの [???] ボタンを選択して、[プロパティ] ダイアログ ボックスを表示します。

  6. Entity TypeList Item of Announcements に変更してダイアログ ボックスにコンテキストを提供し、 Created By パスを変数 ItemAuthorId に割り当てます (図 16 を参照)。

    図 16. [プロパティ] ダイアログ スクリーンショットは、[エンティティの種類] を [お知らせ] の [リスト アイテム] に変更する方法を示しています

単一のタスクを作成する

次に、タスクを 1 つ作成します。

  1. SingleTask アクティビティをデザイン サーフェイスに追加します。

  2. アクティビティの [構成 ] リンクを選択して 、[タスク オプション] ダイアログ ボックスを開きます。

  3. [本文] フィールドを文字列に設定し (何も関係ありません)、作成者識別子 (ここでは ItemAuthorId) を格納するために使用している変数に Assigned To プロパティを設定します。

  4. タスクのタイトルを図 17 のように変更します。

    図 17. タスク タイトルの設定 スクリーンショットは、タスクのタイトルを変更する方法を示しています。

  5. 最後に、[ 結果オプション] を、新しいカスタム コンテンツ タイプおよびカスタム結果列を使用するように設定します。

    Workflow Task (SharePoint 2013) コンテンツ タイプから派生されるすべてのコンテンツ タイプを調べて、使用できるものが決定されます (図 18 を参照)。

    図 18. 結果オプションの設定 スクリーンショットは、ワークフロー タスク コンテンツ タイプから派生したすべてのコンテンツ タイプを確認することで、ダイアログ ボックスで使用可能な内容が決定されることを示しています。

AssignedTo フィールドを更新する

さらに進む前に、SingleTask アクティビティの AssignedTo フィールドを更新する必要があります。これは、整数ではなく文字列を想定しているためです。 これを解決するには、式の末尾に ToString() を追加します。

また、 Outcome プロパティで outcome_0 という名前の変数が自動的に作成されていることに注意してください。 この変数の内容を表示するには、デザイン サーフェイスに WriteToHistory アクティビティを追加し、結果を書き出すようにメッセージを更新します。

ワークフロー タスク リストを更新する

最後の手順では、ワークフロー タスクリストを構成します。 既定では、アプリによって作成されるタスク リストは、コンテンツ タイプの ワークフロー タスク (SharePoint 2013) のみを受け入れます。 このワークフローでは、カスタムの結果にカスタム コンテンツ タイプが使用されます。 ワークフロー タスク リストのElements.xmlファイルを開き、次のコード例に示すように、ContentTypeBinding> 要素の ContentTypeId 属性をプロジェクトのコンテンツ タイプと一致するように変更<します。

<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <ListInstance
      FeatureId="{f9ce21f8-f437-4f7e-8bc6-946378c850f0}"
      TemplateType="171"
      Title="WorkflowTaskList"
      Description="This list instance is used for workflow Task items."
      Url="Lists/WorkflowTaskList"
      RootWebOnly="FALSE" />
  <!-- CustomContentType -->
  <ContentTypeBinding
      ListUrl="Lists/WorkflowTaskList"
      RootWebOnly="FALSE"
      ContentTypeId="0x0108003365C4474CAE8C42BCE396314E88E51F00D368DFB2B31A447BB184BA1334E5119E"/>
</Elements>

カスタム タスク結果を含むカスタム コンテンツ タスクをテストする

それではワークフローをテストします。

  1. Visual Studio で F5 キーを押すか、[ スタート ] ボタンを選択します。 SharePoint のオンプレミスのローカル インストールでテストする場合、Visual Studio は ワークフロー マネージャー Test Service Host ユーティリティを開始し、ワークフローを開発者サイトにデプロイします。 しばらくすると、開発者向けサイトが開きます。

  2. [ お知らせ] リストに移動して新しいアイテムを作成します。 アイテムを作成した後、カスタム ワークフローを手動で開始します。

  3. 次に、ワークフロー インスタンスの状態ページに戻り、ワークフローによって作成されたタスクを探します。

  4. タスクを選択し、リボンの [編集 ] ボタンを使用して編集モードに切り替えます。 フォームの下部に 4 つのボタンがあります。 最初の 2 つのボタンはカスタム結果ボタンであり、クリックすると、タスクが完了としてマークされます。 次の 2 つのボタンは既定の [保存] ボタンと [キャンセル] ボタンで、タスクを完了しないでリスト アイテムの更新だけを行います (図 19 を参照)。

    図 19. カスタムの結果ボタン スクリーンショットは、2 番目の 2 つのボタンが、タスクを完了せずにリスト アイテムを更新する既定の [保存] ボタンと [キャンセル] ボタンであることを示しています。

まとめ

Microsoft は SharePoint Server 2007 プラットフォームにワークフローを導入し、アーキテクチャ、実装、またはプロセスの SharePoint Server 2010 ではほとんど変更されません。 SharePoint ワークフローのタスクについても同様です。 ただし、SharePoint Server 2013 では、アーキテクチャと実装のワークフローに多くの変更が導入されています。 (これらの変更は、SharePoint Server 2016、SharePoint Server 2019、SharePoint Server サブスクリプション エディションで引き続きアクセスできます)。

この記事では、SharePoint のワークフロー ストーリーへの変更から駆動されたワークフロー タスクに関連する変更について説明します。 Visual Studio を使用して SharePoint でタスクを適用する単純なワークフローを作成する方法を示しました。 これらの種類のタスクは多くの開発者に適していますが、カスタム タスクやカスタムの結果が必要な場合は、示されているように Visual Studio を使用して実行できます。

こちらもご覧ください