狠狠撸

狠狠撸Share a Scribd company logo
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

More Related Content

XAML & XAML

  • 1. XAML & XAML ~ デザイナーリホスティングな世界~
  • 2. WFをアプリケーションに ? WFの特徴 ? WorkflowをXAMLとして、保存/読込可能 ? ActivityをDrag&Dropするだけで、実行可能なWorkflowが作成可能 ? つまり、WFを採用するとこんなことができる!? ? リコンパイル不要で処理のカスタマイズ ? 不要な派生バージョンの増加を抑制 ? エンドユーザに処理フロー構築の明け渡し ? 細かすぎるカスタマイズ案件からの解放
  • 3. アジェンダ ? Workflowの実行 ? Workflowの作成 ? CustomActivityの作成
  • 4. 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
  • 5. Workflowの実行 ? 引数?戻値の設定 ? Workflowの実行時読込
  • 6. Workflowを作成する ? Visual Studioで、新しい項目の追加→アクティビティ ← Visual Studioで作成とか、うれしくな い。 ? そこで、デザイナー リホスティングですよ。
  • 7. デザイナーリホスティングとは ? Visual Studio上のWorkflowデザイナを、コントロール化し独自アプリ ケーションでも利用できるようにしたもの ? ただし、現状VB式のみ ? VisualStudio上のデザイナは.NET4.5よりC#式が利用可能となったので、次期 バージョンぐらいからC#も対応されないかなぁ(希望
  • 8. 提供されるView ? WorkflowDesigner ? DesignView ? OutlineView ? PropertyInspector ? ToolBoxControl
  • 9. デザイナーリホスティングの基本機能 ? XAMLの読込/保存 ? Drag&Dropによる編集 ? 編集中に使用する各種コマンドの提供 ? Cut/Copy/Paste/SelectAll… ? 入力エラーの表示 とりあえず、作ってみましょう ?Demo
  • 10. 標準では有効にならない機能 ? デフォルトでは、.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
  • 11. 気を付ける点 ? DesignerMetadataの登録 ? おまじない ? WorkflowDesignerの初期化 ? WorkflowDesignerはLoadごとに使い捨て ? Loadしたら、各種Viewも更新 ? ActivityBuilderで初期化すること(引数を使うため) ? ToolBox ? ForeachはForEachWithBodyFactoryを使用すること
  • 12. エディタを強化する ? 標準では用意されていないが、実装次第で機能追加可能 ? インテリセンス ? 実装難易度高 ? IExpressionEditorService とIEXpressionEditorInstance ? http://blogahf.blogspot.jp/2011/11/iexpressioneditorservice.html ? Tracking(デバッグ実行?ログ出力) ? 実装難易度中 ? TrackingParticipant とDebugManagerView ? http://msdn.microsoft.com/en-us/library/ee624139.aspx
  • 13. CustomActivityの作成 ? 既存のActivityの問題点 ? 色々なことが出来過ぎてしまう。 ? Primitive過ぎて、一つのWorkflowを組み立てるのが大変。 ? 全てをまかなえるとは限らない。 ? CustomActivity作成指針 ? Applicationで必要とされる処理単位で作成するとよい ? プログラムの構造を意識させない
  • 14. CustomActivityの作成 ? CodeActivity ? 任意のコードを実行するときに使用するときに便利な、Activityのサブクラス ? Executeをoverrideするだけお手軽 ? ActivityDesigner ? Workflow上でのActivityの見た目を表現するための基底クラス ? WPFのContentControlのサブクラスでもある ? つまりWPFのXAMLで表現する ? ExpressionTextBox ? VB式を解釈して値を取得するために使用するTextBox
  • 15. まとめ ? WFアプリケーションお手軽簡単3ステップ ? CustomActivityで処理単位を適切にまとめる ? WorkflowDesingerでXAML編集 ? WorkflowInvokerで実行 ? ただし、文献少な目
  • 16. 参考 ? てすとぶろぐ ? 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