SharePoint Online および Project Online での SharePoint 2013 ワークフローの調整およびパフォーマンスについて

はじめに
本資料には、Microsoft SharePoint Online および Project Online で、プラットフォームの種類に [SharePoint 2013 Workflow] を使用しているワークフローの調整シナリオ、および制限に関する情報が記載されています。
詳細情報
SharePoint Online での調整の詳細については、以下の Microsoft Web サイトを参照してください。

SharePoint Online のワークフローから送信される電子メール メッセージの制限の詳細については、以下の Microsoft Web サイトを参照してください。


SharePoint 2013 ワークフローのアクションは、以下の 2 段階の調整で制限される場合があります。
  1. SharePoint Online の調整
  2. ワークフロー サービスでの調整

ワークフロー サービスでの調整

調整はリソースの使用量の適正化のために行われます。また、調整により不具合を引き起こすようなワークフローや、ベスト プラクティス ガイドラインに従っていないワークフローから環境を保護します。ワークフロー サービスの調整は、SharePoint Online では管理できません。ワークフロー サービスと SharePoint Online は独立したサービスであり、それぞれで全体のサービス正常性を保つよう要求を調整します。ワークフロー サービスでは、SharePoint Online サイトとの整合を取り、ワークフローの範囲で調整を実施します。調整はグローバルには考慮されていませんが、各ワークフローのバックエンド サービスがワークフローの範囲の使用量を独自に追跡しています。ワークフローの範囲には複数のワークフローがある場合があります。ワークフローの調整は動的なものであり、ワークフローの範囲およびワークフロー サービスのバックエンドにより、定期的に再評価されます。

ワークフロー サービスは、単一のワークフロー インスタンスで生成可能な送信要求の数も限定しています。単一のワークフロー インスタンスは 24 時間で最大 5,000 の送信要求を生成できます。24 時間で 5,000 の送信要求が生成されると、当該ワークフローはワークフロー サービスにより機能が停止します。また、[ワークフローの状態] ページには、停止中のワークフロー情報も記載されています。この場合、"内部の状態" では以下のメッセージが表示されます。

“The instance has exceeded the outbound http request quota for a 1.00:00:00 time period. The 5000 request limit was reached in <time>.”

(このインスタンスは、1.00:00:00 時間で http の送信要求クォータの上限を超えました。<時間> で 5000 の要求上限に達しました。)


注: 上記の <時間> は、ワークフローの要求上限である 5000 に達するまでにかかった時間を表します。

停止中のワークフロー インスタンスは、24 時間経過後、ワークフローの [Resume] (再開) をクリックする、または SharePoint ワークフローのクライアント側オブジェクト モデルを使用することにより再開できます。これはワークフローが終了する前に行う必要があります。

ワークフローが CPU 使用量の上限を超える場合、[ワークフローの状態] ページには停止中のワークフロー情報が記載されます。この場合、"内部の状態" では以下のメッセージが表示されます。

"The workflow instance exceeded the CPU usage limit of throttle of 00:00:01.2000000 and could not be unloaded because it was not persistable."

