2011年4月2日土曜日

Assign アクティビティ

ちょっとずつ既存 Activity の説明も混ぜていきます。最初は変数設定のできる非常に重要な Assign アクティビティ。

単純に言えば、変数に対して値を設定する Activity。機能としてはこれだけなんだけど、WF4 ではActivity 同士でのデータやりとりが非常に簡単になったのも、これがあるからだったり。

image

ワークフロー上で上記の様に変数を作成すると、このワークフロー内部(スコープの設定で変更できる)で共用することができるようになります。今回のサンプルでは Assign 以外にもう一つ自前で作成した Display アクティビティなんてものを用意しました。ロジックはこんな感じのデバッグ用みたいなものです。

Public NotInheritable Class DisplayActivity
    Inherits CodeActivity

   '文字列型のアクティビティ入力引数を定義します
    Property Text() As InArgument(Of String)

    ' アクティビティが値を返す場合は、CodeActivity(Of TResult) から派生して、
    ' Execute メソッドから値を返します。
    Protected Overrides Sub Execute(ByVal context As CodeActivityContext)
       'テキスト型の入力引数のランタイム値を取得します
        Dim inpText = context.GetValue(Me.Text)
        MessageBox.Show(inpText)
    End Sub
End Class

InArgument として定義したプロパティは Activity に対して入力用のクチとして利用できるだけでなく、親元のワークフローで定義されている変数の受け渡しも行えます。単純に値をもらうだけであれば、String  なプロパティを定義すれば済むのですが、親元で動的に変化する変数を利用する場合には InArgumet を利用する必要があります。反対にある Activity から値を戻したい場合には OutArgument で定義したプロパティを用意する必要があります。

image

実際に実行するとこのように親元で定義した変数に対して、Assign アクティビティで値を設定、その値を Messagebox で表示することができます。これを応用することで、プログラム間の連携とかも行えるようになります。

0 件のコメント:

コメントを投稿