ワークフロー参照を定義する

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

参照を使用して、ワークフローで動的データを表示することができます。実行中のワークフローで参照を行うことで、リスト、ライブラリおよびワークフロー データなどのさまざまなデータ ソースからデータを取得することができます。また、参照では、サイトを使用するユーザー用にカスタマイズしたエンドユーザー エクスペリエンスを作成することもできます。

ここでは、参照に関するいくつかの概念的な情報を提供し、ワークフロー参照の定義方法について説明します。また、参照の操作と一意の参照の実現に関するヒントを示します。

この記事の内容

データのバインドと参照について

参照を使用する、カスタマイズされたエンドユーザー エクスペリエンスの作成について

ID が便利な理由

参照のしくみ

現在の項目の値を検索する

ワークフロー データの値を検索する

フィールドと値をフィルター条件として指定して、リストまたはライブラリの値を検索する

確実に参照値を一意にするためのヒント

参照について知っておくべきこと

データ バインドと参照について

データ バインドにより、ワークフロー参照が可能になります。データ バインドは、Office SharePoint Designer 2007 で利用される Microsoft ASP.NET テクノロジの機能です。データ バインドで、データベース内のさまざまなデータ ソースのデータをリンクすることができます。Office SharePoint Designer 2007 では、ワークフローでデータ バインドを行うことで、リスト、ライブラリ、および変数や開始パラメーターなどのワークフロー データなどのデータ ソースからデータを取得できます。ワークフロー参照では、ワークフローの実行時にデータ ソースからデータを取得し、取得したデータを使用して、他のいくつかのワークフロー アクションを実行できます。参照では、データ ソースとワークフローの間の接続を作成します。

現在の項目、ワークフロー データ、およびその他の SharePoint リストやライブラリへの参照を挿入することができます。

参照の挿入先

説明

現在の項目

ワークフローの現在のインスタンスを開始した項目を意味します。このオプションを選択すると、ワークフローが現在実行されている項目から値を選択できます。

ワークフロー データ

ワークフローの現在のインスタンスの一部であるワークフロー変数を意味します。このオプションを選択すると、現在のワークフローでワークフローの変数と開始パラメーターを使用できます。

その他のリストとライブラリ

現在の SharePoint サイトのその他のリストおよびライブラリからデータを取得することもできます。

ページの先頭へ

参照を使用する、カスタマイズされたエンドユーザー エクスペリエンスの作成について

参照では、サイト ユーザー用にカスタマイズされたエンドユーザー エクスペリエンスも提供されます。たとえば、あなたがチーム サイトの共有ドキュメント ライブラリにドキュメントを送信したコンテンツ作成者だとします。その場合、ドキュメントをアップロードするたびに該当する校閲者に通知する自動電子メール メッセージを送信するためのワークフローが必要になります。ワークフローに電子メール メッセージへの参照を追加することで、カスタマイズされたエンドユーザー エクスペリエンスを作成できます。これは、ドキュメントがアップロードされるたびに、ワークフローでは、電子メール本文のドキュメント名に従って該当する校閲者に自動的に電子メールが送信されることを意味します。

次の図では、参照を使用できる電子メール メッセージの場所のいくつかが強調表示されています。

ルックアップを挿入できる領域を強調表示しているメール メッセージ

強調表示されている領域を参照で置き換えると、電子メール メッセージは以下のようになります。

ルックアップ付きメール メッセージ

電子メール本文で参照項目がどのように表示されているかに注目してください。参照を定義すると、参照を入力した場所に、[%データ ソース:フィールド名%] の形式で表示されます。したがって、データ ソースが Shared Documents で、値の取得元フィールドが Reviewer name と参照を定義した場合、参照項目は [%Shared Documents:Reviewer name%] と表示されます。

注: 電子メール メッセージの [To:]、[CC:]、および [件名] 行には、参照項目の角かっこ [ ] とパーセント アイコン % は表示されません。

共有ドキュメント ライブラリにドキュメントがアップロードされると、校閲者は、アップロードされたドキュメントの名前を含む自動電子メールを受信します。ワークフローの実行中に、参照ではさまざまなデータ ソースからデータが取得され、そのデータは電子メール メッセージに表示されます。

ルックアップを挿入できる領域を強調表示しているメール メッセージ

ページの先頭へ

ID が便利な理由