(ワークフロー インスタンスが "00:00:01.2000000” という調整時の CPU 使用量の上限を超えました。また、永続型ではなかったためアンロードできませんでした。)


停止中のワークフロー インスタンスは、10 日後に終了します。ワークフローが終了した場合、"内部の状態" では以下のメッセージが表示されます。

"System.Activities.Statements.WorkflowTerminatedException: The instance has been moved from the Suspended state to the Terminated state because it has expired."

(System.Activities.Statements.WorkflowTerminatedException: 本インスタンスは、期限切れのため、"Suspended" (停止) の状態から "Terminated" (終了) の状態に切り替わりました。)

終了したワークフローも最終的には削除されます。終了したワークフローが削除された後、以下のメッセージが表示されます。

"Sorry, something went wrong.
We can't find that workflow. Completed instances are automatically cleaned up"

(問題が発生しました。
ワークフローが見つかりません。完了したインスタンスは自動的に削除されます。)


ワークフローの範囲

ワークフローの範囲は、サイト コレクション内にあるサイトと定められています。例えば、以下の URL はルート サイト コレクションのものであり、ワークフローの範囲と見なされます。
https://contoso.sharepoint.com/sites/rootsite
以下は、同じサイト コレクション内にある別のワークフローの範囲例です。ただし、こちらはサブサイト内にあります。
https://contoso.sharepoint.com/sites/rootsite/subsite

要求とは?

SharePoint 2013 ワークフローは SharePoint のアドイン モデルに基づいており、SharePoint データとの情報交換に REST API を使用しています。詳細については、以下の Microsoft Web サイトを参照してください。要求とは、ワークフロー サービスから SharePoint Online または Project Online の REST API エンドポイントへのネットワークを使用した呼び出しです。要求の種類、または要求に対する応答に違いはありません。アクションおよびアクションを構成する要素は、要求としてはカウントされません。ただし、要求が SharePoint 2013 REST API にかかわっている場合は要求の数に含まれます。例えば、[履歴リストに記録する] アクションでは、正常な動作中に 5 つ以上の要求を生成する場合があります。また、不具合が発生する場合に備えて、再試行ロジックがワークフローに組み込まれています。これにより、さらに要求が生成されることもあります。

多くのアクションにより要求が発生しますが、ベスト プラクティスで最小限にできます。例えば、複数の [現在のアイテムにフィールドを設定する] アクションの代わりに、複数ひとつの [リスト アイテムを更新する] アクションを使用することで、同じ動作でありながらワークフロー内で発生する要求の数を削減することができます。 

ワークフロー作成時の推奨事項

ワークフローが多数の要求を生成し、その結果調整が生じてしまうことが多くあります。以下に例を示します。
  • 単一の積極的なループ ワークフロー、または複数の積極的なループ ワークフロー。
  • ワークフローをリストまたはライブラリと紐付ける一方で、コンテンツを SharePoint Online に移行させた場合。
  • 以前に問題があったワークフローを修正し、完了するまで、問題のある環境で実行し続けている場合。
ワークフロー サービスで適用されるワークフローの範囲を調整することにより、一般的なワークフローでケース シナリオが使用できるようになります。ただし、ワークフローのロジックがより複雑になるため、安全限度を超える場合があります。

以下のようなワークフロー シナリオでも、調整が生じます。

シナリオ 1: 変更を監視するためループするワークフロー

例えば、アイテムが更新されるのを待つのではなく、アイテムが更新されたか確認する。

シナリオ 2: ワークフローを使用して複雑なアルゴリズムを実行する

ワークフローはドキュメント駆動型を想定しており、手動で動作し、内部的な処理の延長での実行は想定していません。

シナリオ 3: [リスト アイテムでイベントが発生するまで待つ] アクションを使用する複数のワークフローを実行させる

各ワークフローが対象リストの変更点を監視します。多数のワークフローが動作していると、各ワークフローが発生したイベントに反応し、動作を開始するため SharePoint Online へ要求を送信する可能性があります。

: これは、アイテムが作成または変更された際にワークフローを開始するよう構成されている状態で、リストに多数の変更点がある場合に発生する可能性があります。

"シナリオ 1: 変更点を監視するためループするワークフロー" の代案

オプション 1: SharePoint アドインおよび外部イベント レシーバーの使用

ワークフローを再評価し、異なる設計を検討してください。このタスクでは、SharePoint アドインまたは外部イベント レシーバーが適しています。

オプション 2: 一時停止アクションの追加

遅延 (一時停止アクション) を追加することで生成されるトラフィックが削減されるため、このデザインを改善することができます。ただし、このデザインの全体的な欠点がなくなるわけではありません。

オプション 3: [現在のアイテムでのフィールドの変更を待つ] アクションの使用

ループを使用して変更させるのではなく、既定のイベント レシーバーを使用する方が適切です。ワークフローはアイテムが作成または変更された場合に開始されます。単一のワークフローを積極的にループさせるよりは複数のワークフロー インスタンスを実行する方が適切です。ワークフローの条件は、必要な場合にのみ動作するよう構成できます。


Screen shot of the Start Options dialog box

ワークフロー内の 1 つのワークフロー インスタンスのみが、指定した時間で動作します。

別の手段として、[現在のアイテムでのフィールドの変更を待つ] アクションを使用する方法もあります。

ワークフロー実行時に複数の値を持つ選択肢列を使用できるようワークフローを設計できます。エンドユーザーが適切なオプションを選択した場合にのみ、ワークフローが再開されます。

これにより、積極的なループや不必要なワークフロー インスタンスが開始されることを防ぐことができます。ワークフローは、複数のインスタンスを実行または開始した場合ではなく、アイテムの準備ができた場合に実行されます。

複数のフィールドから複数の値を監視できます。これは複数の並列ブロックを使用することで可能です。ワークフローは特定の状態になるまで待機し、任意のパスで実行し続けることができます。

以下に例と、実行する手順を示します。

Screen shot of the Stage 2 dialog box
  1. [ブール型] の変数を作成します。

    Screen shot of the Edit Variable dialog box
  2. "値" を [いいえ] に設定します。
  3. [並列ブロック] を挿入し、並列ブロックで右クリックして [プロパティの詳細] を開きます。

    Screen shot of the Properties dialog box
  4. ドロップダウン メニューから手順 1 で作成した変数を選択します。
  5. Completion Condition プロパティを設定している並列ブロックの中に並列ブロックを 2 つ挿入します。

    Screen shot of the Parallel Blocks setting
  6. 最初の並列ブロックに、[現在のアイテムでのフィールドの変更を待つ] アクションを挿入します。選択肢列を監視するよう変更します。既定の選択肢列は監視しないようにします。

    Screen shot of the Parallel Blocks setting
  7. 別の変数ブロックを停止させるために使用したワークフロー変数を [はい] に設定します。

    Screen shot of the Parallel Blocks setting
  8. 他の選択肢列の値でもこの手順を繰り返します。
  9. 元のワークフローの別のパーツを並列ブロックの後に移動させます。
入れ子構造になっている並列ブロックの 1 つがすべてのアクションの実行を終えると、親並列ブロックが別の並列ブロックにあるその他のアクションを終了させ、次のワークフローへと進みます。入れ子構造の並列ブロックは、親並列ブロックが変数を用いて監視しています。

オプション 4: SharePoint 2013 ワークフローから SharePoint 2010 ワークフローを開始する

プラットフォームの種類に [SharePoint 2010 Workflow] を使用しても、[SharePoint 2013 Workflow] のプラットフォームの種類で実行している一部の機能を利用できます。これにより、要求の数を削減できます。

特に SharePoint 2010 ワークフローは、[現在のアイテムでのフィールドの変更を待つ] アクションを用いてモニター フィールドの変更を監視、あるいはその他多くの基本操作を実施することで開始できます。

"シナリオ 2: ワークフローを使用して複雑なアルゴリズムを実行する" の代案

解決にかなりの演算タスクが必要となる場合は、SharePoint 用のアドインの開発も考慮してください。詳細については、以下の Microsoft Web サイトを参照してください。
その他トピックは、Office 365 コミュニティ Web サイトを参照してください。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:3076399 - 最終更新日: 06/02/2016 00:07:00 - リビジョン: 10.0

Microsoft Office SharePoint Online, Microsoft Project Online

  • o365 o365e o365p o365a o365m o365022013 kbgraphxlink kbgraphic KB3076399
フィードバック