« MSC 2008 のセッション資料公開 | メイン | 「データベースって何?」 by オラクル »

VS2008 の WSS ワークフロー開発で 状態 列の変更を監視したい時

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 なんかがわかると思います。

http://www.johnholliday.net/download/fieldswss.htm

About

2008年05月29日 23:41に投稿されたエントリーのページです。

ひとつ前の投稿は「MSC 2008 のセッション資料公開」です。

次の投稿は「「データベースって何?」 by オラクル」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.34