Microsoft Windows Workflow Foundationについて ~3.0から3.5に進化~

Slides:



Advertisements
Similar presentations
Web アプリケーション開発 ~図書館管理システム~ 北海道情報大学 情報メディア学 部 情報メディア学科 新井山ゼミ 高橋 隼.
Advertisements

本プレゼンテーション ( 以下、本書 ) で提供されている情報は、本書が 発表された時点における Microsoft の見解を述べたものです。市場 ニーズの変化に対応する必要があるため、本書は記載された内容の実 現に関する Microsoft の確約とはみなされないものとします。また本 書に記載された情報の正確さについて、保証するものではありません。
© 2012 IBM Corporation ISCCD7.5 構築 その 3 IBM SmarterCloud Control Desk 7.5 導入 2011/09/30 日本アイ・ビー・エム株式会社.
モバイルエージェントシステムの実装 エージェント移動(状態とコードの一括移送) エージェント移動の特徴 システム構成 エージェントプログラム
Windows Workflow Foundation of .NET Framework 3.0
→その正体は S/人/謎の着物着付け師(見習い)/
IIS 4.0で開発をするコツ Webアプリケーション構築.
Windows HPC Server を使ってみる
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
Visual Studio 2005による XML Web サービス入門
S2Container.NET, S2Dao.NET コミッタ 藤井 宏明
Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.
エンタープライズアプリケーション II 第10回 / 2006年7月23日
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
コンポーネントの再利用に必要な情報 えムナウ (児玉宏之)
コンポーネントの再利用に必要な情報 えムナウ (児玉宏之)
Microsoft Office Project 2007
WSDL と JAX-RPC 年10月13日 Webサービス II (第3回) WSDL と JAX-RPC 年10月13日.
Solid Edge Customization with VB   (Fundamentals)
Microsoft .NET 入門 Silverlight のための 福井コンピュータ株式会社 小島 富治雄
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
Silverlight とは.
Visual Studio LightSwitchの概要
MSBuild 色々出来るよ 2011/04/02 お だ.
はじめてのASP.NET 楽しいアプリ制作の会 #1 TWorks.
今更ながらだけど、WCFと遊んでみよう^^
HTTPプロトコルとJSP (1) データベース論 第3回.
Live Framework 入門 その2 JZ5(松江) 2009/8/22.
WSDL と JAX-RPC 年10月20日 Webサービス II (第4回) WSDL と JAX-RPC 年10月20日.
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
ユースケース オブジェクト指向の要求分析のためのモデル。 スウェーデンのイヴァー・ヤコブソンが1990年代前半に開発。
データベース設計 第9回 Webインタフェースの作成(1)
RMI ソフトウェア特論 第6回 /
マイクロソフト株式会社 SAP/Microsoft コンピテンスセンター
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
SharePointによるSQL BI 2012年8月4日.
その他の図 Chapter 7.
Windows Azure (CTP) 触ってみた
暗黙的に型付けされる構造体の Java言語への導入
わんくま同盟・techbank.jp 夏椰 Insight Technology, Inc. 今川 美保
R流・C#マルチスレッドの復讐 2009年05月16日 R・田中一郎
Microsoft Visual Studio 2005 Tools for
.NET Framework 3.0 概要 (旧称 : WinFX)
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
仕事: SystemVerilogを使いたい
Jakarta Struts (2) ソフトウェア特論 第11回.
ゲーム開発モデルの基礎.
COM コンポーネント・オブジェクト・モデル.
Windows Azure (CTP) 触ってみた
アプリケーション依存の先読みが可能なO/Rマッピングツール
Java における 先進的リフレクション技術
北海道情報大学 情報メディア学部 情報メディア学科 新井山ゼミ 金子拓磨
情報基礎演習I(プログラミング) 第11回 7月12日 水曜5限 江草由佳
今更ながらだけど、WCFと遊んでみよう^^
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
→その正体は S/人/謎の着物着付け師(見習い)/
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール
プログラム分散化のための アスペクト指向言語
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
Microsoft Office Project Server 2007
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
Presentation transcript:

