1、安装Windows Workflow Foundation

      目前微软发布的最新版本为:Visual Studio 2005 Extensions for Windows Workflow Foundation Beta 1.2.exe

      微软的WebCast课堂讲师说要先安装 WWF,然后安装 VS2005,才能够正常使用Workflow Foundation,如果流程相反,VS 2005将不能够创建项目。我也遇到了这个问题,但还好,只是无法创建WorkflowProject,因为新建项目中根本就没有WWF项目,其他的项目还能够正常使用,经查找,是WWFProject Templates以及 Item Templates没有被注册到VS 2005中。

解决方法

找到Workflow 模版所在位置:

D:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\CSharp\Workflow\1033

D:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplates\CSharp\1033

打开VS 2005 工具菜单中的选项,如下图:

 


将用户模版的位置指定到
Workflow模版的目录上,新建,可以看到Workflow项目了。

 

 

2、Simple Sequential Workflow

成功安装WWF后,在其帮助文档中,我们可以找到 Windows Workflow Foundation Simples,这里面是微软为开发者提供的Simples,几乎涵盖了WWF中的各种技术的应用,就连微软WebCast讲师所使用的DEMO也是源于这里。

先从简单的学起:Sequential Workflow

 


这是一个只采用了一个
IfElse Activity的工作流,很简单只有一个选择路径。

很可惜这个例子中的设计代码和程序代码并没有分离。

运行Workflow:

看看Workflow是怎样启动的

        static AutoResetEvent waitHandle = new AutoResetEvent(false); //控制线程用

        static void Main(string[] args)

        {

            //首先建立一个WorkflowRuntime 对象

            WorkflowRuntime workflowRuntime = new WorkflowRuntime();

            Console.WriteLine("Runtime Started.");

            //获取这个事例中workflow的类型type

            Type type = typeof(SimpleSequentialWorkflow);

            // 添加一个事件,当workflow运行后执行

            workflowRuntime.WorkflowCompleted += new EventHandler<WorkflowCompletedEventArgs>(OnWorkflowCompleted);

            // 启动这个workflow

            workflowRuntime.StartWorkflow(type);

            Console.WriteLine("Workflow Started.");

            // 停止这个线程,直至WorkflowCompleted时,启动

            waitHandle.WaitOne();

            Console.WriteLine("Program Complete.");

        }

        static void OnWorkflowCompleted(object sender, WorkflowCompletedEventArgs instance)

        {

            MessageBox.Show("workflowRuntime Complete.");

            waitHandle.Set();

        }

 

IfElse Activity 一个非常重要的属性Condition,这个属性确定了if else 最后返回的结果是什么。

 

3Simple State Machine

Sequential Workflow 是按照某种顺序的流程进行工作的,State Machine 则是根据每个Activity 的状态决定是否执行下一个Activty。如,审批流程中,如果Activity的状态值为011代表同意,0代表不同意,如果是1执行下一个Activity,如果是0返回。

 

这个事例中有3State Activity,对一个state machine workflow 而言必须有一个InitialState CompletedState,以表明行为从哪里开始,到哪里结束。对State Activity而言,执行具体的行为,需要在该对象中,添加Event Driven对象,用于驱动这个状态行为,双击EventDriven对象进入到一个状态行为的具体设计流程中,如下图

 

对于一个状态行为内部流程,我们可以象执行Sequential流程那样定义,最后用Set State对象结尾,Set State 对象的TargetState属性用于表明,由该状态行为中跳出,跳转到TargetState指定的对象。

 

posted on 2006-05-08 15:12 安徒生的童话 阅读(1986) 评论(4)  编辑 收藏 网摘
评论
  •       
    Posted @ 2006-05-08 15:55
    1.2.exe:应是Beta2.2了吧。
    在c#下,安装完后会有一系列的模板吧。我也正在学习   回复  引用  查看    
  • #2楼 
    oo [未注册用户]
    Posted @ 2006-05-08 15:57
    是不是要2003操作系统啊   回复  引用    
  • #3楼 
    quark [未注册用户]
    Posted @ 2006-06-06 18:07
    大家好,我也刚开始学习WFF,申请了一个QQ群,希望作者和其他的朋友加入:
    21218704

    大家共同学习,交流   回复  引用    
  • #4楼 
    菜鸟[匿名] [未注册用户]
    Posted @ 2007-01-05 15:48
    学了微软的工作流半个月了,还没又找到一点头绪,不知如何下手,不知何时能够作出一条完整流程出来,任务不知怎样产生,执行人如何挂接,微软的工作流到底行不行阿,还有时序的如何暂停,状态机到底是个什么动动,状态机能不能并发输出阿.....   回复  引用    




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索
[推荐职位]上海盛大网络招聘.Net开发工程师

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接:
 

统计