[WF 4 (2)] コードいらずのワークフロー (入門)


環境 : Visual Studio 2010 Beta 2 (.NET Framework 4)

WF 4

  1. そのアイデアとベースクラスの変更
  2. コードいらずのワークフロー (入門)
  3. ワークフローのコードと XAML の内部
  4. フローチャート (FlowCharts)
  5. アクティビティ (基礎)
  6. アクティビティコンテキスト (context) と変数 (Variable) の意義
  7. アクティビティにおけるさまざまな実行管理
  8. アクティビティのデリゲート
  9. アクティビティの非同期実行
  10. アクティビティデザイナー
  11. ブックマーク
  12. Workflow Extensions と 永続化、トラッキング
  13. デザイナーリホスティングとカスタムアプリケーション

こんにちは。

WF 4 について、前回説明したコンセプトがどのように実装されているか、まずは入門編のチュートリアルとして簡単なワークフローを作成してその進化の一部を確認しましょう。

例えば、ワークフロー変数を作成して、この変数に文字列の値を設定し、この変数の内容をコンソールに出力するという簡単なワークフローを作成する場合、従来では、ワークフロー変数をプログラムコードとして宣言し、Code アクティビティなどを使ってコンソール出力の処理を記述する必要がありました。
これが、WF 4 では以下のようになります。

ワークフローの作成

Visual Studio 2010 でプロジェクトを新規作成します。ターゲットのフレームワークを .NET Framework 4 として、[ワークフローコンソールアプリケーション] を新規に作成してみましょう。

ワークフローのデザイナーとツールボックスが表示され、ツールボックス上からアクティビティをドラッグアンドドロップすることでワークフローを作成することができます。(これは、いままでと同じですね。)

今回は逐次実行型の処理を作成するため、まず、Sequence アクティビティをドラッグアンドドロップします (今回からフローチャートも作成できますが、これについては別途説明していきましょう)。

逐次実行の手順として、変数への割り当て (Assign)、コンソールへの出力 (WriteLine) の 2 つの処理をおこなう必要がありますが、WF 4 ではこうしたプリミティブな処理もアクティビティとして提供されています。この Sequnce アクティビティの中に、Assign アクティビティ、WriteLine アクティビティ をそれぞれドラッグアンドドロップして挿入します。(下図)

ツールボックスには表示されていませんが、WF 4 ではこの他に、論理演算や算術演算をおこなう一連のアクティビティなども含まれています。

つぎに、文字列を入れるための変数を作成するため、デザイナー上に挿入した Sequence アクティビティをマウスで右クリックして、[変数の作成] メニューを選択します。すると、変数を作成するための専用のウィンドウが表示されるため、下図の通り DisplayValue という名前の string 型の変数 (Variable) を作成します。

つぎに、Assign アクティビティをクリックして、下図の通り、上記で作成した DisplayValue に "Ken" と入力 (Assign) します。

アクティビティのプロパティの入力欄には、実は、静的な文字列だけではなく VB 式も入れることもできます。そして、ちゃんとインテリセンスも有効になります。(また、こうした高度な入力欄をもったカスタムアクティビティも XAML を使って簡単に作成できますが、これについては、またいずれご説明しましょう。)
たとえば、上記で挿入した WriteLine アクティビティの Text 欄に、下図の通り、"My name is " + DisplayName という式を入力してみます。

このまま実行するとスルリと流れてすぐに終わってしまうので、下図の通り Delay アクティビティでも入れて 10 秒間くらい待機させてみましょう。

動作確認

上記を F5 で実行すると、コンソールが表示され、

My name is Ken

と表示されます。

作成されたワークフローは、従来の WF 同様、XAML と呼ばれる宣言型のマークアップ (XML) で記述されており、上記で作成した DisplayValue という変数 (Variable) も、VB 式も、すべて宣言型の記述 (XML) の値の 1 つになっています。

Tech・Days の準備でそれどころではないので、今日はこのあたりでいったん終了し、また次回続き (XAML とコードの関係) を見ていきましょう。(では)

 

Comments (0)

Skip to main content