Microsoft Windows Workflow Foundationについて ~3.0から3.5に進化~ わんくま同盟 東京勉強会#21 2008/06/21 mxb

Microsoft Windows Workflow Foundation(WF)とは .NET Framework 3.0から搭載されたWindows プラットフォームでワークフローソリューションを開発するための拡張機能 WFは、ワークフローベースのアプリケーションの開発および実行のためのAPIおよびツールを提供 WFはMicrosoft社や他社のワークフロー製品と違い、.NET Frameworkの共通言語ランタイム(以降CLRと略します)上で稼働 このため、.NET言語との親和性が高い .NET言語で作成したカスタムコンポーネントを組み込み、標準提供のコンポーネントと同様に使用することが出来る

WFで使用される用語は主に2つ ワークフロー ワークフロー は、アクティビティのマップとして定義されたヒューマン プロセスまたはシステムプロセスのモデルです。 ワークフローベースのプログラムは、XAML (eXtensible Application Markup Language) 文書内に指定されます。 これは、ドメイン固有アクティビティの見地からプログラムの構造を指定する文書です。

アクティビティ WFで使用される用語は主に2つ アクティビティ は、ワークフローのステップであり、ワークフローの実行、再利用、および構成の単位です。 アクティビティのマップは、ルール、アクション、状態、およびそれらの関係を表します。アクティビティを配置してデザインされたWFのワークフローは、.NETアセンブリにコンパイルされ、ワークフローランタイムおよびCLRで実行されます。 アクティビティは、C#あるいはVisual Basicなどの従来のCLRベースのプログラミング言語で実装されます。

WFのアーキテクチャ WFはユーザインターフェイスを持っていません。そのため、ホストアプリケーションからの呼び出しで起動します。 Service.cs Workflow.cs or Workflow.xoml Workflow Runtime Service Runtime OperationInvoker OperationSelector InstanceProvider MessageInspector Workflow Instance ReceiveActivity 1 ReceiveActivity 2 Service Instance WorkflowOperationInvoker Operation 1 Operation 2 App.config ServiceHost Workflow ServiceHost DurableInstanceProvider MessageContextInspector ServiceDescription ServiceBehavior OperationBehavior ListenerChannel ContextChannel WF Persistence DB WorkflowServiceBehavior WorkflowOperationBehavior 出典:Microsoft社 MSDNライブラリ

WFの機能 作れるワークフローは基本的に2種類 シーケンシャル・ワークフロー ステートマシン・ワークフロー シーケンシャル・ワークフロー

シーケンシャル・ワークフロー シーケンシャル・ワークフローは、ワークフローが開始されてから様々なステップ、条件式などが次々に実行され、最後のアクティビティが完了するまで途切れることなく続行される処理に適しています。 しかし、シーケンシャル・ワークフローはその中で定義された外部接続、外部イベントからの接続、条件により複数の処理の同時実行などにより、内部に定義された実行順序が異なる場合があります。

内部に定義された実行順序が異なる? それはどんな時でしょう? 1 受注 2 受注確定 3 4 Aメーカー Bメーカー 在庫 問合せ 在庫 結果 在庫 結果 受注確定 3 4

