38


9

WFの強力なケース

私は、通常の命令型プログラミングとは反対に、ワークフロー(WFなど)の説得力のあるユースケースを見つけるのに長い間苦労してきました。 WFをそのままにするか、WFに入るのを遅らせるべきだという結論に戻るたびに。 しかし、私は何かが欠けているというこのしつこい感じを持ち続けています。

ワークフローの方法を真に主張する本を知っている人はいますか? この本は、(i)WFを上手に教え、(ii)WFが通常のストレートコーディングを行った場合よりも簡単に実装できるようにした適切なユースケースを使用することを示さなければなりません。

感謝します。

5 Answer


21


非専門家の観点から、WFを主張することは2つあります。1つはワークフロープラットフォームに固有のものであり、もう1つはおそらくより便利なものです。

便利な機能は、アクティビティを作成する新しい方法を作成する機能です。 命令型プログラミングでは、基本的にシーケンス、if-else、ループなどの合成プリミティブの限られたレパートリーのみが提供されます。 WFを使用すると、インターリーブ実行、並列実行、ポストファーストポストなどの独自の構成演算子を構築できます。 そしてもちろん、ステートマシンの洗練された構成メカニズムが組み込まれています。

これらの演算子はすべてC#のような命令型言語で作成できるため、これは便利な機能です。実際、WF演算子の作成方法は「方法」です。 しかし、WFを使用すると、簡単にカスタムコンポジションを_use_および_read_作成できますが、C#ではラムダ式のあられにすばやく陥ります。 したがって、複雑なオーケストレーション要件がある場合、つまり、アクティビティの組み合わせ方がシーケンス、if-elseおよびループよりも複雑な場合、WFはプログラムの表現と理解を容易にします。

ユニークな機能は_耐久性_です。 これが、シュクラとシュミットの本の始まりであり、そこから戻ってくるところです。 C#またはVBで記述された命令型プログラムは、運が良ければ数時間、数日、数週間、場合によっては数か月間実行できます…​ しかし、最終的にIISはアプリプールを循環させるか、管理者が最新のセキュリティ更新プログラムをインストールするか、誰かが電源コードにつまずくでしょう。 あなたのプログラムはどのように覚えていますか? Eメール"?

従来の命令型プログラムでは、プロセスが終了すると、実行状態も終了します。 新しいプロセスを開始できますが、プログラムの開始時に開始されます。 もちろん、データベースを作成し、それを使用して「発注書を取得」や「信用承認を取得」などのフラグを保存できます。しかし、状態を保存してクエリを実行し、その状態に応じてプログラム内の適切なポイントに戻るには、アプリケーション固有のコードを記述する必要があります。 また、長時間実行されるアプリケーションごとに新しいデータベースと新しい保存/復元/ジャンプロジックを設計する必要があります。

耐久性のあるワークフローとは、この問題に取り組むことです。 プログラムをアクティビティのワークフローとして作成する場合、WFは実行フローのどこを含む状態を維持します。 プログラムを実行しているマシンが発火してデータセンターを焼き切る可能性がありますが、銀行からの応答が来ると、WFは他のデータセンターでプログラムを起動し、適切な場所で適切に実行を開始しますデータ。

私にとってそれは、WFの「強力なケース」です。 多くの場合、それは必要ありません。アプリケーションは短命であるため、障害は重大な問題ではなく、ゼロからの再起動は実行可能な回復戦略です。 ただし、応答に数時間かかる外部システムの調整や、応答に数日かかる可能性のある人間を含むビジネスプロセスなど、長寿命のアプリケーションの場合、耐久性がWFのキラー機能になる可能性があります。

*免責事項:*私はWFプログラマーではなく、実際のWFシステムを構築したことはありません。 私はBizTalkのバックグラウンドから、またWFについて読んだことからこれをやっているので、この評価はちょっと理論的です。 それがすべて同じに役立つことを願っています!


5


あなたの質問に良い答えがあるかどうかはわかりません。 問題は、あなたが2つの非常に異なることを求めているので、質問が有効ではないということではありません。

