「Workflow Foundation 4」の中心~アクティビティの作成
Workflow Foundation 4が導く新しい開発スタイル(2)
ダウンロード サンプルソース(VB) (38.5 KB)
ダウンロード サンプルソース(C#) (17.3 KB)
アクティビティが実装できたら、次にMainメソッドにて作成したアクティビティを実行する処理を記述します。ここでは以下のような記述を行います。
Imports System.Activities
Sub Main()
'アクティビティの作成
Dim act = New SampleActivity With {
.OutputStrings = “Workflow Foundation 4!”}
'ワークフローの実行
Dim wfInv As New WorkflowInvoker(act)
wfInv.Invoke()
Console.ReadLine()
End Sub
using System;
using System.Activities;
void Main()
{
//アクティビティの作成
var act = New SampleActivity()
{
OutputStrings = “Workflow Foundation 4!”;
}
//ワークフローの実行
var wfInv = new WorkflowInvoker(act);
wfInv.Invoke();
Console.ReadLine();
}
このようにMainメソッドを実装したらビルドし実行します。標準出力に「Workflow Foundation 4!」と出力されるのが確認できます。
前述のとおり、アクティビティは複製され利用される挙動となります。それを検証するのが次のような処理になります。
'ワークフローへ変数の追加
Dim wfVar As New Variable(Of Integer) With {
.Name = "wfValue"}
Dim seq As New Sequence
seq.Variables.Add(wfVar)
Dim ass As New Assign(Of Integer) With {
.To = wfVar, .Value = (New Random).Next(1, 100)}
seq.Activities.Add(ass)
Dim wrt As New WriteLine With {
.Text = New InArgument(Of String)(Function(env) "生成された値は " + wfVar.Get(env).ToString)}
seq.Activities.Add(wrt)
Dim wfApp As New WorkflowInvoker(seq)
wfApp.Invoke()
Console.WriteLine("2回目の実行")
wfApp.Invoke()
Console.WriteLine("3回目の実行")
wfApp.Invoke()
これはAssignアクティビティにて生成した乱数を設定、その結果をWriteLineアクティビティで出力するワークフローです。見た感じでは毎回ランダムな値が出力されると思われますが、実際に実行すると1~3度目全てにおいて同一の値が出力されます。
これは1度目のAssignアクティビティ生成時に発生した乱数を保持した状態で、アクティビティが複製され利用されていることを表します。これを回避するためにはAssignアクティビティに設定する部分を次のように記述します。
Dim ass As New Assign(Of Integer) With {
.To = wfVar,
.Value = New VisualBasicValue(Of Integer)("New Random().Next(1, 100)") }
このようにVisualBasicValueクラスを利用すると実行時に処理を再評価します。WFではこのような形で明示的に「式」や「値」を実装する必要があります。デザイナー上で作成した場合も、このような実装を行っているため、XAMLファイルに保存されている内容を確認してみてください。
- 修正履歴
-
- 2012/07/10 22:11 画像の差し替え
この記事は参考になりましたか?
- Workflow Foundation 4が導く新しい開発スタイル連載記事一覧
-
- 非常に簡単! 自作アプリでのワークフローデザイナー利用
- 「Workflow Foundation 4」の中心~アクティビティの作成
- 開発者と非開発者を結ぶ新パラダイム「Workflow Foundation 4」
- この記事の著者
-
小尾 智之(オビ トモユキ)
地方企業に勤めるインディープロレス好きなエンジニア。VB + SQL Server のシステム構築を主な業務としていましたが、元々の性格もあり色々な物に目移り中。Ahf というハンドルネームで所属する北海道の技術コミュニティ CLR/H(http://clr-h.jp) での活動など行っていましたが、最近か...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
