2009年1月17日 星期六

Step-By-Step教學(20):在流程中呼叫其它流程

本教學將介紹如何設計一個MyFlow1流程專案,與一個MyFlow2流程專案,在MyFlow1流程專案中,呼叫MyFlow2流程程式!

1.建立一個WF 循序工作流程專案,MyFlow1:
2.從Toolbox將Code拉到流程設計畫面:


3.選取畫面上CodeActivity1,設ExecuteCode屬性為SayHi,進入事件處理常式
4.加入以下程式碼到事件處理常式

1 private void SayHi(object sender, EventArgs e)

2 {

3 Console.WriteLine("Hello");

4 }


5.在方案中加入一個新MyFlow2循序工作流程專案,到目前方案

6.重複3,4步驟,但步驟四個程式改為

1 private void SayHi(object sender, EventArgs e)

2 {

3 Console.WriteLine("World");

4 }


7.從Sloution Explorer,MyFlow1專案,按鼠右鍵,選加入參考,從專案頁,選取MyFlow2,參考MyFlow2專案
8.Build Solution
9.在MyFlow1設計畫面中,從Toolbox將InvokeWorkFlow拉到流程設計畫面CodeActivity1下
10.設定invokeWorkFlowActivity1的TargetWorkFlow屬性,選取MyFlow2.Workflow1
12.畫面看起來為:
13.在方案中加入一個新MyConHost主控台應用程式專案到目前方案,當作裝載主程式
14.在MyConHost專案加入參考
15.在MyConHost專案加入MyFlow1參考
16.在MyConHost專案加入以下組件參考
17.在MyConHost專案Program.cs加入以下程式碼,啟動MyFlow1.Workflow1流程

1 using System;

2 using System.Collections.Generic;

3 using System.Linq;

4 using System.Text;

5 using System.Threading;

6 using System.Workflow.Runtime;

7 namespace MyConHost

8 {

9 class Program

10 {

11 private static AutoResetEvent waitHandle = new AutoResetEvent(false);

12 static WorkflowRuntime rt = null;

13 static WorkflowInstance inst = null;

14 static void Main(string[] args)

15 {

16 rt = new WorkflowRuntime();

17 rt.StartRuntime();

18 rt.WorkflowCompleted += new EventHandler<WorkflowCompletedEventArgs>(rt_WorkflowCompleted);

19 rt.WorkflowTerminated += new EventHandler<WorkflowTerminatedEventArgs>(rt_WorkflowTerminated);

20 inst = rt.CreateWorkflow(typeof(MyFlow1.Workflow1));

21 inst.Start();

22 waitHandle.WaitOne();

23 }

24 static void rt_WorkflowTerminated(object sender, WorkflowTerminatedEventArgs e)

25 {

26 Console.WriteLine("WorkflowTerminated" + e.Exception.Message);

27 waitHandle.Set();

28 }

29 static void rt_WorkflowCompleted(object sender, WorkflowCompletedEventArgs e)

30 {

31 Console.WriteLine("WorkflowCompleted");

32 waitHandle.Set();

33 }

34 }

35 }


18執行結果:


下載程式

2 則留言:

WizardWu 提到...

换一个角度再谈一下WF

http://www.cnblogs.com/foundation/archive/2009/02/12/1388929.html

最近有不少人对我说,听说NET 4.0中WF的变化很大,…………

NET 4.0中WF我没见过(以前装了个CTP,别人告述我其中的WF是旧的)

不过我猜想新的WF一定会在[状态控制]与[应用功能]两个方面增加功能.

在[状态控制]上,可能会添加对[流程图],[状态图],[时序图],[Petri网]等流程设计上的支持,就算4.0不提供,5.0,6.0,7.0总会提供的

在[应用功能]上,可能会添加大量的功能Activity,具体有什么就不好猜了,磁盘IO类,Windows服务管理类,SQlServer操作类,SharePoint操作类,篮牙通信类,都有可能

另外,我对WF还有一个假设

WF会退出[业务流程平台]的舞台,这里我指的退出是指不直接用WF开发[业务流程平台],而是

[WF] -> [业务流程SDK / 产品] -> [业务流程平台]

其实在WF推出后,我就猜想MS会将WF与其某款Server产品结合实现[业务流程SDK / 产品],

我当时猜想会是Exchange Server,没想到看走眼了,竟然是SharePoint .(这里我们先不提CRM与BizTalk)

SharePoint与WF结合的市场反映怎样我不加评论.反正我是不用!

我猜想在WF 4.0 后,MS会出一款直正的[业务流程SDK / 产品],可能是一个脱胎换骨的SharePoint,可能是Exchange,可能是一个全新的XXX

会不会是BizTalk呢,我觉得可能性不大,因为一个是后台算法Server,一个是前台业务Server,这样不是更好

米米貓學開發 提到...

稍為看了一下WF4我想WF結合WCF應該是未來的重點!

總瀏覽量