WF をちょっと試してみました。
上の画像は、ソースとなるファイルまたはディレクトリを Zip アーカイブを生成し、バイナリデータとして取得するための処理を、WF で実装した際のデザイナ画面です。
下の画像は、ソースパスの指定、保存先の指定、Zip アーカイブの生成・保存という、アプリケーションの一連の流れを、WF で実装した際のデザイナ画面です。Zip アーカイブの生成処理には、もちろん上のワークフローを使用しています。
作ってみた感想としては・・・ めんどくさい ですね(笑) いや、勉強しながら作ってたから手間取ったってのもあるんですけどね。 ( おかげで、下のワークフローは、適当な作りになってしまった orz )
WF はシステムワークフロー、ヒューマンワークフローの両方に対応できるらしいです。実際、その辺は理解できました。WF は、適用しようと思えばかなり色々な所に適用できるということもわかりました。フローがデザイナによって視覚化されるのは、恐らく最大の利点ですね。
で、使いどころはどこになるんでしょうかね?今回くらいの簡単な処理でワークフローを使っても、あまり意味はないように思いました。もうちょっと大きなものや、永続化を必要とするようなものでは変わってくるのかもしれませんが、やってみないと今一イメージがわかないです。
ネット上で活躍している人達の記事を読むと WF はかなり高く評価されてますが、僕にはまだまだ WF の本質が見えません。
とりあえず、↓ の本とか読めば WF というものがある程度見えてくるのかな。でもちょっと高いな。。。
エッセンシャルWF : Windows Workflow Foundation (Programmer’sSELECTION Microsoft.net)
まさにその本に書いてあるのですが、WFがターゲットとするのはリアクティブなプログラム、つまりユーザーの入力を待ってからそれに対するアクションを行うプログラムです。
例えば、業務フロー上とある役職の承認をうける必要があるとか、そういう物ですね。
場合によっては数日にもおよぶ「待ち」を捌くコードを入れると、おそらくはシリアライズしてデシリアライズの処理がコードに含まれ、それが本来のフローを読みにくくします。マルチスレッド、マルチプロセス系の処理をいれても、フローは見えにくくなります。
コード上では追いにくくなった業務フローは、従来はUMLなどのドキュメントで補完されていました。WFが対象とするのはまさにその領域です。業務ドメインのフローを表現するドキュメントと実装の距離を近づけようとするものです。なので、おっしゃられる通り粒度が細かすぎると旨みがありません。
細かい所はドメイン特化コンポーネントとしてC#でしっかり作りこんで、コンポーネントを結合させるグルーとしてWFを用いるという方向でしょうね。
2007.10.28 15:28 URL | Enrike #- [ 編集 ]
Enrikeさん、コメントありがとうございます。
おかげさまで、WF が少し見えてきました。
業務ワークフローは、まさに格好のターゲットとなりそうですね。
ただ、それ以外にも色々な所で適用できるような気がしているんですけど、どうなんでしょ。Web 上の WF 関連の記事をいくつか読んでいたら、画面遷移の制御にも WF を利用できるとかなんとか。
ところで、Enrikeさんはコチラのブログ ( http://lol.blog12.fc2.com/ ) のEnrikeさんですよね?この記事の一日前のEnrikeさんの記事でちょうどこの本を紹介していらっしゃって驚きました。驚きついでに注文してしまいました^^
2007.10.28 20:41 URL | よこけん #Ay6tTHf6 [ 編集 ]
はい、そのblogのEnrikeです。
僕も自分のblogにWF本の事を書いたとたんにWFのエントリが上がっていたので、おぉっ?と思ってコメントしてしまいました。偶然とは重なるもので、artonさんもWFのエントリをかいていらっしゃいますね。
http://arton.no-ip.info/diary/20071028.html
>画面遷移の制御にも WF を利用できるとかなんとか。
こちらですね。
http://blogs.msdn.com/tsmatsuz/archive/2007/06/07/wf-asp-net.aspx
画面遷移はもろにステートマシンですから、確かに使えそうですね。
あと、大規模並列計算やマルチスレッドプログラミングに使えそうな気もするのですが、誰か挑戦してみないかなぁ。
2007.10.28 21:03 URL | Enrike #- [ 編集 ]
WFとゲームブック
はじめまして。
実は昔懐かし、ゲームブックのWeb版(もしくはリッチクライアント版)のエンジンに類するものができたら面白いんじゃないかなと思ってます。
2007.10.28 21:14 URL | kkamegawa #pK.oNfME [ 編集 ]
やはりそうでしたか。それにしても、偶然ってのは面白いですね(笑)
MS の松崎さんのブログは WF の記事が豊富ですね。僕にはまだ、読み進められる力量がないですが(苦笑)
> あと、大規模並列計算やマルチスレッドプログラミングに使えそうな気もするのですが、誰か挑戦してみないかなぁ。
なるほど、そういった分野にも使えそうですね。そうなると、パフォーマンスが気になるところです。僕はマルチスレッドプログラミングはあまり縁がないので、兆戦する機会は中々なさそうですが^^;
WF には色々な可能性がありそうですね。これは本を注文して正解だったようです^^
2007.10.28 21:31 URL | よこけん #Ay6tTHf6 [ 編集 ]
kkamegawaさん、コメントありがとうございます。
なるほどゲームブックですか、子供の頃やりました^^ 懐かしい( ´ー`)
確かに面白そうですね。ゲームブックエンジンのためのアクティビティ作りも楽しそうです^^
ホント、WF は色々できそうですね~
追記:
kkamegawaさんのブログでも、今日のエッセンシャル WPF の記事の中で、エッセンシャル WF の話が(笑)
2007.10.28 21:55 URL | よこけん #Ay6tTHf6 [ 編集 ]
トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/174-45b14230