まず、ワークフローを使用する説得力のある理由を尋ねます。 これは非常に主観的な質問であり、テクノロジーに関連するものではありません。 ワークフローの実装に関するあらゆる成功例と失敗例に関するWeb上のホワイトペーパーを見つけることができます。 これはテクノロジーに関係なく、製品Xを使用して実行されたソリューションは、製品Yを使用して実行された可能性があります。 ShuklaとSchmidtの章は確かに基本を説明していますが、ワークフローをどこでどのように適用するかを示す良い本ではありません。

次に、Windows Workflow Foundationを教えるための本を探しています。 最初の質問は、WF3またはWF4です。これらは非常に異なる獣です。 私はWF4を想定します。これは、.NET 4がリリースされたときにWF3に置き換わるので(すぐに実際になります)、ほとんどの場合、WF3から始めることはあまり意味がありません。 しかし、WF3は決してあまり人気がなく、ほとんどの作家にとって書籍市場はあまり収益性が高くなかったため、WF4の書籍はまだ出ていません。 ブルース・ブコビックスは、https://rads.stackoverflow.com/amzn/click/com/1430209755 [Pro WF:.NET 3.5のWindowsワークフロー]本の新しいバージョンに取り組んでいると思います。本。 これまでのところ何もありませんが、msdnサイトや私のようなhttp://msmvps.com/blogs/theproblemsolver/default.aspx [こちら]のような非常に限られたドキュメントに固執しています。 そしてもちろん、DevelopMentorのhttp://www.develop.com/course/windows-workflow-foundation-csharp-4[this]のようなコースがあります(注:筆者は筆者であるため、恥知らずなプラグインです)

この回答でいくつかの理由を説明しましたhttps://stackoverflow.com/questions/115124/what-are-your-experiences-with-windows-workflow-foundation/115739#115739 [ここ]、これらはあなたを助けるかもしれません。

あなたの質問への答えとしてはそれほどではありませんが、これがすべてあなたの役に立つことを願っています。


1


これも直接的な答えではありませんが、他のリソースを検索する場合に役立つかもしれません。 私には、WFはhttp://en.wikipedia.org/wiki/Business_Process_Execution_Language [ビジネスプロセス実行言語(BPEL)]で紹介されている概念を中心にかなり厳密にモデル化されているように見えます。 この標準。 WFよりもずっと前から存在しており、BPELを使用することで、WFの使用目的がわかるはずです。

私はWFを使用していませんが、BPELを少しいじってみたところ、使いにくいことがわかりました。 これは主にツールのサポートによるものでした(ビジュアルモデリング用のEclipseプラグインが不足していることがわかりました)。 これを「通常のプログラミング言語の構文」と比較してXMLのコードを読むのが難しいという事実と組み合わせると、BPELは実行可能なソリューションではありませんでした。 WFに優れた視覚ツールがある場合、この問題は少なくとも解決されています。


1


正当な理由は次のとおりです。ビジネスプロセスを視覚的に見直す。 クライアント(ドメインの専門家)がデザイナーでワークフローを編集することさえできます。アプリケーションを再起動し、再コンパイルせずに実行します

良い本:ブルース・ブコウィックスと私の好きなもの:PRO C#2010と .NET 4 framework has an excellent chapter


0


このトピックに関する本を特に知りません。 ただし、WF(またはその他のワークフロー製品)の魅力の一部は、元のOOの人(Alan Kayなど)が興味を持っていた疎結合のメッセージベースのパラダイムの可能性を再導入することだと思います。

渡される「メッセージ」の概念は、WFではすぐにはわかりません。 ただし、個別のマシンとして動作するオブジェクトの概念はそうです。

OOの状態に関する素晴らしい(しかしややクレイジーな)本については、https://rads.stackoverflow.com/amzn/click/com/0735619654 [David Westによるオブジェクト思考]を参照してください。 そして、OOが彼にとって何を意味するかに関するAlan Kayの議論については、http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en [こちら]を参照してください。