シーケンシャル・ワークフローで 使えるアクティビティ クラス 説明 CallExternalMethodActivity ローカル サービスでのメソッドの呼び出しに使用されるワークフロー通信アクティビティを定義します。このアクティビティは、ローカル サービスでワークフローからホストにデータを送信するために使用されます。 CodeActivity ここにワークフロー内で実行するロジックを記述します。 CompensatableSequenceActivity SequenceActivity アクティビティの補正可能バージョンを定義します。このクラスは継承できません。 CompensatableTransactionScopeActivity TransactionScopeActivity アクティビティの補正可能バージョンを定義します。このクラスは継承できません。 ConditionedActivityGroup 制約に基づく実行コンテキストの定義を子アクティビティのセットに提供します。 DelayActivity タイマを設置し、非同期的にタイマの期限切れを待機するロジックを提供します。このクラスは継承できません。 EventDrivenActivity 実行がイベントによって初期化される Activity をラップします。このクラスは継承できません。これは、イベントの処理に使用される CompositeActivity です。通常、イベントは、遅延タイマの期限切れに応答してホストまたはランタイムによって発生させることができます。EventDrivenActivity は、SequenceActivity から継承されるので、これは、最初のアクティビティを IEventActivity にする必要があるという追加の制約が加えられたシーケンスです。 EventHandlingScopeActivity 子アクティビティの実行と共にイベント処理を有効にします。このクラスは継承できません。 FaultHandlerActivity FaultType プロパティで指定された型の Exception を操作するアクティビティ クラスを表します。このクラスは継承できません。 出典:Microsoft社 MSDNライブラリ

シーケンシャル・ワークフローで 使えるアクティビティ クラス 説明 HandleExternalEventActivity ローカル サービスによって発生するイベントの処理に使用されるワークフロー通信アクティビティを定義します。 IfElseActivity 条件に従って、IfElseBranchActivity 型の 2 つ以上のアクティビティの中から 1 つのアクティビティを実行します。このクラスは継承できません。 InvokeWebServiceActivity プロキシ クラスを介して Web サービスを呼び出し、指定されたとおりにパラメータの引き渡しと受け取りを行います。このクラスは継承できません。 InvokeWorkflowActivity ワークフローを非同期的に実行します。このクラスは継承できません。 ListenActivity アクティビティを続行する前に発生する可能性があるイベントのいずれかを待機するようワークフローを設定します。このクラスは継承できません。 ParallelActivity 一連の子アクティビティを同時に実行します。このクラスは継承できません。 PolicyActivity 1 つのステップまたはアクティビティとしてワークフローの実行の一部で実行される Rule クラスのインスタンスのコレクションを表します。 ReplicatorActivity 子アクティビティの複数のインスタンスを実行します。 SequenceActivity 1 つの定義済み順序に従って、子アクティビティを実行します。 SynchronizationScopeActivity ワークフローのうち、共有変数へのアクセスを制御する必要がある範囲を表します。SynchronizationScopeActivity の複数のインスタンスが同じ変数にアクセスする場合、それぞれのアクティビティが同時にアクセスすることなく、順序立てて実行されます。このクラスは継承できません。 出典:Microsoft社 MSDNライブラリ

シーケンシャル・ワークフローで 使えるアクティビティ クラス 説明 TerminateActivity 異常状況が発生したとき、実行中のワークフロー インスタンスを終了します。このクラスは継承できません。 ThrowActivity 例外をスローする動作をモデル化します。このクラスは継承できません。 TransactionScopeActivity ワークフローのうち、トランザクションとして一括処理する範囲。この Activity の実行が始まると新しい Transaction が起動され、Activity を正常に閉じるとトランザクションはコミットされます。このクラスは継承できません。 WebServiceFaultActivity ワークフローから Web サービス クライアントへのエラーの送信を有効にします。このクラスは継承できません。 WebServiceInputActivity ワークフローで Web サービスからのデータを受信できるようにします。このクラスは継承できません。 WebServiceOutputActivity ワークフロー内部から Web サービスにデータを送信できるようにします。このクラスは継承できません。 WhileActivity 特定の条件が true である限り、1 つの子アクティビティを繰り返し実行します。 出典:Microsoft社 MSDNライブラリ

ステートマシン・ワークフロー ステートマシン・ワークフローは、一連の状態、遷移、および動作で構成されます。 1つの状態を開始状態とし、その後は、イベントや動作により、別の状態へと遷移していきます。(ただし、必ず別の状態へ遷移する必要は有りません) また、ステートマシン・ワークフローには、ワークフローの終わりを特定する最終状態を指定できます。

