中の技術日誌
 ホーム / 上へ

.NET3.0:WF:CompensatableSequenceActivity

2007/01/07

この文書はVisual Studio 2005 SP1 + Vista Upgrade Beta + Windows Vista RTM + .NET Framework 3.0 RTMで作成されています。

この補正アクティビティは非常に便利なアクティビティです。

何らかの処理を行った場合でも、そのあとに処理が続行できないエラーが発生したときに補正を行うことができます。

まずはツールボックスからこのアクティビティを配置します。

このアクティビティはただのコンテナですので、さらに中にCodeActivityを配置します。

アクティビティを抜けた先に例外を発生させることにします。

処理自体はうまく終了しました。でも、その先の処理で失敗してしまいましたという場合ですね。

注文の約定は処理したけど、倉庫への出荷指示に失敗した場合とかそんな感じでしょうか。

ただしこのままでは補正処理を記述していませんので、補正処理を記述します。

CompensatableSequenceActivityを右クリックして、コンテキストメニューを表示します。

その中の補正ハンドラの表示を選択すると、別のコンテナが現れます。

ここにCodeActivity2を作成して、コードを以下のように記述します。

private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
  Console.WriteLine("処理しました");
}
private void codeActivity2_ExecuteCode(object sender, EventArgs e)
{
  Console.WriteLine("補正");
}

実行すると

このように補正処理が動くことがわかると思います。

ちなみにこの例外を無効にして(アクティビティを右クリックして無効を選択できます。2番目の画像の下から4つ目にもあります。) 実行すると、補正処理が動かないことがわかると思います。

ちなみにこのXOMLは

<CompensatableSequenceActivity x:Name="compensatableSequenceActivity1">
  <CodeActivity x:Name="codeActivity1" ExecuteCode="codeActivity1_ExecuteCode" />
  <CompensationHandlerActivity x:Name="compensationHandlerActivity1">
    <CodeActivity x:Name="codeActivity2" ExecuteCode="codeActivity2_ExecuteCode" />
  </CompensationHandlerActivity>
</CompensatableSequenceActivity>


勉強会: 01/12 大阪#5, 02/03 東京#4 , 02/10 大阪#6 登録受付中

中の技術日誌
コンテンツ
わんくま同盟
わんくま同盟
わんくま同盟
広告
バナー
MVP LOGO
MSMVP Visual C# Since 2004/04-2007/03
MCP LOGO
070-316
姉妹サイト
姉妹サイト:じゃんぬのC#, VB.NET 入門
じゃんぬの
C#, VB.NET 入門
検索
Google

ブログ本家
広告