Download pdf - XAML & XAML

Transcript

XAML & XAML~ デザイナーリホスティングな世界 ~

WFをアプリケーションに

WFの特徴

WorkflowをXAMLとして、保存/読込可能

ActivityをDrag&Dropするだけで、実行可能なWorkflowが作成可能

つまり、WFを採用するとこんなことができる!?

リコンパイル不要で処理のカスタマイズ

不要な派生バージョンの増加を抑制

エンドユーザに処理フロー構築の明け渡し

細かすぎるカスタマイズ案件からの解放

アジェンダ

Workflowの実行

Workflowの作成

CustomActivityの作成

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

Workflowの実行

引数・戻値の設定

Workflowの実行時読込

Workflowを作成する

Visual Studioで、新しい項目の追加→アクティビティ

← Visual Studioで作成とか、うれしくない。

⇒そこで、デザイナーリホスティングですよ。

デザイナーリホスティングとは

Visual Studio上のWorkflowデザイナを、コントロール化し独自アプリケーションでも利用できるようにしたもの

ただし、現状VB式のみ

VisualStudio上のデザイナは.NET4.5よりC#式が利用可能となったので、次期バージョンぐらいからC#も対応されないかなぁ(希望

提供されるView

WorkflowDesigner

DesignView

OutlineView

PropertyInspector

ToolBoxControl

デザイナーリホスティングの基本機能

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