中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

.NET:WF:compensatableSequenceActivity

この文書の最新版は
http://naka.wankuma.com/site/column/dotnet/00039.htm


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

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

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

このアクティビティはただのコンテナですので、さらに中に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>

投稿日時 : 2007年1月7日 17:05

コメントを追加

# RNqjwCXpcijBmOqNMoG 2011/11/28 19:43 http://www.laurenslinens.com/maleba.html

Pleased to read intelligent thoughts in Russian. I`ve been living in England for already 5 years!...

# qyfYZAAlPLOlaIrsN 2012/01/07 14:05 http://www.luckyvitamin.com/p-32919-good-n-natural

See it for the first time!!...

タイトル
名前
URL
コメント