SharePoint リストまたはライブラリを表と考えることができます。各表は行と列で構成されます。

リストから特定の値を取得するワークフロー参照の場合は、フィールド (列) と項目 (行) を指定する必要があります。

ワークフロー参照では現在のサイトの任意のリストやライブラリから値を取得できますが、毎回、指定するフィールド (列) と項目 (行) の情報が必要になります。

[タスク] リスト

Office Access 2007 や Microsoft SQL Server などのリレーショナル データベースを使い慣れているのであれば、サイト内の各リストとライブラリをデータベース内の個別の表と考えるとわかりやすい場合があります。

すべてのリストとライブラリに主キーとして機能する ID 列があります。データベースでは、主キーは行ごとに一意の識別子を指定する表のフィールド (またはフィールドのセット) です。

ID 列は、以下の理由により、適切な主キーの条件をすべて満たします。

  • 各行を一意に識別する。

  • 空や null になることはない。

  • 変わることがない。

ID 列は、リストまたはライブラリの任意のビューに追加することによって表示できます。

さまざまな SharePoint のリストに表示されている ID 列

ID はリストやライブラリの主キーであるため、後述の例に示すように、特に特定の項目 (または行) を識別するためのワークフロー参照で便利です。

ページの先頭へ

参照のしくみ

前のセクションで説明したように、リレーショナル データベースを使い慣れているのであれば、サイト内の各リストとライブラリをデータベース内の個別の表と考えるとわかりやすい場合があります。

実際に、リストとライブラリ内のデータは SQL Server の表に格納されます。(各リストとライブラリがデータベース内の個別の表に対応しているというのは、技術的には事実に反することですが、ワークフロー参照に関して言えば、このメンタル モデルが役に立ちます。)

リレーショナル データベースを使い慣れているのであれば、参照の定義はデータベースの照会によく似たものと考えられます。たとえば、以下のような参照があるとします。

サンプルの参照

この参照では、“Tasks リストから、タスク項目の ID とワークフローのこのインスタンスの変数である Task item ID に格納されている ID が一致する場合に Status フィールドの値を選択します。"

上記の参照は以下の SQL クエリとして読み取ることができます。SQL クエリでは SELECT キーワードを使用して、指定された表 (この例の場合は、特定のリストまたはライブラリ) からデータを取得します。

例 1: SQL クエリに対するルックアップの類似点

または

例 2: SQL クエリに対するルックアップの類似点

ページの先頭へ

現在の項目の値を検索する

最も基本的な種類の参照では、現在の項目のフィールドの値を検索します。

現在のアイテムのルックアップを行う

この参照では、"現在の項目から、Name フィールドの値を選択します。"指定する必要があるのはフィールド (列) のみであるため、この参照を行うのは簡単です。項目 (行) は現在の項目として固定されています。つまり、選択できるのは 1 行だけです。そのため、この種の参照は "フラット" 参照と呼ばれることもあります。

現在のアイテムのルックアップにより、指定した列の値を取得する

ページの先頭へ

ワークフロー データの値を検索する

前のセクションで説明したように、現在の項目での値の参照は常に "フラット" 参照となります。これは、行が現在の項目として固定されており、指定する必要があるのは列 (フィールド) のみであるためです。

同様に、ワークフロー データ (つまり、ワークフローの変数と開始パラメーターに格納されているデータ) の参照もフラット参照となります。これは、すべての変数に保持できるのは 1 つの値のみであるためです。変数に格納されている値はワークフロー インスタンスによって変わる場合があります。また、この値は、ワークフローが [ワークフローの変数を設定する] アクションを使用して変数を別の値に設定した場合など、ワークフローのある時点で変わる可能性があります。ただし、変数には常に 1 つの値しか含まれないため、ワークフロー データの参照は常にフラットになります。

タスク アイテム ID というワークフロー変数をルックアップ

ワークフロー データを、ワークフローでデータの書き込みと格納が行われる一連の場所を含むスクラッチ バッドに存在するものと考えることができます。この一連の場所は単一 "行" を構成します。これは、各場所 (変数またはパラメーター) に単一値しか含まれていないためです。

ワークフローの変数はスクラッチパッドのような場所に存在する

ワークフローのこのインスタンスが完了すると、スクラッチ パッドに書き込まれた値は削除され、ワークフローの次のインスタンスでは独自の値がキャッシュされます。