単純なステートマシン・ワークフロー 最も単純なステートマシン・ワークスロー Create Start Execute Activities Complete Receive Message Idle 出典:Microsoft社 MSDNライブラリ

持続性のあるステートマシン・ワークフロー 持続性のあるステートマシン・ワークフロー Create Start Execute Activities Complete Load Idle Receive Message Persist UnLoadイベントが呼ばれるとこのワークフローがメモリ内から退避することが出来る Unload 出典:Microsoft社 MSDNライブラリ

ステートマシン・ワークフローで 使えるアクティビティ クラス 説明 CallExternalMethodActivity ローカル サービスでのメソッドの呼び出しに使用されるワークフロー通信アクティビティを定義します。このアクティビティは、ローカル サービスでワークフローからホストにデータを送信するために使用されます。 CompensateActivity ICompensatableActivity インターフェイスを実装する、処理が終了した子 Activity に対して、補正処理を起動します。このクラスは継承できません。 CodeActivity ここにワークフロー内で実行するロジックを記述します。 CompensatableSequenceActivity SequenceActivity アクティビティの補正可能バージョンを定義します。このクラスは継承できません。 CompensatableTransactionScopeActivity TransactionScopeActivity アクティビティの補正可能バージョンを定義します。このクラスは継承できません。 ConditionedActivityGroup 制約に基づく実行コンテキストの定義を子アクティビティのセットに提供します。 DelayActivity タイマを設置し、非同期的にタイマの期限切れを待機するロジックを提供します。このクラスは継承できません。 EventDrivenActivity 実行がイベントによって初期化される Activity をラップします。このクラスは継承できません。これは、イベントの処理に使用される CompositeActivity です。通常、イベントは、遅延タイマの期限切れに応答してホストまたはランタイムによって発生させることができます。EventDrivenActivity は、SequenceActivity から継承されるので、これは、最初のアクティビティを IEventActivity にする必要があるという追加の制約が加えられたシーケンスです。 EventHandlingScopeActivity 子アクティビティの実行と共にイベント処理を有効にします。このクラスは継承できません。 出典:Microsoft社 MSDNライブラリ

ステートマシン・ワークフローで 使えるアクティビティ クラス 説明 FaultHandlerActivity FaultType プロパティで指定された型の Exception を操作するアクティビティ クラスを表します。このクラスは継承できません。 HandleExternalEventActivity ローカル サービスによって発生するイベントの処理に使用されるワークフロー通信アクティビティを定義します。 IfElseActivity 条件に従って、IfElseBranchActivity 型の 2 つ以上のアクティビティの中から 1 つのアクティビティを実行します。このクラスは継承できません。 InvokeWebServiceActivity プロキシ クラスを介して Web サービスを呼び出し、指定されたとおりにパラメータの引き渡しと受け取りを行います。このクラスは継承できません。 InvokeWorkflowActivity ワークフローを非同期的に実行します。このクラスは継承できません。 ParallelActivity 一連の子アクティビティを同時に実行します。このクラスは継承できません。 PolicyActivity 1 つのステップまたはアクティビティとしてワークフローの実行の一部で実行される Rule クラスのインスタンスのコレクションを表します。 ReplicatorActivity 子アクティビティの複数のインスタンスを実行します。 SequenceActivity 1 つの定義済み順序に従って、子アクティビティを実行します。 SetStateActivity ステート マシン ワークフローの StateActivity への遷移を提供します。このクラスは継承できません。 出典:Microsoft社 MSDNライブラリ

