工作流学习笔记(2)

本文介绍了使用Microsoft Visual Studio 2005搭建工作流开发环境的过程,并通过一个简单的Hello World示例展示了工作流的设计与实现。

上一次我们介绍了工作的定义及其应用范围.是我们对工作流有了一个初步的认识,有了上一次的的基础知识我们就可以开始工作流真正的学习了!<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

首先我们来介绍一下工作流的开发环境,当然我这里讲的开发环境都是微软平台上的(^-^)!应为我主要是再微软平台上做开发的,呵呵....好了,要创建我们的第一个工作流,我们需要安装部署一下我们的开发环境,首先我们需要安装以下环境:

1.Microsoft Visual Studio 2005

2.dotnet framwork 3.0.

3.Visual Studio 2005 Extensions for Windows Workflow Foundation (CHS).exe

安装完以上3个东东,我们的开发环境就是算是部署好了.哈哈....终于可以开发工作流了.是不是很兴奋呢!讲点话外题,微软的技术更新实在是太快了,2.0都还没怎么搞懂,3.0又来了,这不听说最近有出了vs2007了.诶....

本来说先讲一下工作流的机制问题的,算了还是先给个例子大家看了例子我们在来讨论机制的问题吧,我想这样可能方便大家理解些.

好了废话少说,现在就开始我们的工作流之旅吧!

第一步:打开我们的Microsoft Visual Studio 2005新建项目,我们会看见如下图的界面,这时我们会发现再Visual C#节点下面多了一个workflow

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

1.GIF
如图所示,我们可以看见工作流给出了6个模板,但是他们主要就是分作两类,顺序工作流和状态机2种,在这儿我们先不讨论什么是顺序工作流,什么是状态机.应为我想我在这儿给大家讲了,大家的理解也不会很深,等我们有了初步认识后,在回过头来看这个问题岂不是很简单么.(^-^)至少本人是这么认为的.

第2步:选择一个控制台程序HelloWordMyWorkflow点击确定:

2.GIF在我们的解决方案资源管理器,我们可以看见,vs2005已经给我们自动生成了2个.cs文件.其中一个是我们设计用的,另一个就是main函数所在,也就是工作流启动必备文件.

 

现在我们来看看微软为我们提供的内置的一些基本的工具,通过这些基本的工具组件,我们可以设计出功能非常强的工作流来,怎么样是不是很牛!!

这些控件都是些基本的,在网上到处都有介绍的,我先就不一一介绍了,我们还是通过例子来说话吧.

3.GIF
从工具栏种拽一个
Code到我们的设计区域上.我们的界面就部署好了,是不是很简单呢,

WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&t=6330432823272075824.GIF也许细心的朋友回发现,怎么控件右上方会有个红色的小叹号啊,不忙,我们这就解决它,让他消失,呵呵....

这个叹号其实是一个指示,他告诉我们,该控件必须要有一个与之绑定的代码段,我们双击后,就会自动生成一个代码段

private void codeActivity1_ExecuteCode_1(object sender, EventArgs e)

        {

          

        }

在其中就输入Console.WriteLine("hello word");,到此为止,我们的工作流就算完成了,不忙,为了能看见效果,我们还需要再一个地方添加点代码.双击我们program文件,我们会看见如下代码:

ContractedBlock.gifExpandedBlockStart.gifUsing directives#region Using directives
InBlock.gif
InBlock.gif 
InBlock.gif
InBlock.gif
using System;
InBlock.gif
InBlock.gif
using System.Collections.Generic;
InBlock.gif
InBlock.gif
using System.Text;
InBlock.gif
InBlock.gif
using System.Threading;
InBlock.gif
InBlock.gif
using System.Workflow.Runtime;
InBlock.gif
InBlock.gif
using System.Workflow.Runtime.Hosting;
InBlock.gif
InBlock.gif 
InBlock.gif
ExpandedBlockEnd.gif
#endregion

None.gif
None.gif 
None.gif
None.gif
namespace HelloWordMyWorkflow
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
InBlock.gif    
class Program
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        
static void Main(string[] args)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif
InBlock.gif            
using(WorkflowRuntime workflowRuntime = new WorkflowRuntime())
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif
InBlock.gif                AutoResetEvent waitHandle 
= new AutoResetEvent(false);
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif                workflowRuntime.WorkflowCompleted 
+= delegate(object sender, WorkflowCompletedEventArgs e) dot.gif{waitHandle.Set();};
InBlock.gif
InBlock.gif                workflowRuntime.WorkflowTerminated 
+= delegate(object sender, WorkflowTerminatedEventArgs e)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif
InBlock.gif                    Console.WriteLine(e.Exception.Message);
InBlock.gif
InBlock.gif                    waitHandle.Set();
InBlock.gif
ExpandedSubBlockEnd.gif                }
;
InBlock.gif
InBlock.gif 
InBlock.gif
InBlock.gif                WorkflowInstance instance 
= workflowRuntime.CreateWorkflow(typeof(HelloWordMyWorkflow.Workflow1));
InBlock.gif
InBlock.gif                instance.Start();
InBlock.gif
InBlock.gif 
InBlock.gif
InBlock.gif                waitHandle.WaitOne();
InBlock.gif
InBlock.gif               
InBlock.gif
InBlock.gif               
InBlock.gif
ExpandedSubBlockEnd.gif            }

InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedSubBlockEnd.gif    }

InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif

这儿就是我们的工作流的核心所在了,我们在waitHandle.WaitOne();后面添加以下2行代码就可以看见我们工作流的效果了.

Console.WriteLine("Press Any key to exit!!");

                Console.ReadLine();

这时点击debug运行我们的工作流就可以看见如下效果了:5.GIF

到此为止我们的第一个工作流就算大功告成了,怎么样是不是很简单啊!

这儿我只是给出一个简单的例子把大家带入工作流.

好了先写到这儿了!

转载于:https://www.cnblogs.com/kaiwind/archive/2007/06/27/kaiwind.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值