WSS のワークフローを Visual Studio 2008 で開発する場合、タスクの変更をチェックするには OnTaskChanged を使えばいいわけです。
達成率は AfterProperties.PercentComplete を見ればいいわけですが (100% で 1.0 になる)、状態 のチェックはすんなりとはいきません。
状態が "完了" になったら、ワークフローのアクティビティを進めたいんですが、それが PercentComplete みたいな形でプロパティ化されているわけではない。
ExtendedProperies プロパティを覗くと確かに値は見えるんですが、Hashtable のキーが GUID になっていて、うれしくない感じ。
なので、あまり美しくないように思いますが、こんな風にやってみました。
string taskStatusKey = "c15b34c3-ce7d-490a-b133-3f4de8801b76";
if (demoTaskAfterProperties.ExtendedProperties.ContainsKey(new Guid(taskStatusKey)))
{
string value = demoTaskAfterProperties.ExtendedProperties[new Guid(taskStatusKey)].ToString();
if (value == "完了")
isCompleted = true; // やりたい処理をこんな感じで
}
達成率に対応する GUID を定数定義しておく必要があることと、値が日本語で "完了" となっているところが、ちょっと残念なコード。
でも、一応これで目的は達成できます。
ちなみに WSS のビルトインのフィールドについては、ここのページを見ると対応する GUID なんかがわかると思います。