ステートマシン・ワークフローで 使えるアクティビティ クラス 説明 StateActivity StateMachineWorkflowActivity の状態を表します。 StateFinalizationActivity ステート マシン ワークフローの別の状態に遷移する前に、格納されているアクティビティを実行するアクティビティを表します。このクラスは継承できません。 StateInitializationActivity StateActivity が実行を開始したときに実行されるアクティビティ グループのコンテナとして機能します。このクラスは継承できません。 SuspendActivity 実行中のワークフロー インスタンスを中断します。このクラスは継承できません。 SynchronizationScopeActivity ワークフローのうち、共有変数へのアクセスを制御する必要がある範囲を表します。SynchronizationScopeActivity の複数のインスタンスが同じ変数にアクセスする場合、それぞれのアクティビティが同時にアクセスすることなく、順序立てて実行されます。このクラスは継承できません。 TerminateActivity 異常状況が発生したとき、実行中のワークフロー インスタンスを終了します。このクラスは継承できません。 ThrowActivity 例外をスローする動作をモデル化します。このクラスは継承できません。 TransactionScopeActivity ワークフローのうち、トランザクションとして一括処理する範囲。この Activity の実行が始まると新しい Transaction が起動され、Activity を正常に閉じるとトランザクションはコミットされます。このクラスは継承できません。 WebServiceFaultActivity ワークフローから Web サービス クライアントへのエラーの送信を有効にします。このクラスは継承できません。 出典:Microsoft社 MSDNライブラリ

ステートマシン・ワークフローで 使えるアクティビティ クラス 説明 WebServiceInputActivity ワークフローで Web サービスからのデータを受信できるようにします。このクラスは継承できません。 WebServiceOutputActivity ワークフロー内部から Web サービスにデータを送信できるようにします。このクラスは継承できません。 WhileActivity 特定の条件が true である限り、1 つの子アクティビティを繰り返し実行します。 出典:Microsoft社 MSDNライブラリ

WFは.NET Framework 3.5で どう変わったのか しかし、この2つのアクティビティの追加は非常に大きな意味がります。

.NET Framework 3.5で 追加されたアクティビティ クラス 説明 ReceiveActivity Windows Communication Foundation (WCF) サービス コントラクトによって定義された操作を実装するサービス側アクティビティ。 SendActivity Windows Communication Foundation (WCF) サービス操作の同期呼び出しをモデル化するクライアント側アクティビティ。 出典:Microsoft社 MSDNライブラリ

ReceiveActivityとは WCF サービス コントラクトによって定義された操作を実装するサービス側アクティビティ。 ReceiveActivityが無かった.NET Framework 3.0の時代はWCFをラッピングしたカスタムアクティビティを作成し、ワークフローを作成する必要がありました。これには非常にコストがかかっていました。 しかし、WCFの作成手順は変わっていないので、そのコストは見込んでおいてください。

SendActivityとは WCFサービス操作の同期呼び出しをモデル化するクライアント側アクティビティ。 SendActivityが無かった.NET Framework 3.0の時代はWCFをラッピングしたカスタムアクティビティを作成し、ワークフローを作成する必要がありました。これには非常にコストがかかっていました。 しかし、WCFの作成手順は変わっていないので、そのコストは見込んでおいてください。

Tech Ed 2008 North Americaでの WFの扱いは 非常に注目されています。 WF+WCFは.NET ディベロッパーだけでなく、ITプロの方も関心が高いです。 なぜならば、 SharePoint Servicesにも搭載される。 BizTalk 2006 R3にも搭載される。 …など

是非試してみて下さい。 サンプルや資料が多く提供されています。 参考URL Windows Vista 技術資料一覧 http://www.microsoft.com/japan/msdn/windowsvista/techarts.aspx Windows Workflow Foundation と Windows Communication Foundation の統合 http://www.microsoft.com/japan/msdn/net/wf/bb266709.aspx Windows Workflow Foundation integration with Windows Communication Foundation http://msdn.microsoft.com/en-us/library/cc626077.aspx ワークフロー サービスと永続性サービスの作成 http://msdn.microsoft.com/ja-jp/library/bb412181.aspx Workflow Services Samples (WF) http://msdn.microsoft.com/en-us/library/bb943473.aspx Creating Workflow Services and Durable Services http://msdn.microsoft.com/en-us/library/bb412181.aspx