Windows Workflow Foundation

前にWCFをいじってみたので、今度はWFにトライ。
どこかによいサイトがないかなぁ、とあさってみたけどあんまりない。
大まかな全体像の説明があっても、実際にこう作る、みたいなチュートリアルが見当たらない。
はやってないのか?

結局CodeZineとMSのチュートリアルしか見つからなかった。
で、CodeZineのをやってみた。
前編のシーケンシャルワークフローはさくっと終わる。
ふーん。めんどくさいね。。。
どうしてもコードで書いてしまいたくなる。
ビジュアルなツールで条件分岐なんて・・・。

ワークフローエンジンを使って、
「ちゃんとデータ本体と状態(およびその遷移)を切り分けましょう」
「状態の管理はワークフローエンジンに任せましょう」
となったとする。
でもさ、細かい状態の制御をUIで定義はメンドイよ(たぶん)。
UIで定義なら可視性が高いって??
細かい状態遷移をUIで表示されてもむしろ見辛くないか?
専用のglue言語でかかれてた方がわかりやすくない?
それってBPEL
いやありゃ手で書く気にならんよ。

とか考えつつ中篇へ
・・・。動きません。
あれー記述どおりにしたつもりなのに。
今度はコードを丸々コピペ。
でも動かない。
OrderShippedがnullだ。
.Net3.5からなんか変わったのか?

内容をよく理解せずコピペしてると何が原因かの類推がつかなくて困る。
とりあえず動いているものを見ながら内容を理解したいのになぁ。
・・・結局

ExternalDataExchangeService dataService
= new ExternalDataExchangeService();
//(2) ワークフロー ランタイムへのデータ交換サービスの登録
workflowRuntime.AddService(dataService);
//(3) ExternalDataExchange属性を持つ自分自身を
// データ交換サービスに追加
//workflowRuntime.AddService(this);
dataService.AddService(this);

としたら動いた。