Clrh 20140301

531 views

Published on

2014/03/01 CLR/H in TOKYO にて発表したスライド

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
531
On SlideShare
0
From Embeds
0
Number of Embeds
29
Actions
Shares
0
Downloads
4
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Clrh 20140301

  1. 1. WF でワークフロー Ahf(小尾 智之) 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  2. 2. self introduction VB 使い WF メイニア CLR/H スタッフ @IT @twit_ahf エンジニアライフ 地方からの戯言 Tomoyuki.Obi プロレス好き てすとぶろぐ DDT / BJW / K-DOJO みちのくプロレス http://blogahf.blogspot.jp/ 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  3. 3. https://www.facebook.com/ groups/175020096009440/ 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  4. 4. agenda • Workflow Foundation とは • WF で構築するワークフロー 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  5. 5. Workflow Foundation 概略 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  6. 6. Workflow Foundation #とは 実行基盤 コンポーネント指向 高い視認性 非開発者向け 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  7. 7. これまでの流れ WF 3.x WF 4 WF 4.03 WF 4.5 WF Manager .NET 3.0 の新機能として登場 完全リニューアル。WF 3.x と互換性無 状態遷移フローの復活 バージョニング、アノテーション等追加 基本アクティビティ増加 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  8. 8. ワークフロー デザイナー アクティビティ デザイナー アクティビティ / ワークフロー IIS Workflow Manager VB / C# / PowerShell SQL Server 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  9. 9. シーケンシャルワークフロー • 上から下へ制御が流れる • 制御を戻すことはできない 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  10. 10. フローチャートワークフロー • 制御を自由に設定できる 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  11. 11. ステートマシンワークフロー • 受注済→発注済→出荷済 というような状態変化を表す 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  12. 12. アクティビティ • VB や C# / PowerShell Workflow または既存アクティビティを組合せ • カプセル化した処理=アクティビティ • アクティビティ=ワークフロー – ビルドしたワークフローをアクティビティ として利用可能 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  13. 13. アクティビティデザイナー WPF によるユーザー コントロール作成と同じ 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  14. 14. デザイナーのメリット WPF 画面の作成と同様 WPF でできることは 同じく実現可能 デザイナー上での入力 プロパティダイアログを 見なくても設定可能 インテリセンス対応 WF 固有の ExpressionTextbox ではインテリセンス自作可能 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  15. 15. WF サービス WF サービスプロジェクト の初期状態 メッセージの受信と結果の 送信が既に用意されている 間に処理を挟むことで サービスとして作成 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  16. 16. WF と PowerShell PowerShell Workflow Xaml に変換 workflow Get-Sample { Dir } Workflow Foundation 実行 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  17. 17. 次世代の WF Workflow Manager Workflow のホスティング を行うアプリケーション  オンプレミス/クラウド上を問わずに簡易に ワークフローホスティングを行うアプリケーション  IIS の設定等が不要  セキュリティ要件が厳しめに変更され WF 4.x アクティビティの一部が利用不可  基本演算を行うアクティビティなどが大量に追加  別名 Azure Workflow Services(ただしアイコンはない) 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  18. 18. WF でワークフロー 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  19. 19. ワークフロー? • 日本でのワークフローは「稟議申請」 などのドキュメントワークフローが主 • 「申請」「承認」「決裁」など • 途中の承認経路が所属や内容によって変化 • 申請内容によって経路が変化する事も 特徴:実行される期間が長い 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  20. 20. サンプルの構成 Workflow セルフホスト メールを送付 WorkflowApplication クラスを利用 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  21. 21. 申請 承認ワークフロー Aさん ここで処理の中断が必要 承認? Bさん 承認? 決裁 却下 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  22. 22. アクティビティの仕様 • 簡単な承認アクティビティ • 承認者の情報や結果は変数を利用 • 処理内容 – 承認者に稟議内容を書いたメールを飛ばす – 処理の中断(呼び出されるまで待機) 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  23. 23. メールの送信 SDK にサンプルとして用意済み (C# のみ) 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  24. 24. ブックマーク 処理状態の一時停止 実行中のインスタンスを永続化 再開指示があるまで待機 しおりをはさむかのように どこまで処理が進んでいるかを記録する 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  25. 25. ブックマークのコード Protected Overloads Overrides Sub Execute( ByVal context As System.Activities.NativeActivityContext) Dim bookName = context.GetValue(Me.BookmarkName) If bookName.Trim = "" Then Return context.CreateBookmark(bookName, New BookmarkCallback(AddressOf OnResume)) End Sub ‘‘‘ <summary>ブックマークから呼ばれるコールバック</summary> Private Sub OnResume( ByVal context As NativeActivityContext, ByVal bookmark As Bookmark, ByVal value As Object) context.SetValue(Me.HostedValue, value) End Sub ブックマーク名はワークフローの中で 一意でなくてはならない 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  26. 26. Persist と Unload Persist インスタンスは生存 Unload インスタンスは破棄 どちらで永続化するかの指定は ホスト・アプリケーション側の指定による 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  27. 27. ブックマークからの再開 'ワークフローの実行 (WorkflowApplication).Run() executionWFId = (WorkflowApplication).Id 'ワークフローの再読込 (WorkflowApplication).Load(executionWFId) ‘ブックマークからの再開 (WorkflowApplication).ResumeBookmark( "BookmarkName", value) Args1:再開したいブックマーク名 Args2:引き渡す値 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  28. 28. 引数の受け渡し ワークフロー開始時にホスト側から 引数を受け渡せる Dim wfApps As WorkflowApplication Dim wfArgs = New Dictionary(Of String, Object) wfApps = New WorkflowApplication(wfFile, wfArgs) wfApps.Run() Dictionary(String, Object) Args1:引数名(大小文字の区別あり) Args2:引数 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  29. 29. ホストでのイベント Aborted ワークフローの中断 OnUnhandled Exception 予期せぬ例外発生 Completed ワークフローの終了 wfApps.Aborted = Sub(e As WorkflowApplicationAbortedEventArgs) Console.WriteLine(e.Reason) End Sub 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  30. 30. Demo 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  31. 31. カスタマイズ • 承認者の順序を入れ替える • 新たに承認者を追加する ワークフロー上アクティビティ を追加 / 移動させればよい 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  32. 32. 申請 Aさん こういうのは? Bさん 承認? 決裁 却下 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  33. 33. 並行処理なアクティビティ Parallel アクティビティを利用すると 並列な階層を作成できる 中に配置するアクティビティは通常の承認 アクティビティをそのまま利用できる 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  34. 34. Demo 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  35. 35. ASP.NET との共用 ASP.NET と共用することで簡単に ワークフローを外部から利用可能にできる ResumeBookmark http://kuma.jp/(id)/(value) RESTful な API こまめに Unload することが必要 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  36. 36. 参考)永続化環境構築 • 永続化用データベース – データベースは自分で作成 – [Windows]¥Microsoft.NET¥Framework¥v 4.0.30319¥SQL¥ja • SqlWorkflowInstanceStoreSchema.sql • SqlWorkflowInstanceStoreLogic.sql • 上記以外は別目的のスクリプトなので未使用 • SqlWorkflowInstanceStoreSchemaUpgrade.s ql – WF4 → WF4.5 へのアップデート用 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  37. 37. 実行後の状態 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  38. 38. 参考)永続化の設定 (WorkflowApplication).InstanceStore = New DurableInstancing.SqlWorkflowInstanceStore([接続文字列]) WorkflowApplication 実行時に 一定の条件を満たすと上記設定にて 指定した永続化ストアに永続化を行う 注:一定の条件 Persist アクティビティの呼び出し 一定時間の待機状態(Delayなど) 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  39. 39. まとめ • WF を利用するのは簡単 • アイデア次第で使える場面も • コードで書くのではなく デザイナーで組み合わせる • 使うのは開発者じゃない! 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  40. 40. Appendix • Workflow Designer Express (http://wfdesignerexpress.codeplex.com/) • The Activity Designer (http://blogs.msdn.com/b/tilovell/) • AppFabric Team Blog (http://blogs.msdn.com/b/appfabric/) • MS 松崎さん Blog (http://blogs.msdn.com/b/tsmatsuz/) 2014/03/01 CLR/H in TOKYO #1 Re-Venge
  41. 41. ご清聴ありがとうございました 2014/03/01 CLR/H in TOKYO #1 Re-Venge

×