SharePoint ホスト型の SharePoint アドインにワークフローを追加する

これは、SharePoint ホスト型の SharePoint アドインの開発の基本に関する記事のシリーズの 6 番目です。SharePoint アドインとこのシリーズの前の記事 (「SharePoint ホスト型の SharePoint アドインの作成を始める | 次の手順」にある記事) をよく理解しておいてください。

注:

アプリとプロセスの自動化には、Microsoft Power Automate を使用することをお勧めします。 Visual Studio 2022 以降、ワークフロー テンプレートは SharePoint アドイン プロジェクトから削除されました。 詳細については、「ガイダンス: SharePoint で従来のワークフローから Power Automate フローに移行する」を参照してください

ヒント

SharePoint ホスト型アドインに関するこのシリーズを続けて学習してきた方は、このトピックでも引き続き使用できる Visual Studio ソリューションをお持ちです。 また、SharePoint_SP-hosted_Add-Ins_Tutorials でリポジトリをダウンロードし、BeforeWorkflow.sln ファイルを開くこともできます。

この記事では、新入社員が人事書類に記入する準備ができたことを人事 (HR) 部門に通知する新入社員オリエンテーション SharePoint アドインにワークフローを追加します。

ワークフローをアドインに追加する

  1. ソリューション エクスプローラーで、プロジェクトを右クリックして、[追加]>[新しいフォルダー] の順に選択します。 フォルダーに Workflows という名前を付けます。

  2. 新しいフォルダーを右クリックし、[追加]>[新しいアイテム] の順に選択します。 [新しいアイテムの追加] ダイアログ ボックスが Office/SharePoint ノードに開きます。

  3. [ワークフロー] を選択し、HR_Intake という名前を付けます。 ワークフローの種類を選択するメッセージが表示されたら、[リスト ワークフロー] を選択し、[次へ] を選択します。

  4. ウィザードの次のページで、[はい...関連付けます] オプションをオンにして、ドロップダウン コントロールを次の値に設定します。

    • [ワークフローに関連付けるライブラリまたはリスト]: シアトルの新入社員
    • [履歴リスト]: <create new>
    • [タスク リスト]: <create new>
  5. [次へ] を選択します。

  6. ウィザードの最後のページで、項目が変更された場合にワークフローを自動的に開始するオプションのみを有効にします。

  7. [完了] を選択します。

    Office Developer Tools for Visual Studio が次の処理を実行します。

    • HR_Intake ワークフローを、ワークフロー デザイナーで開いている子 Workflow.xaml ファイルと共に Workflow フォルダーに作成します。
    • ワークフローの一部であるタスクが作成および更新される WorkflowTaskList リスト インスタンスを作成します。
    • WorkflowHistoryList リスト インスタンスを作成します。これは、ワークフローが実行されるたびに、さまざまな手順を記録するログです。

ワークフローをデザインする

ワークフローは、電子メールを送信し、新入社員がオリエンテーションの建物のツアーのステージを終了し、人事採用書類に記入する準備ができたことを HR のスタッフに通知します。 [シアトルの新入社員] リストの既存のアイテムに変更を加えると、ワークフローがトリガーされますが、ワークフローはリスト項目の [オリエンテーションのステージ] フィールドが HR paperwork に設定されていない限り、何もしません。 設定されると、電子メールが HR スタッフに送信され、その従業員のタスクが WorkflowTaskList に追加されます。

注:

ワークフローを設計する際に、感嘆符が付いた青いひし形のシンボル ( 白い感嘆符が付いた小さな青いひし形 ) が、ワークフロー デザイナーの 1 つ以上の項目に表示されます。 これらは一時的なエラーを示します (記号の上にカーソルを置いて簡単なメッセージを表示するか、Visual Studio エラー一覧 で詳細を確認します)。これらは、ワークフローの不完全さの副作用です。 この手順を終了すると、これらはすべて解決されるはずです。

  1. Visual Studio で [ツールボックス] ペインを開き、[SP - リスト] ノードを展開して、LookupSPListItem をデザイナーのシーケンスにドラッグします。

  2. LookupSPListItem を選択すると、プロパティが Visual Studio [プロパティ] ペインに表示します。 次のプロパティを以下の値に設定します。

    • [ItemID]: (現在の項目)
    • [ListID]: (現在のリスト)
    • [DisplayName]: LookupCurrentNewEmployee

    [プロパティ] ペインは、次のようになります。

    図 1. LookupSPListItem のプロパティ ペイン

    [ItemID]、[ListID]、[DisplayName] のプロパティが設定された、ルックアップ リスト アイテム ワークフロー アクティビティの [プロパティ] ペイン

  3. ペインの外側の任意の場所を選択して、変更を保存します。 デザイナー画面は、次のようになります。

    図 2. ワークフロー デザイナのシーケンス

    [シーケンス] ボックスのあるワークフロー デザイナー。その中には、LookupCurrentNewEmployee という名前のアクティビティがあります。

  4. デザイナーの (新しく名前が変更された) LookupCurrentNewEmployee アクティビティの内側にある [プロパティを取得] リンクをクリックします。 これにより、シーケンスに GetDynamicValueProperties アクティビティが追加されます。

  5. GetDynamicValueProperties アクティビティの [定義...] テキストを選択します。 これにより [プロパティ] ダイアログが表示されます。

  6. [エンティティの種類] を [list_instance_nameのリスト アイテム] に設定します。ここで、list_instance_nameシアトルの新入社員です。

  7. [パス] 列で、一番上のセルを選択して、ドロップダウンから [オリエンテーションのステージ] を選択します。

  8. その下のセルを選択し、ドロップダウンから [従業員] を選択します。

  9. [変数を入力する] を選択します。 これにより、OrientationStage および Title という名前の変数が作成され、New Employees in Seattle リストの現在の項目内で対応するフィールドの各値が割り当てられます。 [プロパティ] ダイアログは、次のようになります。

  10. [OK] を選択します。 デザイナー画面は、次のようになります。

    図 4. ワークフロー デザイナー

    リスト アイテム ルックアップと動的な値の取得の 2 つのアクティビティがあるワークフロー デザイナーです。

  11. Visual Studio で [ツールボックス] ペインを開き、[制御フロー] ノードを展開して、[If][シーケンス] の一番下にある GetDynamicValueProperties の下にドラッグします。

  12. [If][条件] ボックスで、OrientationStage=="HR paperwork" と入力します。

  13. Visual Studio で [ツールボックス] ペインを開き、[SP - ユーティリティ] ノードを展開して、[Email][If] アクティビティの[Then] ボックスにドラッグします。

  14. [Email] アクティビティを選択します。 [プロパティ] ペインで、[Body][Subject][To] プロパティの値を設定します。 いずれの場合も、プロパティの吹き出しボタン . を選択し、次の表のようにプロパティの値を設定するために開く 式エディター を使用します。 これらは C# 文字列式なので、引用符を示すとおり正確に使用してください。 ここの Title は、リスト項目の [Title] フィールドで以前に割り当てた変数です (従業員の名前を保持しています)。

    • 体:Title + " is waiting in the lobby to fill out benefits and employment forms."
    • 件名:Title + " is ready for HR paperwork"
    • 宛先:new System.Collections.ObjectModel.Collection<string>() {"your_O365_email"}

    プレースホルダー your_O365_email を、Office 365 開発者アカウントでログインに使用している ID (*alias*@*O365domain*.sharepoint.com など) に置き換えます。 これは C# 文字列なので、引用符で囲む必要があります。

  15. Visual Studio で [ツールボックス] ペインを開き、[ランタイム] ノードを展開して、TerminateWorkflow[If] アクティビティの [Else] ボックスにドラッグします。

  16. TerminateWorkflow アクティビティを選択して、[プロパティ] ペインで [Reason]"Not at HR paperwork stage." (引用符を含む) と設定します。 デザイナーは次のようになります。

    図 5. ワークフローが完了したときのワークフロー デザイナー

アドインを実行してテストする

  1. F5 キーを使用して、アドインを展開して実行します。 Visual Studio が、テスト用 SharePoint サイトにアドインを一時的にインストールして、すぐにアドインを実行します。 ワークフロー マネージャーの Test Service Host コンソールも開きます。

  2. アドインの既定のページが開くとき、編集用に項目の 1 つが開くので、[オリエンテーションのステージ] の値を人事書類に設定します。

    Test Service Host コンソールで、ワークフローが開始されたことが示されます。 その後すぐに、ワークフローが完了したことが示されます。 例を次に示します。

    図 6. Service Host コンソールをテストする

    ワークフローが開始されたことを示す行に続いて、それが完了したことを示す行があるワークフローのテスト サービス ホスト ウィンドウです。ワークフロー インスタンスの GUID は、各行の先頭にあります。

    注:

    Test Service Host コンソールが開かない場合は、ワークフローのデバッグを有効にする必要があります。 ソリューション エクスプローラーでプロジェクトの名前を右クリックして、[プロパティ] を選択します。 [プロパティ] ペインの [SharePoint] タブを開き、[ワークフロー デバッグの有効化] ボックスをオンにします。

  3. Office 365 開発者アカウントの電子メールの受信トレイ (Outlook) に移動します。 "Employee is ready for HR paperwork." という件名の電子メールがあります。Employee はアイテムを編集した従業員の名前です。 電子メールの本文には、「従業員 はロビーで給付金と雇用フォームを記入するのを待っています」と記載されています。次に例を示します。

    図 7. ワークフローによって送信された電子メール

    ワークフローから送信された、件名が

    ヒント

    ワークフローが開始しても完了せず、電子メールが送信されない場合は、デバッグ セッションを終了して、コードに問題があると判断する前に、さらに F5 キーを数回押してみてください。 問題が SharePoint Online にある場合があります。 それでも問題が解決しないときは、ListFieldsContentType というコンテンツ タイプがない場合は schema.xml ファイルの ContentTypes セクションに追加します。 マークアップの例を次に示します。

    <ContentType ID="0x0100781dd48170b94fdc9706313c82b3d04c" Name="ListFieldsContentType" Hidden="TRUE"></ContentType>

    NewEmployee コンテンツ タイプの FieldRefs セクション全体をこの新しいコンテンツ タイプにコピーします。 プロジェクトを保存し、取り消して、F5 キーをもう一度試してください。

  4. デバッグ セッションを終了するには、ブラウザー ウィンドウを閉じるか、Visual Studio でデバッグを停止します。 F5 キーを選択するたびに、Visual Studio は以前のバージョンのアドインを取り消し、最新のバージョンをインストールします。

  5. このアドインおよび他の記事の Visual Studio ソリューションを操作し、それが終了したら前回のアドインを取り消すとよいでしょう。 ソリューション エクスプローラーでプロジェクトを右クリックして、[取り消し] を選択します。

次の手順

このシリーズの次の記事では、SharePoint ホスト型の SharePoint アドインにカスタム ページとスタイルを追加します。