2012年2月3日金曜日

IValidationErrorService でワークフローのエラー情報を表示する

Workflow Foundation の各種サービスの中に IValidationErrorService インターフェースで定義されるものがあります。これを利用すると、現在デザインしているワークフローで発生しているエラー情報を取得し何かしらの処理を行う事が可能です。


利用方法もかなり簡単です。まずは IValidationErrorService インターフェースを継承したクラスを用意します。このクラスはデザイナから受け取ったエラー情報を元に何かしらの処理を行うクラスとなります。

   1: Imports System.Collections.Generic
   2: Imports System.Activities.Presentation.Validation
   3:  
   4: Public Class ValidationErrorService
   5:     Implements IValidationErrorService
   6:  
   7:     Public Property DisplayObject As TextBox
   8:  
   9:     Public Sub ShowValidationErrors(errors As IList(Of ValidationErrorInfo)) Implements IValidationErrorService.ShowValidationErrors
  10:         DisplayObject.Clear()
  11:         errors.ToList.ForEach(Sub(ve)
  12:                                   DisplayObject.Text += String.Format("Error : {0}", ve.Message) + ControlChars.NewLine
  13:                               End Sub)
  14:     End Sub
  15: End Class

サンプルとして、受け取ったエラー情報を指定されたテキストボックスに全て表示する処理を行うものを作成しました。このサービスを利用するために、デザイナの実行時コンテキストに対してパブリッシュを行います。

   1: designer.Context.Services.Publish(Of IValidationErrorService)(
   2:   New ValidationErrorService With {
   3:     .DisplayObject = _traceTextBox})

このようにすることで、デザイナ上で発生しているアクティビティのエラー情報を表示できるようになります。

ValidationErrorService

なお、ShowValidationErrors メソッドが呼び出されるタイミングですが、デザイナ上で何かしらの操作を行ったタイミングで都度発生します。

0 件のコメント:

コメントを投稿