はじめてのWindows Workflow Foundation
一部で注目されているWFに手を出してみることに。
WFってどんなモノかイメージが掴みにくいですが、フローチャートを絵で描いて処理を埋め込んだらプログラムが完成するよーな感じです・・・が、多分、さっぱり通じないので、絵付きで。(^^;
これはWFを使って書いたものです。さて、このフローを使ってどんな処理をさせるかというと、initでユーザに入力を促すメッセージをコンソールに出力します。例えば、数字を入力してください等です。次に、isEvenがあって矢印が分岐しています。なんとなく想像が付くと思いますが、if〜elseを表しています。branchEvenには条件を設定し、真になったらshowHelloが実行されます。偽の場合は、branchOddに移動します。今回はbranchOddに条件を設定していないので無条件にshowWorldが実行されます。最後に赤い円にたどり着いて終了となります。では、コードを見てみましょう。
using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Collections; using System.Drawing; using System.Workflow.ComponentModel.Compiler; using System.Workflow.ComponentModel.Serialization; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Workflow.Runtime; using System.Workflow.Activities; using System.Workflow.Activities.Rules; namespace WorkflowConsoleApplication2 { using System.Collections.Generic; public sealed partial class Workflow1: SequentialWorkflowActivity { public Workflow1() { InitializeComponent(); } private void initCode(object sender, EventArgs e) { Console.Write("Input Number! "); } private void EvenCode(object sender, ConditionalEventArgs e) { e.Result = Int32.Parse(Console.ReadLine()) % 2 == 0; } private void ShowHelloCode(object sender, EventArgs e) { Console.WriteLine("Hello"); } private void ShowWorldCode(object sender, EventArgs e) { Console.WriteLine("World"); } } }
initCodeはワークフローのinit部分に当たります。数値の入力を促すメッセージを表示しているだけですね。次に、EvenCodeですが、ここがワークフロー上のbranchEvenとなり、ここで真偽が決定します。
e.Result = Int32.Parse(Console.ReadLine()) % 2 == 0;
この結果によって、ShowHelloCodeもしくは、ShowWorldCodeが実行されます。
この程度のサンプルだと何が嬉しいのか分かりませんが、複雑な条件分岐になると自分でワークフローを管理しなくて済むメリットが感じられると思います。多分。(^^;