`
836811384
  • 浏览: 548081 次
文章分类
社区版块
存档分类
最新评论

WF 快速入门

 
阅读更多

WF(Windows Workflow Foundation ,中文译为:Windows工作流基础)是一种基于更高级抽象概念的编程语言,适合于实现业务流程。虽然可以通过使用图形化的工具(Workflow Designer)来创建WF程序,但是开发人员可以通过XAML(Extensible Application Markup Language,可扩展应用程序标记语言),以便充分利用WF所提供的各项功能。

工作流,大家都不陌生,在OA系统当中,就广泛应用了这个技术。出于战略的考虑,微软也在.NET Framework当中集成了这一技术,但是相比较其它的系统(比如K2),WF还是比较弱一点,但是这丝毫不影响我们学习工作流技术。而且它可以与WCF等技术无缝的结合起来,开发基于分布式应用服务的工作流应用系统。可以想见,未来工作流系统开发必定会火,不仅仅应用在审批流程等方面,可以广泛的应用在各种业务系统当中。

我们先上一个hello world的示例。

在VS2012中默认集成安装了Workflow模块,点击进去可以看到:


我们选择工作流控制台应用程序。

创建好项目后,我们看到,默认为我们打开了workflow.xaml文件,并且提示我们在此处放置活动。

而在左侧的工具箱,列出了所有和工作流相关的工具。比如:控制流、流程图、基元等等。

好,我们演示一下最简单的工作流程序。

首先我们从左侧的工具箱中拖动流程图中的Flowchart(流程图)到workflow.xaml文件的在此处放置活动区域中,会显示一个start节点。

然后继续拖动流程图中的FlowDecision(选择,true or false)到start节点下面区域。再拖动两个Flowchart分别放在FlowDecision的左右两边。

最后放一个基元中的WriteLine(输出)在最下面。并把鼠标放在各自的组件上,找到连接线把这些组件连接起来,如图所示。


按照Flowchart的提示,双击以查看,我们分别进入两个Flowchart组件的内部流程。

拖动工具箱中的基元中的Assign到指定区域,并用连接线与start相连。

然后我们在xaml文件的下面会看到变量、参数、导入这3个选择。我们先在变量中,添加一个boolFlag变量,类型为Boolean,范围为当前的Flowchart,给个默认值为true。

我们再在参数里面添加一个num,方向为输入,参数类型为int,默认值为0。


变量和参数设置好之后,我们在FlowDecision下面的两个Flowchart当中,拖动Assign组件到相应位置,并设置变量boolFlag为true。


另外一个同样拖动一个Assign并设置boolFlag为false。

还有一步操作没完成,就是没有设置Decision的Condition(如果没设置编译不通过,会提示要设置这个Condition),我们右键Flowchart上面的Decision选择属性,然后在Condtion表达式里面设置:num>0。


最后我们在最后的WriteLine组件的Text中,键入:"boolFlag:"+boolFlag.ToString()+"\t num:"+num。目的是输出boolFlag(变量)和num(传入)的值。

OK,至此我们这个简单的流程就画好了。很简单,根据输入参数num的值的不同,会进入不同的分支,设置不同的boolFlag,进行各自的操作。

这时候程序就可以运行了。我们打开Program.cs文件,找到Main函数。将原来的代码修改为:

Workflow1 workflow1 = new Workflow1();
workflow1.num = new InArgument<int>() { Expression = 12 };//给个输入参数num的值,由于>0,按照预期boolFlag应该为true,num为12。
WorkflowInvoker.Invoke(workflow1);
直接运行,效果图:

当然了,上面我们借助了WF图形化的设计界面进行工作流的开发,也可以直接写代码的方式进行调用。

比如,一个最简单的hello workflow的WF程序。

        static void Main(string[] args)
        {
            Activity activity = new Sequence
            {
                Activities =
                {
                    new WriteLine
                    {
                        Text = "hello,workflow."
                    }
                }
            };

            WorkflowInvoker.Invoke(activity);
        }
直接在Main函数中写入上面的代码(注意这是一个WF应用程序,否则就是添加相应的dll),就可以在控制台得到"hello,workflow."的结果。



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics