WF学习日记(一)

一、什么是WF

     WF:Windows Workflow Foundation的缩写,是微软为Windows平台开发工作流应用程序的一个模块、引擎和工具,它包括了Runtime Service (运行时服务)、 Runtime Engine (运行时引擎) 和 Base Activity Library(基础Activity 库)。(具体说明参考MSDNhttp://msdn.microsoft.com/zh-cn/library/ms734631.aspx

     Workflows是Activity的集合,是寄宿于宿主(进程)的应用,而Activity可以理解为一个类库,允许开发人员自行构建,其中的属性、事件供Workflows调用。

 

二、WF的Workflow模型

     1.Sequential 顺序模型:流程按照预先定义好的顺序执行。

     2.State Machine 状态机模型:以事件为驱动,使流程本身转换成不同的状态,而每个状态也有其转变范围和事件。

     两种模型可以各自独立运行,也可以互相包含。

 

三、创建一个简单的 Hello World 程序

     1.新建一个Workflow工程,选择 Sequential Workflow Console Application  顺序工作流控制台程序

     2.双击Workflow1.cs 可以看到一个类型UML的界面(仅仅是类似)

     3.从工具栏中拖一个CODE到 Drop Activities to create a Sequential Workflow (人家已经说的很清楚了)

     4.双击codeActivity1,可以发现生成了其执行事件,我们在其中自定义一个名叫Message的属性(一定要是属性,否则后面Workflow会找不到),在刚生成的事件中键入 Console.WriteLine(Message);

     5.在工程中找到Program.cs双击打开,这是个简单的控制台程序,我们对Workflow的调用就全在using(WorkflowRuntime workflowRuntime = new WorkflowRuntime()){....} 块中了。为了调用Workflow中我们刚定的Message属性,我们定义一个  Dictionary<string,object>myArgs = new Dictionary<string,object>();用来传值,string为属性名,object为值,此处就传入"Hello World"吧........

    6.编译运行

 

CODE:

 

            using(WorkflowRuntime workflowRuntime = new WorkflowRuntime())
            {
                AutoResetEvent waitHandle = new AutoResetEvent(false);
                workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) {waitHandle.Set();};
                workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e)
                {
                    Console.WriteLine(e.Exception.Message);
                    waitHandle.Set();
                };

                //WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WFSeqDemo.Workflow1));
                Dictionary<string,object>myArgs = new Dictionary<string,object>();
                myArgs.Add("Message", "Hello World");                
                WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WFSeqDemo.Workflow1), myArgs);
                instance.Start();

                waitHandle.WaitOne();

            }

 

转载于:https://www.cnblogs.com/gaohades/archive/2008/11/10/1330764.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值