ページの先頭へ

フィールドと値をフィルター条件として指定して、リストまたはライブラリの値を検索する

現在の項目が存在するリスト、または別のリストにフィルター条件を適用して、項目の値を検索するときに、参照ダイアログが展開されます。

異なるリストの値を参照する

展開される理由は、必要な値のフィールド (列) をダイアログの上半分で指定するためです。ただし、フィルター条件を適用するため、必要な値の項目 (行) も指定する必要があります。また、リストを単一行までフィルタリングするためにフィルター条件として使用可能な値を含むフィールドを選択して、一意の行を識別します。たとえば、この参照では、必要な値を含む項目 (行) を認識する必要があります。ダイアログの上半分で列を指定した場合は、行が必要になります。

強調されたタスク ステータス

ページの先頭へ

フィルター条件として静的値を使用する

より基本的な (一般的にあまり役に立たない) 種類の参照では、静的値 (リテラルと呼ばれる) を入力して必要な項目または行を見つけます。たとえば、Tasks リストを参照し、Recommendation フィールドが "Reject" に等しい最初のタスク項目から Recommendation フィールドの値を選択します。

静的な値を取得するルックアップの例

[OK] をクリックすると、以下の警告が表示されます。

ルックアップによって取得した値が固有でないことを示す警告ダイアログ ボックス

これは、以下の図に示されているように、Tasks リストには、"Reject" に等しい Recommendation フィールドを含む多数の項目が表示される可能性があるため、参照でその条件を満たす多数の項目が検索されることを意味します。この例では、以下のように、RecommendationReject の場合に Tasks リストの最初の項目から Recommendation フィールドの値が取得されます。

ルックアップで取得される最初の値を強調表示したリスト

特にカスタム リストで作業する場合など、この種の参照が必要な特定のシナリオがあります。このことを例を使って説明します。たとえば、以下に示されているように、各地域の地域マネージャーをリストするカスタム リストがあるとします。

地域管理者のカスタム リスト

あなたのチームは Northeast 地域にあるため、関心があるのは 1 つの地域のみです。別のリスト (Regional Managers ではない) に適用されたワークフローがあり、そのワークフローで、Regional Managers リストから Northeast 地域のシニア マネージャーを検索する必要があります。カスタム リストにユーザーを格納し、ワークフローでこのデータを検索するように設定すれば、ワークフローで常に最新データを動的に取得できるだけでなく、自分の地域のマネージャーが変わるたびにワークフローを開いて変更する必要がなくなります。そのための参照は次のようになります。

ユーザー設定リストの一意でない値へのルックアップ

[OK] をクリックすると、以下の警告が表示されます。

ルックアップによって取得した値が固有でないことを示す警告ダイアログ ボックス

この警告が表示されたのは、地域の値が Northeast である場合、このリストに複数の項目が表示される可能性があるためです。ID (主キーとして既に定義されている) とは異なり、リストには Northeast という値を含む多数の項目を追加できるため、この値が一意であるとは限りません。ただし、Regional Managers リストを所有しており、地域の値が Northeast に等しい項目が 1 つしかなく、参照が一意であることがわかっているため、この警告は無視してもかまいません。

別の言い方をすれば、フィルター条件で使用するフィールドは、そのリストのキーとして機能します。キーとして ID フィールドを使用する場合、その値は定義上、一意となります。ただし、キーとして他のいくつかのフィールド (この例の場合は Region など) を使用する場合、フィールドを有効なキーにして、一意の項目を識別するためにはそのフィールドの値を一意にする必要があることを示す警告が表示されます。

また、次のセクションで説明されているように、特定の項目の値を参照する一般的な別のシナリオもあります。

ページの先頭へ

フィルター条件としてワークフロー変数を使用する

最も一般的な種類の参照では、ワークフローで、たとえば、[ユーザーからデータを収集する] アクションを使用して、タスク項目を作成したり、[リスト アイテムを作成する] アクションを使用して、現在のサイト内の任意のリストまたはライブラリで項目を作成したりします。

ワークフローで項目を作成すると、新しい項目の ID は変数に格納されます。

ワークフロー デザイナーの "リスト アイテムを作成する" アクション

項目の ID は整数であり、そのリストまたはライブラリで常に一意となります。この ID の機能はデータベース表のキーとほとんど同じです。

ID は常に一意であり、動的変数に格納されるため、必要な値を正確に識別するために確実に一意の値を使用するには、ID を使用することが最も一般的で最適な方法です。たとえば、[ユーザーからデータを収集する] アクションでタスクを作成する場合、その ID が「タスク アイテム ID」という変数に格納されているとします。この変数を使用すれば、以下に示すように確実に参照が一意になります。

変数を参照する

[OK] をクリックしても、確実に参照を一意にすることに関する警告は表示されません。これは、ID を使用して必要な項目 (行) を検索しており、その ID は常に一意であるためです。

タスク アイテム ID の変数の検索

この参照では、"Tasks リストから、タスク項目の ID とワークフローのこのインスタンスの変数に格納されている ID が一致する場合に Recommendation フィールドの値を選択します。"つまり、通常どおり、ダイアログの上半分で列を指定します。ダイアログの下半分は一意の行を示します。この例のワークフローのこのインスタンスでは、Tasks リスト ID が 5 のタスクが作成されています。5 は Task item ID という変数に格納されている値であるため、Tasks リストの行番号 5 が参照されます。

[タスク] リスト

ページの先頭へ

確実に参照値を一意にするためのヒント

以下に、ワークフロー参照を使用する際に役立つヒントをいくつか示します。

  • 確実に参照を一意にするためには、リスト項目の ID を使用して ID が一致する項目を検索する方法をお勧めします。現在のワークフローに既に関連付けられている List Item ID というデータ型の変数がある場合は、参照で使用してみてください。データ型が List Item ID の変数を識別するには、ワークフロー デザイナーで [変数] ボタンをクリックします。現在のワークフローに関連付けられているすべての変数のリストが表示されます。型が List Item ID の変数を確認します。

  • 何らかの理由で ID フィールドを使用できないか、キーとして機能できる単一フィールドがない場合は、リスト項目値の連結文字列を使用してみることができます。これにより、リスト項目が一意になる場合があります。ワークフローで [動的文字列を作成する] アクションを使用して、この文字列を作成し、変数に格納することができます。その後、参照でこの変数を使用すれば、リストの一意の項目を識別できます。

  • 自分のサイトでリストを作成する場合は、あるリストの参照列を使用して別のリストの ID フィールドをポイントすることで、さまざまなリストの関連データ間の親子リレーションシップまたは一対多リレーションシップを作成できます。たとえば、Classes リストと Registrations リストがあり、あるクラスとそのクラスの多数の登録の間に一対多リレーションシップがあるとします。Registrations リストには列を追加することができます。この列は、Courses リストの関連クラスの ID に対する参照列です。Registrations リストでワークフローが実行されている場合、そのワークフローは常に Classes リストの関連項目から値を検索できます。この参照では、"Classes リストから、Classes リストの ID が現在の項目の参照フィールドの ID と一致する場合に "そのリストの任意のフィールド" の値を選択します。"可能な場合はリスト間の ID リレーションシップ (通常は主キーと外部キーのリレーションシップ) を作成することで、ワークフロー参照が容易になります。確実に一意の参照で一致させる簡単な方法は ID を使用することです。

ページの先頭へ

参照について知っておくべきこと

参照を使って作業する場合に知っておくべきことをいくつか以下に示します。

  • マスター リストに最も近く、ワークフローで使用可能なほとんどすべてのデータを含むリストにワークフローを適用します。このようにすれば、複雑な参照を作成して他のリストから値を取得するよりも、参照で現在の項目から多くの値を使用することができます。

  • 参照で一致するデータが見つからない場合は、常に ????? という文字列が返されます。たとえば、Assigned To フィールドは "John" に等しいが、"John" に割り当てられているタスクがない場合は Tasks リストから Title フィールドの値を選択するワークフロー参照を定義した場合、参照では ????? が返されます。これを解決するために、適切な参照を開き、クエリから一致する項目が返されるようにフィルター条件を変更できます。

  • 参照でデータのない変数が検出された場合は、常に **** という文字列が返されます。これを解決するには、ワークフローを開き、変数が値に設定 (または初期化) されていることを確認します。

  • [ワークフロー参照の定義] ダイアログ ボックスの内容をクリアするには、そのダイアログ ボックスの [参照のクリア] ボタンをクリックします。

ページの先頭へ

注: 機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×