Upload
yone64
View
2.159
Download
6
Embed Size (px)
Citation preview
WFをアプリケーションに
WFの特徴
WorkflowをXAMLとして、保存/読込可能
ActivityをDrag&Dropするだけで、実行可能なWorkflowが作成可能
つまり、WFを採用するとこんなことができる!?
リコンパイル不要で処理のカスタマイズ
不要な派生バージョンの増加を抑制
エンドユーザに処理フロー構築の明け渡し
細かすぎるカスタマイズ案件からの解放
Workflowを実行する
WorkflowInvoker
Workflowをメソッドのように実行する。
呼び出し側は、Workflowの終了を待機する。
WorkflowApplication
WorkflowのInstanceを作成し、それを管理する。
呼び出し側は、Workflowの状態変更を各種Callbackとして受け取る
WorkflowServiceHost
Workflowをサービスとして実行する(詳細は割愛)
(参考)WorkflowInvokerとWorkflowApplicationの使用
http://msdn.microsoft.com/ja-jp/library/dd560894%28v=vs.110%29.aspx
デザイナーリホスティングとは
Visual Studio上のWorkflowデザイナを、コントロール化し独自アプリケーションでも利用できるようにしたもの
ただし、現状VB式のみ
VisualStudio上のデザイナは.NET4.5よりC#式が利用可能となったので、次期バージョンぐらいからC#も対応されないかなぁ(希望
デザイナーリホスティングの基本機能
XAMLの読込/保存
Drag&Dropによる編集
編集中に使用する各種コマンドの提供
Cut/Copy/Paste/SelectAll…
入力エラーの表示
とりあえず、作ってみましょう
⇒Demo
標準では有効にならない機能
デフォルトでは、.NET Framework 4.5で強化された機能がOffになっています。
せっかくなので、Onにしておきましょう。
http://blogs.msdn.com/b/tilovell/archive/2012/06/05/wf4-5-enabling-
new-net-framework-4-5-features-in-your-rehosted-designer-
application.aspx
気を付ける点
DesignerMetadataの登録
おまじない
WorkflowDesignerの初期化
WorkflowDesignerはLoadごとに使い捨て
Loadしたら、各種Viewも更新
ActivityBuilderで初期化すること(引数を使うため)
ToolBox
ForeachはForEachWithBodyFactoryを使用すること
エディタを強化する
標準では用意されていないが、実装次第で機能追加可能
インテリセンス
実装難易度高
IExpressionEditorService と IEXpressionEditorInstance
http://blogahf.blogspot.jp/2011/11/iexpressioneditorservice.html
Tracking(デバッグ実行・ログ出力)
実装難易度中
TrackingParticipant と DebugManagerView
http://msdn.microsoft.com/en-us/library/ee624139.aspx
CustomActivityの作成
既存のActivityの問題点
色々なことが出来過ぎてしまう。
Primitive過ぎて、一つのWorkflowを組み立てるのが大変。
全てをまかなえるとは限らない。
CustomActivity作成指針
Applicationで必要とされる処理単位で作成するとよい
プログラムの構造を意識させない
CustomActivityの作成
CodeActivity
任意のコードを実行するときに使用するときに便利な、Activityのサブクラス
Executeをoverrideするだけお手軽
ActivityDesigner
Workflow上でのActivityの見た目を表現するための基底クラス
WPFのContentControlのサブクラスでもある
つまりWPFのXAMLで表現する
ExpressionTextBox
VB式を解釈して値を取得するために使用するTextBox
まとめ
WFアプリケーションお手軽簡単3ステップ
CustomActivityで処理単位を適切にまとめる
WorkflowDesingerでXAML編集
WorkflowInvokerで実行
ただし、文献少な目
参考
てすとぶろぐ
http://blogahf.blogspot.jp/
松崎剛 Blog
http://blogs.msdn.com/b/tsmatsuz/archive/tags/workflow/
WF Designer Express
http://blogahf.blogspot.jp/2011/11/iexpressioneditorservice.html
Windows Workflow (WF) Samples
http://msdn.microsoft.com/en-us/library/dd483375.aspx