次の方法で共有


SharePoint Foundation によるワークフロー アクティビティの処理方法

最終更新日: 2010年4月16日

適用対象: SharePoint Foundation 2010

実行中のワークフロー インスタンスの中で Microsoft SharePoint Foundation が SharePoint Foundation 固有のワークフロー アクティビティをどのように処理するのかを理解しておくと役に立ちます。

SharePoint Foundation は、何らかのイベント (たとえば、ユーザーがタスクを完了として指定する必要がある場合) が発生するのを待っているために、ワークフローがそれ以上先に進むことができなくなる地点に達するまで、ワークフローを実行します。このような "コミット ポイント" においてのみ、SharePoint Foundation は、それまでの SharePoint Foundation 固有ワークフロー アクティビティにおいて行われた変更をコミットします。これらの変更は、単一の SQL トランザクションにまとめられます。このような方法には、2 つの大きな利点があります。

  • 変更を 1 つの SQL トランザクションにまとめることで、変更が発生するたびに個別のトランザクションとしてコミットする場合より、パフォーマンスに対する影響が小さくなります。

  • コミット時にいずれかの変更が失敗した場合、SharePoint Foundation は、すべての変更を以前の "コミット ポイント" までロールバックします。これにより、Windows SharePoint Services 固有のワークフロー アクティビティに対する例外ハンドラおよび補正ハンドラを作成する際の開発者の作業が、大幅に減少します。

ワークフローが待機しているイベントが発生すると、SharePoint Foundation はワークフローの実行を再開します。そして再び、ワークフローは別のイベントに達するまで、または終了するまで実行し、その時点で、SharePoint Foundation は、最後のコミット ポイント以降に SharePoint Foundation 固有のワークフロー アクティビティによって行われたすべての変更をコミットします。ワークフローが終局に達するまで、またはユーザーがワークフローを停止するまで、この処理が続けられます。

このような方法は、Code アクティビティが SharePoint Foundation 固有ワークフロー アクティビティに分散して配置されているようなワークフローに影響を与える場合があります。SharePoint Foundation 固有ワークフロー アクティビティに対する書き込み操作はまとめられて、コミット ポイントに達するまでコミットされませんが、ユーザーが Code アクティビティに組み込んだ書き込み操作は発生するたびにコミットされます。また、Code アクティビティには、SharePoint Foundation 固有ワークフロー アクティビティのような間接的なロールバック機能はありません。Code アクティビティに対するエラー処理を行う場合は、アクティビティ用の例外ハンドラと補正ハンドラを作成する必要があります。

関連項目

概念

SharePoint Foundation のワークフロー アクティビティ

ワークフローにおける相互関係トークン

SharePoint Foundation でのワークフローの開始